Ubuntu下 git 服务器的搭建。 html
前几天老师分配了一个任务 就是配置git服务器,来管理项目,搞弄了好几天,在网上搜教程 搜案例的 可是写的都很笼统,有的写的很好 可是按照他们说的作又会出现各类各样的问题。今天我抽空把我配置git服务器的详细过程记录下来,但愿能帮助到你们。 python
搭建git服务器的4个步骤 git
1 配置服务器前的准备工做 github
首先ubuntu系统要联网 安装了git,openssh-server和openssh-client软件,并检测是否开启。 web
rpm -qa | grep -i git (查看是否安装git) ubuntu
sudo apt-get install git 服务器
sudo apt-get install openssh-server ssh
sudo apt-get install openssh-client socket
2 添加git 用户 post
新加用户git,该用户将做为全部代码仓库和用户权限的管理者:
geiao@ubuntu :~$ sudo useradd -m git
geiao@ubuntu :~$ sudo passwd git
创建一个git仓库的存储点,而且设置权限使除了git之外的用户对此目录无任何访问权限。
geiao@ubuntu :~$ sudo mkdir /home/pro_j
(创建个目录,做为存储点。)
geiao@ubuntu :~$ sudo chown git:git /home/pro_j
(把pro_j的权限给 git)
geiao@ubuntu :~$ sudo chmod 755 /home/pro_j (将文件pro_j设置为 rwxr_xr_x 除了git之外的用户对此目录无任何访问权限)
3 安装配置gitosis
初始化服务器的git用户 能够用cat ~/.gitconfig 查看
geiao@ubuntu :~$ git config --global user.name "your name"
geiao@ubuntu :~$ git config --global user.email your email
geiao@ubuntu :~$ cat ~/.gitconfig
[user] name = zhang mingjie
email = Jghost@yeah.net
安装一下python的setuptool,也是为gitosis作准备:
geiao@ubuntu :~$ sudo apt-get install python-setuptools
得到gitosis包:
geiao@ubuntu :~$ mkdir osis
geiao@ubuntu :~$ cd osis
geiao@ubuntu :~/osis$ git clone git://eagain.net/gitosis.git
注意:执行上步骤会出错
Cloning into gitosis...
eagain.net[0: 208.78.102.120]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
可以使用:git clone https://github.com/res0nat0r/gitosis.git代替
geiao@ubuntu :~/osis$ cd gitosis
geiao@ubuntu :~/osis/gitosis$ sudo python setup.py install 默认状态下,gitosis会将git仓库放在git用户home下的repositories中,因此要作个连接: geiao@ubuntu :~/osis/gitosis$ su git
$ ln -s /home/pro_j /home/git/repositories
$ exit
成为管理员:不管是否是本机均可以经过生成ssh公钥的方法成为管理员
geiao@ubuntu :~$ ssh-keygen -t rsa 生成的密钥能够经过在~/.ssh 文件中找到。
在服务器上建管理员:
geiao@ubuntu :~/osis/gitosis$ sudo chmod a+r ~/.ssh/id_rsa.pub
[sudo] password for geiao:
让gitosis运行起来:
geiao@ubuntu :~/osis/gitosis$ sudo -H -u git gitosis-init< ~/.ssh/id_rsa.pub
Initialized empty Git repository in /home/pro_j/gitosis-admin.git/
Reinitialized existing Git repository in /home/pro_j/gitosis-admin.git/
若是在另外的一台机子上建管理员,必须把那台机子的公钥(更名)拷到服务器上 而后修改上面划线操做的地址就好了。
Gitosis 经过一个git仓库管理配置文件,仓库就放在/home/pro_j/gitosis-admin.git。所以要为一个文件加上可执行权限:
geiao@ubuntu :/home/git$ sudo passwd root
geiao@ubuntu :/home/git$ su
root@ubuntu :/home/git# cd repositories
root@ubuntu :/home/git/repositories# cd gitosis-admin.git
root@ubuntu :/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/pro_j/gitosis-admin.git/hooks/post-update root@ubuntu :/home/git/repositories/gitosis-admin.git# exit
4 管理gitosis的配置文件
gitosis自己的配置也是经过git来实现的。在你本身的开发机里,把gitosis-admin.git这个仓库clone下来,就能够以管理员的身份修改配置了。
geiao@ubuntu :~$ cd osis
geiao@ubuntu :~/osis$ mkdir pro
geiao@ubuntu :~/osis$ cd pro
geiao@ubuntu :~/osis/pro$ git clone git@服务器ip:gitosis-admin.git
geiao@ubuntu :~/osis/pro$ cd gitosis-admin
geiao@ubuntu :~/osis/pro/gitosis-admin$ ls
gitosis.conf keydir
gitosis.conf文件和keydir文件夹
gitosi.conf文件主要的做用是管理员能够编写其余人的权限,能够编写对gitosis-admin的成员,也能够编写对仓库的权限 :writable和 readonly . 这里设置权限 能够创建group设置。
keydir 文件夹是存放其余人公钥的地方。并且必须注意 谁的公钥谁的名字的要求来存放。
geiao@ubuntu :~/osis/pro/gitosis-admin/keydir$ ls geiao@ubuntu.pub jghost.pub 不然在会出现:
ERROR:gitosis.serve.main:Repository read access denied
配置好后必定要作的操做事提交gitosis-admin的 改动,并commit 而后 git push 一下; 并且你不须要在服务器上建好一个空仓库,再导入项目。 Gitosis会在你建好项目推送到服务器上时自动建立。 而后就能够创建个项目 如proj.git(这点比较重要)
geiao@ubuntu :~/osis/pro$ mkdir proj
geiao@ubuntu :~/osis/pro$ cd proj
geiao@ubuntu :~/osis/pro/proj$ git init
Initialized empty Git repository in /home/geiao/osis/pro/proj/.git/
geiao@ubuntu :~/osis/pro/proj$ touch README
geiao@ubuntu :~/osis/pro/proj$ git add README
geiao@ubuntu :~/osis/pro/proj$ git commit -a -m "add readme"
geiao@ubuntu :~/osis/pro/proj$ git remote add origin git@10.10.4.229:proj.git
geiao@ubuntu :~/osis/pro/proj$ git push origin master
到此, 在ubuntu上创建git服务器基本上完成。
至于gitweb 感兴趣的 能够参考这篇文章。
http://www.cnblogs.com/xl19862005/archive/2011/06/28/2092464.html
谢谢你们。