git 服务器的搭建

来源:互联网 发布:华为交换telnet的端口 编辑:程序博客网 时间:2024/05/06 20:56

转载自:

http://bdxnote.blog.163.com/blog/static/844423520124137333373/


STEP1、创建git账号用于管理git服务器:   useradd -s /bin/bash -d /home/git -G root -m -c "Manager for git server" -p git git   其中,-p:指定账户git的密码;        -m:强制创建git账户的home目录;        -d:指定git账号的home目录;        -s:指定git账号的登录shell;        -G:指定git账户所属的用户组;        -c:指定git账号的描述;STEP2、升级系统:   sudo apt-get update   sudo apt-get upgradeSTEP3、安装git相关的组件:   sudo apt-get install git-core openssh-server openssh-clientSTEP4、安装gitosisSTEP4-1:初始化一下git服务器所管理的账户(提交代码时的账号);      git@zxk:~$ git config --global user.name "zxk"      git@zxk:~$ git config --global user.email "zxk@163.com"STEP4-2:安装python的setup tool,为安装gitosis做准备;      git@zxk:~$ sudo apt-get install python-setuptoolsSTEP4-3:获取gitosis安装包;      git@zxk:~$ mkdir ~/.gitosis_setop      git@zxk:~$ cd ~/.gitosis_setop/

    git@zxk:~/.gitosis_setop$ git clone git://eagain.net/gitosis.git      如果这个不行:      Cloning into 'gitosis'...      fatal: unable to connect to eagain.net:      eagain.net[0: 208.78.102.120]: errno=Connection refused      则可从如下位置clone gitosis包:      git clone https://github.com/res0nat0r/gitosis.git      Cloning into 'gitosis'...      remote: Counting objects: 727, done.      remote: Compressing objects: 100% (216/216), done.      remote: Total 727 (delta 510), reused 701 (delta 495)      Receiving objects: 100% (727/727), 111.73 KiB | 44 KiB/s, done.      Resolving deltas: 100% (510/510), done.STEP4-4:安装gitosis包;      git@zxk:~/.gitosis_setop$ cd gitosis/      git@zxk:~/.gitosis_setop/gitosis$ sudo python setup.py install      若报错,可通过如下命令解决:      git@zxk:wget http://peak.telecommunity.com/dist/ez_setup.py      git@zxk:python ez_setup.pySTEP4-5:生成ssh公钥,并上传到git服务器上,或直接使用git账户在git服务器上生成;现在采用使用git账户直接在git服务器上生成;      git@zxk:~$ ssh-keygen -t rsa      Generating public/private rsa key pair.      Enter file in which to save the key (/home/git/.ssh/id_rsa):       Created directory '/home/git/.ssh'.      Enter passphrase (empty for no passphrase):       Enter same passphrase again: 

Your identification has been saved in /home/git/.ssh/id_rsa.      Your public key has been saved in /home/git/.ssh/id_rsa.pub.      The key fingerprint is:      34:34:76:a3:72:3f:05:46:d3:e1:72:62:68:e6:fa:63 git@zxk      The key's randomart image is:      +--[ RSA 2048]----+      |        +.B...   |      |       o * =.    |      |      . O + +    |      |       B + =     |      |        S o      |      |       .   .     |      |      .          |      |       .E        |      |       ...       |      +-----------------+STEP4-6:初始化gitosis;      git@zxk:~$ sudo -H -u git gitosis-init < ~/.ssh/id_rsa      Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/      Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/      gitosid默认会会把git仓库放在git账号的home目录下;
STEP4-7:配置gitosis,以控制git客户端的操作;      git@zxk:~$ git clone git@192.168.0.251:repositories/gitosis-admin.git      git@zxk:~$ cd gitosis-admin/      git@zxk:~/gitosis-admin$ vi gitosis.conf       [gitosis]      loglevel = DEBUG      [group gitosis-admin]                 #gitosis-admin为git组名;      witeable = gitosis-admin              #gitosis-admin为仓库名;      members = git@zxk root@zxk zxk@zxk      #下面两个group配置实现把仓库teamwork的只读权限分配给git组team;      #同时,把仓库teamwork的可写权限分配给git组team_ro;      [group team]                          #team为git组名;      writable = teamwork                   #teamwork为仓库名;      members = a@svr b      [group team_ro]                       #team_ro为git组名;      readonly = teamwork                   #teamwork为仓库名;跟上面的team组里面的仓库名teamwork是同一个仓库;      members = lz      #例子:      [group top1]      writable = /repo/top1      member = git@zxk zxk@zxk root@zxk      #gitosis的group配置语法:      [group git组名]

gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/git/repositories/gitosis-admin.git;我们需要为一个文件加上可执行权限: git@zxk:~$ pwd /home/git git@zxk:~$ chmod 755 repositories/gitosis-admin.git/hooks/post-update

writable = 仓库名      members = user1@server user2 ......      [group git组名]      readonly = 仓库名      members = user1@server user2 ......      git@zxk:~/gitosis-admin$ vi gitosis.conf       git@zxk:~/gitosis-admin$ git add -A      git@zxk:~/gitosis-admin$ git commit -m "init gitosis-admin config gitosis.conf"      [master 2691646] init gitosis-admin config gitosis.conf      1 file changed, 4 insertions(+)      git@zxk:~/gitosis-admin$ git push origin master      git@192.168.0.251's password:       Counting objects: 5, done.      Delta compression using up to 2 threads.      Compressing objects: 100% (3/3), done.      Writing objects: 100% (3/3), 374 bytes, done.      Total 3 (delta 0), reused 0 (delta 0)      To git@192.168.0.251:repositories/gitosis-admin.git      3970fa2..2691646  master -> masterSTEP4-8:创建一个仓库的存储位置,并初始化;      git@zxk:~$ mkdir -p /repo/top1      git@zxk:~$ cd /repo/top1/      git@zxk:/repo/top1$ git init --bare      #在当前项目仓库中配置访问该仓库的用户信息:      git@zxk:/repo/top1$ git config --add user.name "zxk"

 git@zxk:/repo/top1$ git config --add user.email "zxk@163.com"      git@zxk:/repo/top1$ git config --add user.name "bliss"      git@zxk:/repo/top1$ git config --add user.email "bliss@163.com"      git@zxk:/repo/top1$ git config --add user.name "dummy"      git@zxk:/repo/top1$ git config --add user.email "dummy@163.com"      这些信息被添加在当前项目仓库的.git/config文件的[user]段中了;      如果git config命令加上--global选项,那些这些用户信息就会被添加到~/.gitconfig文件的[user]段中;      如:      git@zxk:/repo/top1$ git config --global --add user.name "zhangsan"      git@zxk:/repo/top1$ git config --global  --add user.email "zhangsan@163.com"      如果git config命令加上--file选项,那些这些用户信息就会被添加到--file所指定的文件的[user]段中;STEP4-9:在客户端直接clone该仓库就可以了;      git clone zxk@192.168.0.251:/repo/top1 test      然后初始化第一个版本的数据并提交;


原创粉丝点击