设为首页 收藏本站
查看: 1282|回复: 0

[经验分享] ubuntu 16.04 下搭建git服务器(gitosis+git

[复制链接]

尚未签到

发表于 2018-4-29 07:42:00 | 显示全部楼层 |阅读模式
  近期公司为了方便管理项目,要搭建一个git服务器集中管理项目数据。通过请教同事,并在虚拟机上多次尝试终于搭建成功,特意将搭建过程分享给跟我一样的小白。
  环境:
  服务器端: git-server   192.168.92.128
  客户端:   git-client   192.168.92.129
  服务器端:
  
      1、首先安装git 与 openssh  (openssh 安装过的,这步可以只安装git就行)
      sinovo@git-server:~$ sudo apt-get install git-core openssh-server openssh-client
DSC0000.jpg

  2、进入root权限,打开/etc/sudoers,将sinovo用户加入到sudo权限中,他是gitosis的管理员

      sinovo@git-server:~$ sudo vim /etc/sudoers
DSC0001.jpg

   3、生成一个秘钥ssh-rsa-key
       sinovo@git-server:~$ ssh-keygen -t rsa
          一路回车即可,不要输任何内容

DSC0002.jpg ls

  查看生成的key
          结尾的 sinovo@git-server 是sinovo 在gitosis中的管理员身份
          sinovo@git-server:~$ ls .ssh
          sinovo@git-server:~$ cat .ssh/id_rsa.pub
DSC0003.jpg

  注意: .ssh/id_rsa_gitosis.pub文件内容结尾的签名:”sinovo@git-server”,这将是sinovo在gitosis中的管理员身份
   4、下载并安装gitosis工具

          以sinovo身份执行以下操作:

          sinovo@git-server:~$ sudo apt-get install python python-setuptools
DSC0004.jpg

  sinovo@git-server:~$ git clone https://github.com/tv42/gitosis.git
DSC0005.jpg

  sinovo@git-server:~$ cd gitosis/
          sinovo@git-server:~/gitosis$ sudo python setup.py install
DSC0006.jpg

  

     5、创建git用户,用git用户身份访问其管理的所有git工程

          sinovo@git-server:~$ sudo useradd -m git
          sinovo@git-server:~$ sudo passwd git
DSC0007.jpg

   gitosis默认所有git工程都放在/home/git/repositories/下。为防止gitosis崩溃的影响,将/home/gitpot作为所有git工程的根目录,今后删除git用户时不会波及这些工程。
          sinovo@git-server:~$ sudo mkdir /home/gitpot
        sinovo@git-server:~$ sudo chown git.git -R /home/gitpot/
        sinovo@git-server:~$ ls /home/ -l

           DSC0008.jpg
   然后以git身份,建立/home/git/repositories为指向/home/gitpot的超级链接。
          sinovo@git-server:~$ su - git
        git@git-server:~$ git config --global user.name "Gitadmin"
        git@git-server:~$ git config --global user.email gitadmin@sinovo-tech.com
        git@git-server:~$ ls -al
        git@git-server:~$ ln -s /home/gitpot ./repositories
        git@git-server:~$ ls -al

DSC0009.jpg

    6、创建gitosis管理工程   

          以sinovo 身份执行以下命令:

DSC00010.jpg

   如果是centos6.6的话 用这个路径 sudo -H -u git /usr/bin/gitosis-init < ./gadmin\@128.pub
          以上如果没有报错就是OK了

         下载gitosis-admin.git工程,验证sinovo作为管理员,可以访问这个“管理所有git工程”的git工程
DSC00011.jpg

   如果以上创建完成后没有问题,可以通过keydir文件与 gitosis.conf查看用户名及秘钥文件
DSC00012.jpg

  客户端
  7、重复第 1 步和第 3 步,将生成的文件上传至服务器共享文件夹 keys 下
  

  

  服务器
    8、添加客户端git-client上的用户pdf,并新增一个test-git.git工程。
           首先将keys目录下的秘钥拷贝到gitosis-admin下,然后查看客户端的秘钥

           DSC00013.jpg
  将上传的秘钥拷贝到 keydir文件夹下并创新命名为 key文件结尾的 pdf@git-client,然后将上传的秘钥删除,只保留keydir下的         
DSC00014.jpg

  编辑 gitosis.conf 将 pdf@git-client 添加进入gitosis管理组或新建一个测试组
          sinovo@git-server:~/gitosis-admin$ sudo vim gitosis.conf
DSC00015.jpg

  查看是否有更改

          sinovo@git-server:~/gitosis-admin$ git status
          我们可以看到 红色部分的文件是我们做过更改动作的

DSC00016.jpg

  提交更改
          sinovo@git-server:~/gitosis-admin$ git add gitosis.conf
          sinovo@git-server:~/gitosis-admin$ git add keydir/pdf@git-client.pub
          sinovo@git-server:~/gitosis-admin$ git commit -m &quot;Add test-git project.&quot;
DSC00017.jpg

  

     sinovo将本地的修改提交到远端:

          sinovo@git-server:~/gitosis-admin$ git remote -v

          sinovo@git-server:~/gitosis-admin$ git branch -a
          sinovo@git-server:~/gitosis-admin$ git log
          sinovo@git-server:~/gitosis-admin$ git push origin master
DSC00018.jpg

  以git身份创建一个空的test-git.git仓库

DSC00019.jpg

   /home/gitpot目录下保存的都将是原始仓库(—bare)
  

  客户端
         验证其他新增用户的访问权限

         pdf@git-client:~$ git clone git@192.168.92.128:test-git.git
           DSC00020.jpg
         最后将新用户合并至远端,合并没有问题则验证通过  
         pdf@git-client:~$ cd test-git/
         pdf@git-client:~/test-git$ echo &quot;Hello World! It's pdf comment.&quot; >hello.txt
         pdf@git-client:~/test-git$ git add hello.txt
         pdf@git-client:~/test-git$ git commit -m &quot;Add hello.txt.&quot;
         pdf@git-client:~/test-git$ git status
         pdf@git-client:~/test-git$ git log
         pdf@git-client:~/test-git$ git branch
         pdf@git-client:~/test-git$ git remote -v
         pdf@git-client:~/test-git$ git push origin master   
         DSC00021.jpg
         下面以gadmin身份验证修改和创建新分支的权限
          sinovo@git-server:~$ git clone git@192.168.92.128:test-git.git
           DSC00022.jpg
  
  sinovo@git-server:~/test-git$ echo &quot;Welcome! I'm gadmin.&quot; >> hello.txt
         sinovo@git-server:~/test-git$ cat hello.txt
         sinovo@git-server:~/test-git$ git add hello.txt
         sinovo@git-server:~/test-git$ git commit -m &quot;Add a comment into hello.txt.&quot;
         sinovo@git-server:~/test-git$ git log   
       sinovo@git-server:~/test-git$ git remote -v

         sinovo@git-server:~/test-git$ git branch -a
         sinovo@git-server:~/test-git$ git push origin master
           DSC00023.jpg
  sinovo@git-server:~/test-git$ git checkout -b test1
         sinovo@git-server:~/test-git$ echo &quot;You can checkout new branch and merge into remote.&quot; >README
         sinovo@git-server:~/test-git$ git add README
         sinovo@git-server:~/test-git$ git commit -m &quot;Add README.&quot;
         sinovo@git-server:~/test-git$ git branch -a
         sinovo@git-server:~/test-git$ git log
         sinovo@git-server:~/test-git$ git push origin test1:refs/heads/test1
         DSC00024.jpg
  

  服务器端

      安装并配置git-daemon
      git-daemon可以提供给局域网内任何人只读访问的权限。/home/git/repositoies/下所有git工程可任意下载。
    Ubuntu16.04不再使用git-daemon-run,启用的是git-daemon-sysvinit。

      安装git-daemon-sysvinit

      sinovo@git-server:~/test-git$ sudo apt-get install git-daemon-sysvini
      DSC00025.jpg
      修改git-daemon配置,将监听的根目录指向/home/gitpot。
      sinovo@git-server:~/test-git$ sudo vim /etc/default/git-daemon
      DSC00026.jpg
      重启git-daemon服务,查看其监听的端口(9418)状态,证明服务已经正常运行
      sinovo@git-server:~$ sudo service git-daemon restart
      sinovo@git-server:~$ sudo service git-daemon status
      DSC00027.jpg
      sinovo@git-server:~$ sudo lsof -i:9418
      DSC00028.jpg
      在客户端以未注册的用户身份(root)下载git工程。使用的是git访问
      DSC00029.jpg

  

  服务器端

      安装配置gitweb
      安装apache

      sinovo@git-server:~$ sudo apt-get install apache2
      打开浏览器输入192.168.92.128,出现以下页面表示安装成功

      DSC00030.jpg
     安装gitweb

      sinovo@git-server:~$ sudo apt-get install libcgi-pm-perl gitweb

       建立超链接,使访问192.168.92.128/gitweb ,由gitweb.cgi响应
       sinovo@git-server:~$ sudo ln -s /usr/share/gitweb /var/www/html/gitweb
      DSC00031.jpg
      将gitweb访问的git工程根目录指向/home/gitpot

      sinovo@git-server:~$ sudo vim /etc/gitweb.conf
      DSC00032.jpg
      修改apache的80端口网页配置,使访问192.168.92.128/gitweb 并启用gitweb.cgi
      sinovo@git-server:~$ sudo vim /etc/apache2/sites-available/000-default.conf
      进入编辑页面后在最后面追加以下内容,保存退出。然后重启apache就OK了

       DSC00033.jpg
      sinovo@git-server:~$ sudo a2enmod cgid
      sinovo@git-server:~$ sudo /etc/init.d/apache2 restart
      DSC00034.jpg

  最后验证网页是否有效
      浏览器输入:192.168. 92.128/gitweb
DSC00035.jpg

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-453333-1-1.html 上篇帖子: ubuntu下安装docker方法大全 下篇帖子: Ubuntu系统编译安装ffmpeg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表