ubuntu 16.04 下搭建git服务器(gitosis+git-daemon+gitweb)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu 16.04 下搭建git服务器(gitosis+git-daemon+gitweb)相关的知识,希望对你有一定的参考价值。
近期公司为了方便管理项目,要搭建一个git服务器集中管理项目数据。通过请教同事,并在虚拟机上多次尝试终于搭建成功,特意将搭建过程分享给跟我一样的小白。
环境:
服务器端: git-server 192.168.92.128
客户端: git-client 192.168.92.129
服务器端:
1、首先安装git 与 openssh (openssh 安装过的,这步可以只安装git就行)
[email protected]:~$ sudo apt-get install git-core openssh-server openssh-client
2、进入root权限,打开/etc/sudoers,将sinovo用户加入到sudo权限中,他是gitosis的管理员
[email protected]:~$ sudo vim /etc/sudoers
3、生成一个秘钥ssh-rsa-key
[email protected]:~$ ssh-keygen -t rsa
一路回车即可,不要输任何内容
ls
查看生成的key
结尾的 [email protected] 是sinovo 在gitosis中的管理员身份
[email protected]:~$ ls .ssh
[email protected]:~$ cat .ssh/id_rsa.pub
注意: .ssh/id_rsa_gitosis.pub文件内容结尾的签名:”[email protected]”,这将是sinovo在gitosis中的管理员身份
4、下载并安装gitosis工具
以sinovo身份执行以下操作:
[email protected]:~$ sudo apt-get install python python-setuptools
[email protected]:~$ git clone https://github.com/tv42/gitosis.git
[email protected]:~$ cd gitosis/
[email protected]:~/gitosis$ sudo python setup.py install
5、创建git用户,用git用户身份访问其管理的所有git工程
[email protected]:~$ sudo useradd -m git
[email protected]:~$ sudo passwd git
gitosis默认所有git工程都放在/home/git/repositories/下。为防止gitosis崩溃的影响,将/home/gitpot作为所有git工程的根目录,今后删除git用户时不会波及这些工程。
[email protected]:~$ sudo mkdir /home/gitpot
[email protected]:~$ sudo chown git.git -R /home/gitpot/
[email protected]:~$ ls /home/ -l
然后以git身份,建立/home/git/repositories为指向/home/gitpot的超级链接。
[email protected]:~$ su - git
[email protected]:~$ git config --global user.name "Gitadmin"
[email protected]:~$ git config --global user.email [email protected]
[email protected]:~$ ls -al
[email protected]:~$ ln -s /home/gitpot ./repositories
[email protected]:~$ ls -al
6、创建gitosis管理工程
以sinovo 身份执行以下命令:
如果是centos6.6的话 用这个路径 sudo -H -u git /usr/bin/gitosis-init < ./gadmin\@128.pub
以上如果没有报错就是OK了
下载gitosis-admin.git工程,验证sinovo作为管理员,可以访问这个“管理所有git工程”的git工程
如果以上创建完成后没有问题,可以通过keydir文件与 gitosis.conf查看用户名及秘钥文件
客户端
7、重复第 1 步和第 3 步,将生成的文件上传至服务器共享文件夹 keys 下
服务器
8、添加客户端git-client上的用户pdf,并新增一个test-git.git工程。
首先将keys目录下的秘钥拷贝到gitosis-admin下,然后查看客户端的秘钥
将上传的秘钥拷贝到 keydir文件夹下并创新命名为 key文件结尾的 [email protected],然后将上传的秘钥删除,只保留keydir下的
编辑 gitosis.conf 将 [email protected] 添加进入gitosis管理组或新建一个测试组
[email protected]:~/gitosis-admin$ sudo vim gitosis.conf
查看是否有更改
[email protected]:~/gitosis-admin$ git status
我们可以看到 红色部分的文件是我们做过更改动作的
提交更改
[email protected]:~/gitosis-admin$ git add gitosis.conf
[email protected]:~/gitosis-admin$ git add keydir/[email protected]
[email protected]:~/gitosis-admin$ git commit -m "Add test-git project."
sinovo将本地的修改提交到远端:
[email protected]:~/gitosis-admin$ git remote -v
[email protected]:~/gitosis-admin$ git branch -a
[email protected]:~/gitosis-admin$ git log
[email protected]:~/gitosis-admin$ git push origin master
以git身份创建一个空的test-git.git仓库
/home/gitpot目录下保存的都将是原始仓库(—bare)
客户端
验证其他新增用户的访问权限
[email protected]:~$ git clone [email protected]:test-git.git
最后将新用户合并至远端,合并没有问题则验证通过
[email protected]:~$ cd test-git/
[email protected]:~/test-git$ echo "Hello World! It's pdf comment." >hello.txt
[email protected]:~/test-git$ git add hello.txt
[email protected]:~/test-git$ git commit -m "Add hello.txt."
[email protected]:~/test-git$ git status
[email protected]:~/test-git$ git log
[email protected]:~/test-git$ git branch
[email protected]:~/test-git$ git remote -v
[email protected]:~/test-git$ git push origin master
下面以gadmin身份验证修改和创建新分支的权限
[email protected]:~$ git clone [email protected]:test-git.git
[email protected]:~/test-git$ echo "Welcome! I'm gadmin." >> hello.txt
[email protected]:~/test-git$ cat hello.txt
[email protected]:~/test-git$ git add hello.txt
[email protected]:~/test-git$ git commit -m "Add a comment into hello.txt."
[email protected]:~/test-git$ git log
[email protected]:~/test-git$ git remote -v
[email protected]:~/test-git$ git branch -a
[email protected]:~/test-git$ git push origin master
[email protected]:~/test-git$ git checkout -b test1
[email protected]:~/test-git$ echo "You can checkout new branch and merge into remote." >README
[email protected]:~/test-git$ git add README
[email protected]:~/test-git$ git commit -m "Add README."
[email protected]:~/test-git$ git branch -a
[email protected]:~/test-git$ git log
[email protected]:~/test-git$ git push origin test1:refs/heads/test1
服务器端
安装并配置git-daemon
git-daemon可以提供给局域网内任何人只读访问的权限。/home/git/repositoies/下所有git工程可任意下载。
Ubuntu16.04不再使用git-daemon-run,启用的是git-daemon-sysvinit。
安装git-daemon-sysvinit
[email protected]:~/test-git$ sudo apt-get install git-daemon-sysvini
修改git-daemon配置,将监听的根目录指向/home/gitpot。
[email protected]:~/test-git$ sudo vim /etc/default/git-daemon
重启git-daemon服务,查看其监听的端口(9418)状态,证明服务已经正常运行
[email protected]:~$ sudo service git-daemon restart
[email protected]:~$ sudo service git-daemon status
[email protected]:~$ sudo lsof -i:9418
在客户端以未注册的用户身份(root)下载git工程。使用的是git访问
服务器端
安装配置gitweb
安装apache
[email protected]:~$ sudo apt-get install apache2
打开浏览器输入192.168.92.128,出现以下页面表示安装成功
安装gitweb
[email protected]:~$ sudo apt-get install libcgi-pm-perl gitweb
建立超链接,使访问192.168.92.128/gitweb ,由gitweb.cgi响应
si[email protected]:~$ sudo ln -s /usr/share/gitweb /var/www/html/gitweb
将gitweb访问的git工程根目录指向/home/gitpot
[email protected]:~$ sudo vim /etc/gitweb.conf
修改apache的80端口网页配置,使访问192.168.92.128/gitweb 并启用gitweb.cgi
[email protected]:~$ sudo vim /etc/apache2/sites-available/000-default.conf
进入编辑页面后在最后面追加以下内容,保存退出。然后重启apache就OK了
[email protected]:~$ sudo a2enmod cgid
[email protected]:~$ sudo /etc/init.d/apache2 restart
最后验证网页是否有效
浏览器输入:192.168. 92.128/gitweb
以上是关于ubuntu 16.04 下搭建git服务器(gitosis+git-daemon+gitweb)的主要内容,如果未能解决你的问题,请参考以下文章