详解在Linux下搭建Git服务器

众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的。

搭建环境:

服务器 CentOS6.6 + git(version 1.8.3.1)

客户端 Windows10 + git(version 2.11.1.windows.1)

1. 安装Git相关软件

Linux是服务器端系统,Windows作为客户端系统,分别安装Git

安装服务端:

[root@linuxprobe ~]# yum install -y git
[root@localhost ~]# git --version   //安装完后,查看 Git 版本
git version 1.8.3.1

安装客户端:

下载 Git for Windows,地址:https://git-for-windows.github.io/

安装完之后,可以使用Git Bash作为命令行客户端。

$ git --version
git version 2.11.1.windows.1    //安装完之后,查看Git版本

安装Gitosis

[root@linuxprobe ~]# cd software/
[root@linuxprobe software]# git clone https://github.com/res0nat0r/gitosis.git
[root@linuxprobe software]# yum install python-setuptools -y
[root@linuxprobe software]# cd gitosis
[root@linuxprobe gitosis]# sudo python setup.py install

出现下面的信息表示安装成功了

 Using /usr/lib/python2.6/site-packages
 Finished processing dependencies for gitosis==0.2

2. 服务器端创建git用户来管理Git服务

[root@linuxprobe ~]# id git   //查看git用户是否存在
id: git: no such user
[root@linuxprobe ~]# useradd git
[root@linuxprobe ~]# echo "123" | passwd --stdin git
[root@linuxprobe ~]# su - git  //切换到git用户下

3. 配置公钥

在Windows上配置管理者,git服务器需要一些管理者,通过上传开发者机器的公钥到服务器,添加成为git服务器的管理者,打开git命令行

$ ssh-keygen -t rsa   //一直回车,不需要设置密码
~ scp ~/.ssh/id_rsa.pub git@192.168.34.184:~  //复制到git服务器上

4. 配置gitosis

使用git用户并初始化gitosis

[root@linuxprobe ~]# cd .ssh
[root@linuxprobe ~]# gitosis-init < ./id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
[root@linuxprobe ~]# chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update   //添加权限

在Windows上机器上clone gitosis-admin到管理者主机

$ git clone ssh://git@192.168.34.184:22/gitosis-admin.git
$ cd gitosis-admin
$ ls
$ gitosis.conf keydir

gitosis.conf: git服务器配置文件

keydir: 存放客户端公钥

配置gitosis.conf文件

$ vim gitosis.conf
[gitosis]

[group gitosis-admin]      #组名称
members = yueyong@SHA2-001    #组成员
writable = gitosis-admin     #项目名称

[group test]        //这里添加了"test"项目组,上传到个git服务器
members = yueyong@SHA2-001
writable = test

在Windows管理者机器上创建本地test仓库,并上传到git服务端

$ git config --global user.name "Your Name"     //第一次提交需要设置个人信息,设置用户名和邮箱
$ git config --global user.email "email@example.com"
$ cd ~/repo
$ mkdir test
$ git init
$ tocuh readme.txt

提交到远程服务器

$ git add .
$ git commit -a -m 'init test'
$ git remote add repo git@192.168.186.129:test.git  //repo 远程库的名称,可以换成任意名称
$ git push repo master  //上传本地所有分支代码到远程对应的分支上

服务端会自动创建test仓库

[git@repositories]# pwd
/home/git/repositories
[git@linuxprobe repositories]$ ls
gitosis-admin.git test.git

5.添加其他git用户开发者

由于公司开发团队人数不断增多,手动添加开发者私钥到/home/git/.ssh/authorized_keys比较麻烦,通过上面的Windows机器的管理者统一收集其他开发者的私钥id_rsa.pub文件,然后传到服务器上,配置好后,用户即获得项目权限,可以从远程仓库拉取和推送项目,达到共同开发项目。

$ cd ~/gitosis-admin/keydir
$ mv ~/id_rsa.pub zhangsan@SHA2-002.pub     //修改公钥为主机名.pub
$ vim gitosis.conf
 [group test]
 writable = test
 members = yueyong@SHA2-001 zhangsan@SHA2-002  //添加成员
$ git add .
$ git commit -m "add zhangsan@SHA2-002 pub and update gitosis.conf"
$ git push repo master

推送完成后,新加进来的开发者就可以进行项目的开发了,后续增加人员可以这样添加进来,开发者直接把仓库clone下来就可以了。

git clone git@192.168.34.184:/home/git/repositories/test.git

报错问题:ERROR:gitosis serve main repository read access denied

根据这个报错,可以看出key是没问题的,通过排查,发现不应该把这个/home/git/repositories/test.git写全,git clone git@192.168.34.184:test.git

这样就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Git 教程之服务器搭建详解

    Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 接下来我们

  • 详解在CentOS下搭建自己的Git服务器

    首先需要装好CentOS系统,作为测试,你可以选择装在虚拟机上,这样比较方便.这步默认你会,就不讲了. 有了CentOS,那么如何搭建Git服务器呢? 1.首先需要安装Git,可以使用yum源在线安装: [root@localhost Desktop]# yum install -y git 2.创建一个git用户,用来运行git服务 # adduser git 3.初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库 [root@localhost

  • 使用git代替FTP部署代码到服务器的例子

    本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和scp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题 1.全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量 2.多台服务器的重复上传 3.代码更新后,后续的一些操作不够自动化 上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shell脚本, 有没有更简单更高效的方法呢?有,那就是使用版本版本管理工具的hook! 这里我说是版本管理工具而不是g

  • 一键备份gitolite服务器的Shell脚本

    运行一次就能够把gitolite服务器上的仓库备份到本地. 第一次运行会创建远程仓库的本地镜像, 以后每次运行会把本地镜像更新. 本程序只支持 ssh方式 其他的git server貌似不会在 ssh git@xxx 的时候返回repo列表, 所以只能手动备份. #!/bin/sh server=serv_addr root_dir=`pwd` echo "whill back in dir: ${root_dir}" ssh "git@${server}" | a

  • 在DigitalOcean的服务器上部署flaskblog应用

    在DigitalOcean上部署了flaskblog,项目虽小,部署中也学到了很多东西. 操作系统选择的是Ubuntu14.04,原因就是平时自己主要使用这个版本,顺手而已,所以你自己可以根据需要选择合适的linux版本. 部署方案: Virtualenv+Gunicorn+Nginx+Supervisor 从这里下载项目的代码flaskblog, 工程中带有简单的配置文件参考. 可以先访问flaskblog看一下. 注意 本文中使用Ubuntu14.04 64位主机, 创建一个名为xin的用户

  • 阿里云Linux-CentOS系统下-搭建Git服务器详解

     阿里云Linux-CentOS系统下-搭建Git服务器 步骤总结: 1. 安装git 首先确认服务器是否安装Git 在Xshell中输入命令:$ rpm -qa git 结果如下表示已经安装: 如果未安装就安装git 在Xshell中输入:$ yum install git 2. 创建一个git用户,用来运行git服务: 在Xshell中输入:$ sudo adduser git 此时在阿里云服务器的根目录:/home文件夹下新增一个文件夹git 按这个层级建立文件用于存放客户端用户的公钥:/

  • 在Linux下搭建Git服务器的方法详解

    前言 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 我打算自己搭建git服务器.虽然目前已经有很不错的git工具,如github,coding.net等,但是为了安全,减少限制和开销,还是放在自己的服务器为好.下面给出安装配置的过程,有问题欢迎讨论和交流,我会及时回复的. 第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不

  • Git 删除远程服务器文件同时保留本地文件实例详解

    Git 如何删除远程服务器文件同时保留本地文件 在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的.git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下 git rm --cached filename/-r directory git commit "xxxx" git push 1.删除服务器文件,本地保留 git rm --cached useless.log git com

  • 在Linux下搭建Git服务器步骤

    环境: 服务器 CentOS6.6 + git(version 1.7.1) 客户端 Windows10 + git(version 2.8.4.windows.1)  ① 安装 Git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 服务器端: #yum install -y git 安装完后,查看 Git 版本 [root@localhost ~]# git --version git version 1.7.1 客户端: 下载 Git for Windows

  • 详解在Linux下搭建Git服务器

    众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的. 搭建环境: 服务器 CentOS6.6 + git(version 1.8.3.1) 客户端 Windows10 + git(version 2.11.1.windows.1) 1. 安装Git相关软件 Linux是服务器端系统,Windows作为客户端系统,分别安装G

  • 详解在Ubuntu下搭建FTP服务器

    后台一直提示wordperss版本和插件有更新,看着碍眼,决定把它们全都更新.不过更新文件需要服务器提供FTP服务,linode也没有提供到FTP,只能自己装一个了.我装的服务器系统是Ubuntu 12.04 LTS,FTP软件当然是选择大名鼎鼎的vsftpd(very secure FTP daemon), 用系统自带的FTP还好Ubuntu装vsftpd还是很简单,一句命令就行: sudo apt-get install vsftpd 命令执行过程中,安装程序会给本地创建一个名为"ftp&q

  • Linux下搭建SFTP服务器的命令详解

    1.创建用户并设置密码 useradd -s /bin/false sftpuser passwd sftpuser # 若需要多个sftp用户 新建sftp的用户组: groupadd sftp useradd -g sftp -m sftpuser1 useradd -g sftp -m sftpuser2 passwd sftpuser1 passwd sftpuser2 usermod -g sftp sftpuser 2.配置ssh和权限 首先关闭SElinux vim /etc/sy

  • Linux下搭建ftp服务器

    使用RH 系Linux,Debian系请酌情参照 安装ftp所需包 安装ftp包 yum -y install ftp 安装vsftpd包 yum -y install vsftpd 注:配置文件路径   /etc/vsftpd/ 创建ftp用户,并付赋权 创建普通用户(我这里用户名为huoher) useradd huoher 设置该用户只能使用ftp而不能通过ssh或其他协议登录进来 usermod -s /sbin/nologin huoher 由于用户是ftp的,不是正常的登录用户,修改

  • Linux下搭建HTTP服务器完成图片显示功能

    目录 1. 前言 2. HTTP协议介绍 3. HTTP的消息结构 4. HTTP交互流程 5. 案例代码: 搭建HTTP服务器 6. 最终运行的效果 1. 前言 作为Linux下socket(TCP)网络编程的练习,使用C语言代码搭建一个简单的HTTP服务器,完成与浏览器之间的交互,最终在浏览器上显示一张图片. 2. HTTP协议介绍 HTTP协议本身是基于TCP通信协议来传递数据(HTML 文件, 图片文件-也叫超文本传输协议),HTTP协议必须工作在客户端-服务端架构上(本身底层就是TCP

  • 详解Linux下搭建VPN服务器(CentOS、pptp)

    本文介绍在安装CentOS操作系统的Xen VPS上,如何搭建PPTP VPN服务.包括PPTP的安装.配置,以及相应的iptables规则.本文暂时不涉及PPTP流量控制的部分,等抽空学明白了FreeRADIUS,再来写续篇.2011年7月20日更新:在安全建议这一部分,增加了使用不同的IP地址,分别提供VPN服务和Web等其他常规服务,以及使用不同IP地址时如何书写iptables规则的内容. 写在前面 在Godaddy一美元COM域名的怂恿下,这几天先是拿到了这个gnailuy.com,然

随机推荐