linux搭建配置以及恢复git服务器

来源:互联网 发布:广告视频制作软件 编辑:程序博客网 时间:2024/05/21 16:58

准备工作linux电脑A(作为Server),电脑B(Client)

在电脑A上(linux Ubuntu10.10)

1 安装git,git-core

sudo apt-get install gitsudo apt-get install git-core


CentOS 6.5 64bits

sudo yum install git

sudo yum install git-core


2 下载gitosis (gitosis是用来迅速搭建git server的软件包,详细的介绍可以访问https://github.com/res0nat0r/gitosis)

可以在~下新建目录叫src

mkdir srccd ~/srcgit clone git://github.com/res0nat0r/gitosis.git
注意:github中和其他网站转载的文章用到的 git clone git://eagain.net/gitosis无法访问!


3 安装gitosis

cd ~/src/gitosissudo python setup.py install
注意:如果报错:ImportError:No module named Setuptools 说明python的安装包缺少setuptools包。

解决方法1:

sudo apt-get install python-setuptools

解决方法2:

(1)安装python的安装工具pip

sudo apt-get install python-pip
(2) 安装setuptools

sudo pip install setuptools
有时候会碰到权限受限的错误,此时最好用root执行安装。


4 新建特殊用户git

这个用户主要是用来管理git的仓库,名字默认为“git”,也可以用别的名字。但是最好不要用已经存在的用户名。

sudo adduser \--system \--shell /bin/sh \--gecos 'git version control' \--group \--disabled-password \--home /home/git \git
如果成功执行,则会提示

Adding system user 'git' (UID 114) ...

Adding new group 'git' (GID 123) ...

Adding new user 'git' (UID 114) with group 'git' ...

Creating home directory '/home/git' ...


CentOS (root)

useradd -m git


5 产生ssh key (电脑B)

因为gitosis主要通过ssh来实现用户访问,所以需要SSH key。

在电脑B上产生key只需要执行

ssh-keygen -t rsa
公共key会在$HOME/.ssh/id_rsa.pub


6 复制ssh 公共key到Server上(电脑A)

建议放到tmp目录下,这样可以避免权限限制带来的问题。

具体方法很多,这里不再复述。

例如,直接拷贝

scp ~/.ssh/id_rsa.pub git@computerA:/tmp 

7 电脑A:初始化git server

(1)导入pub key并且初始化gitosis

假设pub key在tmp目录中为id_rsa.pub

sudo -H -u git gitosis-init < /tmp/id_rsa.pub
会看到两行输出:

initilailized empty Git repository in /home/git/repositories/gitosis-admin.git/

Reinitillized existing Git repository in /home/git/repositories/gitossi-admin.git/


CentOSgitosis-init < /tmp/id_rsa.pub

(2) 修改一个文件的访问权限

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update


8 电脑B:同步gitosis-admin到B电脑开始管理git server

git clone git@computA:gitosis-admin.git
这样会在当前目录下fork一个gitosis-admin的目录。里面有一个配置文件gitosisi.conf和一个存放pub key的目录keydir。

注意:有时会碰到如下错误

ssh: connect to host 192.168.0.12 port 22: Connection refused
fatal: The remote end hung up unexpectedly

说明电脑A可能没有安装SSH server

sudo apt-get install openssh-server


9 建立新的库和授权用户

如果要新建库,编辑gitosisi.conf文件,添加

[gitosis][group gitosis-admin]writable = gitosis-adminmembers = user1@pc1 user2@pc2<span style="color:#663366;">[group project-a]writable = project-amembers = user1@pc2 user2@pc2</span>
其中user1@pc2是在keydir目录里的公共key的文件名(不包括pub扩展名)

这里为user1@pc2.pub

如果要添加新用户到project-a,则在members新增新用户的pub key文件名,如new user@somedomain

将newuser@somedomain.pub拷贝到keydir目录里,将改动的conf文件和新的key同时push到git server即可。


10 上传文件到库

这里有两个场景:

(1)全新的项目

(2)已有的git仓库恢复

过程差不多,但是对已有的git仓库而言,有几个问题需要注意。

比如有项目的文件夹为project-a

a.进入项目文件夹 

 cd project-a

b.初始化git本地仓库

 git init

c.建立本地与服务器关联 

 git remote add origin git@YOUR_GIT_SERVER_HOSTNAME:project-a.git

d.提交本地代码

 git push origin master:refs/heads/master

至此新的库和对应文件已经上传到server端,其他用户可以

git clone git@YOUR_GIT_SERVER_HOSTNAME:project-a.git
获得项目文件。


对于已有的git仓库恢复,指的是server端电脑A出问题,系统重做后,如何把电脑B的内容提交到电脑A,从而复原git server。

其实步骤都和上面一样,只是如果执行到10的d步骤时,会提示rsa的key不匹配,这里只需要将电脑B ~/.ssh/known_hosts文件里对应的旧rsa key删除即可。

比如以前的服务器的IP为192.168.0.12,你会在known_hosts文件里看到,如下

...113.116.44.123 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/h79FdQwU2xG7cWncZEzI5gxK1l6p3aoTwneW9snRyTQmAT3OQV5wPiiYrj/W9HyVi7sX0BeaBlGb71ipViOXMrflva3KbCBTx8KZ6vawaSxtIhRaWd+Xzd5Kg3A69IYpLHW/0BTMVh3B53zBbxb9QzFVwfqb3AITEQxd/z6wdxLyTfmxz5CCARUaAi8F7LZ8Q5zNyyAlY5oG92i0/eJ0RmqgyNpno/ZxfoBxkAFAyUtLRbBdsj1eoGynJS9IzqjyW7WTol6aWwmBemn6gZO6FecLgIKSiG4+TYebvTZqC3aBcNxrKTmFqvu80Qv1beZ6kVWjbBOmDBhOdz2Max37113.118.228.88 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/h79FdQwU2xG7cWncZEzI5gxK1l6p3aoTwneW9snRyTQmAT3OQV5wPiiYrj/W9HyVi7sX0BeaBlGb71ipViOXMrflva3KbCBTx8KZ6vawaSxtIhRaWd+Xzd5Kg3A69IYpLHW/0BTMVh3B53zBbxb9QzFVwfqb3AITEQxd/z6wdxLyTfmxz5CCARUaAi8F7LZ8Q5zNyyAlY5oG92i0/eJ0RmqgyNpno/ZxfoBxkAFAyUtLRbBdsj1eoGynJS9IzqjyW7WTol6aWwmBemn6gZO6FecLgIKSiG4+TYebvTZqC3aBcNxrKTmFqvu80Qv1beZ6kVWjbBOmDBhOdz2Max37<del>192.168.0.12 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs3guvL3wffuMXmEnghFIFzU9leD+n/U1K+U7IOBesHFtTJ0EEpDnusNwaXq/fqtHsA8FMVk7VyI5IzptCq57/Yi1Cpyrv1zUUC2YPSlMl6qMoPiP1QYMAQBPkiAmq6KJIRu14xpZQDu+hHH1b0g7R/Y0ZGaNGzdcsq5UEdMTzyLZZn+6BamzbsF71oLuEwMlI3vhe/wsn8XfuZbRQhae3lt3frhM79JqUcGoGN2FYOeqv3PpyW7k8uIsCAe2HhxprLbLwVOWh0l4gwR0lt8yOrUEoVnmZfOpwCfBpFTg1Wq2UDBddFdm/01P7eJM8millqo6AIATr7sYzDsIAYiql</del>...
将对应的key删除,保存退出。再执行push即可恢复。


11 结论

至此完成了git server的搭建,或者恢复工作。


原创粉丝点击