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

[经验分享] Git服务器的搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-12 09:39:46 | 显示全部楼层 |阅读模式
GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器。

前言 这里我用的系统是centos 6.5,

在服务器上的准备工作(服务器IP为10.0.2.8 ):


1、安装 openssh服务器与客户端工具
  • #  yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
  • #  wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz

  • #  tar zxvf git-2.7.4.tar.gz

  • #  cd git-2.7.4

  • #  make prefix=/usr/local/git all

  • #  make prefix=/usr/local/git install

  • #  ln -s /usr/local/git/bin/* /usr/bin/

  查看版本号:git --version
  git version 2.7.4
spacer.jpg

2、Git服务器打开RSA认证
然后就可以去Git服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:
1.RSAAuthentication yes     
2.PubkeyAuthentication yes     
3.AuthorizedKeysFile  .ssh/authorized_keys

3、配置 git服务器
创建git服务器管理用户
# adduser --system --shell /bin/sh --create-home --home-dir /home/git git  
# passwd git   
设置git仓库权限
# chown -R git:git /home/git
# chmod -R 755 /home/git

4、创建个人公钥和私钥(用于后面的git服务的管理员管理)
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥
$ ssh-keygen -t rsa     
默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥
$ ssh-keygen -t rsa -b 4096     
默认情况下,公钥和私钥会保存在~/.ssh目录下

5、切换到初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库
# su - git
$ mkdir /home/git/repositories
$ git init --bare  /home/git/repositories
  Initialized empty Git repository in /data/git/learngit.git/  
初始化全局设置
$ git config --global user.name "myname"   
$ git config --global user.email "myname@server"  

6、切换到root,获取并安装gitosis  
# yum install python-setuptools     
# cd /home/git
# git clone git://github.com/res0nat0r/gitosis.git  
# cd gitosis   
# python setup.py install  
显示Finished processing dependencies for gitosis==0.2即表示成功

# chown -R git:git /home/git/gitosis
# chmod 755 -R /home/git/gitosis

7、ssh设置
    #  su - git
进入~/.ssh目录并使用ssh-keygen生成公钥:
$ ssh-keygen -t rsa
一定记得,在客户机上生成公钥,上传到服务器,或者在服务器上生成,下载到客户机。
$ touch ~/.ssh/authorized_keys

收集公钥存放在.ssh/authorized_keys文件中,然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了。
注意不能忘记私钥的密码。默认会生成~/.ssh/id_rsa.pub公钥文件。
有了密钥以后便可初始化gitosis,使gitosis获得对Git的管理权限:

8、服务器上生成git用户,使用git用户并初始化gitosis
# su - git
$ gitosis-init < ~/.ssh/id_rsa.pub //将该公匙导入gitosis里,这时本机已经有了为git的管理权限了
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
初始化之后,会在/home/git/repositories创建gitosis-admin.git项目,可以通过维护这个项目来对gitosis进行配置。
$ chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  
至此,服务器端的gitosys配置就完成了。
为了git操作时不用输入密码,还要做以下配置
$ cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys //将root的公匙导入到git目录的 authorized_keys文件中  
$ chmod 600 /home/git/.ssh/authorized_keys  

9、管理gitosis配置
$ cd ~   
$ git clone git@hostname:/home/git/repositories/gitosis-admin.git
$ cd gitosis-admin/  
$ ls -al  
看到以下结果:
gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录。
$ more gitosis.conf  
    gitosis.conf 对应的内容
[gitosis]   
[group gitosis-admin]  
writable = gitosis-admin  
members = root@localhost.localdomain  

10、来这里git的服务已基本配置完毕,但要团队开发中用起来还要进以下配置:
   在成员机(ip=10.0.2.100)上生成自已的公匙,
# yum install openssh-server openssh-client  
# ssh-keygen -t rsa
$ scp ~/.ssh/id_rsa.pub root@10.0.2.8:~/gitosis-admin/keydir/tester.pub //将本机的公匙copy到gitosis的keydir中  
   再切换到git服务上(ip=10.0.2.8)
$ cd ~  
$ cd gitosis-admin  
$ cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git目录的authorized_keys文件中  
$ vi gitosis.conf  
   修改gitosis.conf
[gitosis]  
[group gitosis-admin]  
writable = gitosis-admin  
members = root@localhost.localdomain  
#加一个组myteam  
[group myteam]  
members = tester #这里的tester对上面公匙文件名  
writable = test_project #项目仓库名  
提交到版本库
$ git add keydir/tester.pub  
$ git commit -a -m "Allow tester write access to test_project"  
$ git push origin master

11、这时tester便有权限操作test_project仓库了,回到成员机(ip=10.0.2.100)上
# cd ~  
# mkdir test_project  
# cd test_project  
# echo "testing ">test.txt  
# git init //初始化本地版本  
# git remote add origin git@10.0.2.8:test_project.git //加到远程版本库中  
# git add .  
# git commit -a -m "哈哈哈,测试一下"   
# git push origin master  
换个目录看能否clone回来
# cd /tmp  
# git clone git@10.0.2.8:test_project.git //此时应该不会提示输入ssh密码的  

最后大功告成...



运维网声明 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-202930-1-1.html 上篇帖子: jenkins+gitlab+maven+tomcat持续集成环境安装配置 下篇帖子: Ubuntu 配置Github 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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