>  기사  >  php教程  >  CentOS_6.5安装git服务器+客户端

CentOS_6.5安装git服务器+客户端

WBOY
WBOY원래의
2016-06-07 11:40:141337검색

CentOS_6.5 64位系统,安装git服务器+客户端
================ git服务器安装 ====================<br> <br> CentOS安装Git服务器 Centos 6.4 + Git 1.8.2.2 + gitosis##<br> <br>     1.查看Linux系统服务器系统版本<br> <br>         cat /etc/redhat-release   # 查看系统版本<br>         <br>         CentOS release 6.4 (Final)<br>         <br>         ifconfig                 # 查看服务器的IP<br>         eth0      <br>               Link encap:Ethernet  HWaddr 00:23:8B:FA:78:92  <br>               inet addr:192.168.100.202  Bcast:192.168.100.255  Mask:255.255.255.0<br>               inet6 addr: fe80::223:8bff:fefa:7892/64 Scope:Link<br>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br>               RX packets:543645 errors:0 dropped:0 overruns:0 frame:0<br>               TX packets:157155 errors:0 dropped:0 overruns:0 carrier:0<br>               collisions:0 txqueuelen:1000<br>               RX bytes:383527379 (365.7 MiB)  TX bytes:13270106 (12.6 MiB)<br>               Interrupt:16<br> <br>     lo        Link encap:Local Loopback  <br>               inet addr:127.0.0.1  Mask:255.0.0.0<br>               inet6 addr: ::1/128 Scope:Host<br>               UP LOOPBACK RUNNING  MTU:16436  Metric:1<br>               RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br>               TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br>               collisions:0 txqueuelen:0<br>               RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)<br> <br> <br>     2.在服务器上安装git及做些操作<br> <br>      - 执行命令<br>     sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel<br> <br>      - 同时下载git-1.8.2.2.tar.gz文件,然后将其`mv` 到`/usr/local/src`目录。[git-1.8.2.2.tar.gz安装包下载地址][1]<br> <br> <br>     cd /usr/local/src<br>     sudo tar -zvxf git-1.8.2.2.tar.gz<br>     cd git-1.8.2.2<br> <br>     sudo make prefix=/usr/local/git all<br>     sudo make prefix=/usr/local/git install<br> <br> <br>      - 增加软连接<br>     <br>     sudo ln -s /usr/local/git/bin/* /usr/bin/<br> <br>     git --version  #如果能显示版本号,即表示成功`<br> <br>     <br> <br>     3.在服务器安装gitosis<br>     <br>     sudo yum install python python-setuptools<br> <br>     cd /usr/local/src<br> <br>     git clone git://github.com/res0nat0r/gitosis.git<br> <br>     cd gitosis<br> <br>     python setup.py install  <br> <br>     #显示Finished processing dependencies for gitosis==0.2即表示成功<br> <br> <br> ================ 上面是别人的列子 ====================<br> <br> <br> <br> 我们这里使用一台服务器当做git服务器和客户端,操作git饿时候需要切换到git用户<br> ================ git服务器端配置 ====================<br> <br> 服务器:安装git工具【root】/home<br>     yum install -y python python-setuptools git-core<br>     git clone git://github.com/res0nat0r/gitosis.git<br>     cd gitosis<br>     python setup.py install<br> <br>     这样提示表示安装成功:<br>         Using /usr/lib/python2.6/site-packages<br>         Finished processing dependencies for gitosis==0.2<br> <br> <br> 服务器:新建一个git用户并创建管理git:【root】/home<br>     useradd -m git<br>     su - git<br> <br> <br> 服务器:使用客户端ssh生成git管理【root切换git】/home<br>     ssh-keygen -t rsa<br>     scp ~/.ssh/id_rsa.pub root@服务器地址:/tmp/<br>         生成ssh:<br>             ssh-keygen -t rsa -C "devil@meila.com"<br> <br> <br> 客户端:使用客户端ssh生成git管理【git】/home<br>     gitosis-init <br>     这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)。<br> <br> <br> <br> 客户端:下面需要在开发机克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。/home/git/data(目录没有则手动创建)<br>     git clone git@112.124.14.126:gitosis-admin.git  //因为是同一台机器,所以可以用localhost<br> <br> <br> 客户端:为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。gitosis.conf的格式如下:<br>     [gitosis]<br> <br>     [group gitosis-admin]<br>     writable = gitosis-admin<br>     members = username #对应keydir下有一个 username.pub 公钥文件<br> <br> <br> 客户端:现在可以按照这个格式增加新的项目。<br>     [gitosis]<br>  <br>     [group gitosis-admin]<br>     writable = gitosis-admin<br>     members = username #对应keydir下有一个 username.pub 公钥文件<br>      <br>     [group XXX]<br>     writable = XXX<br>     members = user1 user2 ... #多个用户用空格分开<br> <br>     假如这里新增了一个新的XXX项目:<br>         同样用新用户的ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为user1.pub,更新gigosis-admin项目<br> <br> <br> 客户端:更新项目在CentOS机器上克隆的gitosis-admin项目下执行下面的命令<br>     git add .<br>     git commit -a -m "add newuser"<br>     git push<br> <br>     完成之后,服务器就已经做好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push之后会自动生成。<br> <br> <br> <br> 客户端:创建新建的项目目录并添加<br>     mkdir XXX<br>     cd XXX<br>     git init<br>     touch hello.txt  //创建一个空文件 才能提交成功<br>     git add hello.txt<br>     git commit -am '添加新项目'<br>     git remote add origin git@192.168.1.115:XXX.git<br>     git push origin master<br>     git push origin master  //执行两遍<br> <br> <br>     以上完成后看,XXX/.git/config文件里面是否有,如果没有增加或者执行命令<br>         [branch "master"]<br>             remote = origin<br>             merge = refs/heads/master<br> <br>          命令:(因此通过git config进行如下配置)<br>              git config branch.master.remote origin<br>             git config branch.master.merge refs/heads/master <br> <br> <br> <br> 个人电脑:克隆项目<br>     git clone git@192.168.1.115:XXX.git<br>     <br> <br> <br> 个人电脑提交代码后服务器同步更新:(添加自动更新)<br>     文件位置:home/git/repositories/ecshop.git/hooks/post-receive<br>     #自动更新提交的代码到仓库 start<br>     cd /home/git/data/ecshop/ #ecshop是服务器客户端管理项目位置<br>     unset GIT_DIR #cd解决后还是在hoot目录下<br>     git pull origin master<br>     #自动更新提交的代码到仓库 end<br>     <br>     说明:<br>         hook脚本执行了cd之后,继续执行git语句拉取的时候还是在hooks文件夹下,而不是cd的文件路径。<br>         上面主要是添加了unset GIT_DIR ,git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。<br> <br> <br> ======================== 常见问题 ===========================<br> <br> 首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755<br> 1. git操作需要输入密码<br> <br> 原因<br> 公密未找到<br> 解决<br> 上传id_pub.rsa到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略<br> 2. ERROR:gitosis.serve.main:Repository read access denied<br> <br> 原因<br> gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub<br> 解决<br> 使keydir的名称与gitosis中members所指的名称一致。<br> 改为members = foo 或 公密名称改为foo@bar.pub

AD:真正免费,域名+虚机+企业邮箱=0元

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.