Git服务器搭建和配置
参考博客:
1.http://blog.youkuaiyun.com/michaelhan3/article/details/51637271
2.http://blog.youkuaiyun.com/ice520301/article/details/6142503
3. http://blog.youkuaiyun.com/tommy_wxie/article/details/38779667
之前我们实验室的服务器主机由于boot空间不足,系统每次会被迫重启,重启后系统会优先选择最新的内核,但是最新的内核损坏了,所以每次重启后无法进入系统。我通过Recovery Mode进入系统,删除卸载内核都解决不了开机问题,于是修改开机启动项,结果系统彻底崩了。Git服务器也坏掉了,只能重装系统,然后重新搭建Git服务器并且配置属性。
注意:如果是第一次搭建,按照操作依次往下做就可以了;如果是服务器崩了,一定先备份Git服务器仓库的数据,然后重装系统重新搭建Git服务器。
一、git服务器搭建过程
搭建过程在终端中依次输入下面代码,每一行输入完回车执行完后再输入下一行。
1.安装配置git服务器
1)安装git和openssh:
sudo apt-getinstall git-core openssh-server openssh-client
2)添加用户git,该用户将作为所有代码仓库和用户权限的管理者
sudo useradd -mgit
sudo passwd git
3)建立一个git仓库的存储点:
sudo mkdir/home/git_repo
4)设置目录权限,让除了git以外的用户对此目录无任何权限:
sudo chowngit:git /home/git_repo
sudo chmod 700/home/git_repo
5)安装和配置gitosis
首先初始化服务器的git用户,为安装gitosis做准备。在任何一台机器上使用git,第一次必须要初始化一下:
git config--global user.name “myname”
git config--global user.email “myname@server“
6)安装python的setup tool, 因为gitosis的安装需要python的一工具。
sudo apt-get install python-setuptools
7)下载安装gitosis包:
cd /tmp
git clonehttps://github.com/res0nat0r/gitosis.git
cd gitosis
sudo pythonsetup.py install
8)切换到git用户,并且将git仓库的默认目录和我们自定义的目录链接起来。
因为默认状态下,gitosis会将git仓库放在 git用户的/home/git/repositories/目录下,所以我们用ln命令将其到我们创建的git仓库/home/git_repo目录下,然后返回默认用户。
su git
ln -s /home/git_repo /home/git/repositories
exit
9)重新打开一个终端,生成Git服务器端公钥
ssh-keygen -trsa
一路回车即可生成公钥,然后输入下面语句将公约保存到/tmp目录下:
scp /路径/.ssh/id_rsa /tmp
10)给公钥文件增加权限
在第一个终端中输入
sudo chmod a+r/tmp/id_rsa
11)运行gitosis
sudo -H -u gitgitosis-init < /tmp/id_rsa
当出现以下两句就说明已经成功,下面分别为这两句的英文和中文。
Initializedempty Git repository in /home/repo/gitosis-admin.git/
Reinitializedexisting Git repository in /home/repo/gitosis-admin.git/
初始化空的Git版本库于/home/git_repo/gitosis-admin.git/
重新初始化现存的Git版本库于/home/git_repo/gitosis-admin.git/
12)给管理文件增加执行权限
git服务器在/home/git_repo文件夹下面建立了一个存放仓库的文件夹,用来存放git的各种仓库,后缀是.git的文件夹都是git仓库。
gitosis实际上通过一个git仓库来管理配置文件,仓库就放在了/home/git_repo/gitosis- admin.git仓库中。我们需要为一个特定文件加上可执行权限:
cd /home/git
sudo passwd root
回车后设定root密码,需要输入两次,然后依次执行下列语句。
su
cd repositories
cdgitosis-admin.git/
sudo chmod 755 /home/git_repo/gitosis-admin.git/hooks/post-update
exit
13)管理gitosis的配置文件
在主文件夹目录下输入下面代码。
git clone git@IP:/home/git_repo/gitosis-admin.git
cd gitosis-admin/
进入gitosis-admin文件夹,我们看到有一个名为keydir的文件夹和一个名为gitosis.conf配置文件。Keydir文件夹存放所有需要访问git服务器的用户的ssh公钥。每个用户按照前面的办法(ssh-keygen -t rsa)生成ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字重命名,如Luhongliang.pub,Yangguang.pub等,然后拷贝到keydir文件夹中。
14)修改gitosis.conf文件
打开gitosis.conf文件,修改成员对仓库的访问权限,然后保存退出。
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members =Luhongliang
[group teamwork]
writable = teamwork
members = Luhongliang
[group test]
readonly = test
members =Luhongliang
其中,红色部分为仓库名。绿色部分表示成员对该仓库有读和写的权限,而蓝色部分表示成员对该仓库只有读权限,没有写权限。
15)将配置文件推送到远端
git add .
git commit -am"/*add teamwork teamwork and test.*/"
git push originmaster
以上15步做完后,Git服务器环境已经搭建好,并且配置好了访问属性。接着可以创建仓库了。
二、创建仓库
比如仓库名为test.git,过程如下:
1)创建远程仓库并且初始化
su git
cd/home/git_repo
mkdir test.git
cdtest.git
gitinit –bare
exit
2)创建本地仓库并且推送至远端仓库
cd
mkdirtest-ori
cd test-ori
git init
echo “/*Create a repository named test. */” > readme(红色部分随意写,跟操作相关)
git add .
git commit -am"initial version"
git remote addorigingit@IP:/home/git_repo/test.git
git push originmaster
到这个地方,Git服务器已经搭建好并且创建了仓库,现在可以本地对Git仓库做相应的操作了,如克隆、上传等。