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

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

WBOY
WBOYOriginal
2016-06-07 11:40:141336Durchsuche

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元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn