实战 Win 7下安装 Gitosis (Windows下的 git 服务器)

Gitosis 是一个使用SSH管理Git仓库的服务端工具,有意思的是,该软件用来添加用户和设定权限的界面不是网页,而是一个特殊的 Git 仓库。你只需要设定好某个项目,然后推送,Gitosis 就会随之改变服务器设定,酷!

        在Linux下的安装方法已经非常成熟,上网Google一下就有很多,而在Windows下的安装则花了我不少功夫,只要是有时候碰到问题无从入手,以下将整个安装过程详细记录下来。

总体分为如下几大步骤:

  • 下载安装Cygwin
  • 修改安装后相关目录的访问权限
  • 安装 ssh 守护进程服务
  • 在Windows防火墙内开放上述 ssh 服务需要的22端口
  • 安装配置python-setuptools
  • 安装配置Gitosis
  • 使用Gitosis

一)下载安装Cygwin

1)到http://www.cygwin.com/官方网站下载 Cygwin 的在线安装程序 setup.exe

2)以管理员身份运行setup.exe开始安装Cygwin

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

3)Cygwin安装过程截图

点击下一步继续

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

选择“Install from Internet”

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

设置Cygwin的安装路径Root Directory,选择“All Users(RECOMMENDED)”

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

设置Cygwin在线下载的数据包的保存路径Local Package Directory

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

选择“Direct Connection”

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

选择下载文件的镜像地址后点击下一步(选择不同的地址会影响下载速度)

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

开始下载相关数据包

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

如果是首次安装Cygwin,将会弹出如下界面,点击确定继续即可

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

选择默认并没有包含的相应包,包括:

  • devel 分类下的 git
  • net 分类下的 openssh
  • Python 分类下的 python(这里顺便记录一下python的版本号,后面会用到,如2.6)

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

点击下一步继续 

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

到了漫长的下载等待界面了 

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

点击完成后Cygwin就安装完毕了 

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

二)修改安装后相关目录的访问权限

进入“开始/所有程序/Cygwin/Cygwin Bash Shell”,右键以管理员身份运行“Cygwin Bash Shell”,在命令行中分别运行如下命令:

$ chmod +r /etc/passwd 
$ chmod u+w /etc/passwd
$ chmod +r /etc/group
$ chmod u+w /etc/group

运行的截图如下:

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

三)安装 ssh 守护进程服务

继续执行如下命令:

$ ssh-host-config

根据命令的提示分别回答:yes、yes、yes、ntsec tty、no、yes、[密码]、[重复密码],参考如下截图:

(注意图中圈住部分的回答)

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

至此ssh服务安装完毕!

打开Windows的命令行,运行“> net start sshd”启动ssh服务(也可以到Windows服务中启动)。

四)在Windows防火墙内开放上述 ssh 服务需要的22端口

进入“控制面板/系统与安全/Windows防火墙/高级设置(在左边栏)”,添加新的入站规则:

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

名称可以根据自己的喜好相应修改。

五)安装python setuptools

先设置python路径的访问权限,保证所有用户都可以访问:

$ chmod +r /lib/python2.6/ -R

2.6是所安装python的版本号,要对上你安装的版本号才行,我装的时候是2.6,如果忘记了,可以在Cygwin的命令终端输入“$ python -v”查看一下。

Python Package Index 主页下载对应版本的python setuptools,如2.6版对应要下载 setuptools-0.6c11-py2.6.egg

将setuptools-0.6c11-py2.6.egg复制到/home/your_user_name目录下(也可以按自己的需要复制到其它地方,注意下面的运行路径正确即可),然后在该目录的Cygwin终端下运行如下命令安装:

$ ./setuptools-0.6c11-py2.6.egg 
看到输出类似如下的信息就表示安装成功了:
Processing setuptools-0.6c11-py2.6.egg 
Copying setuptools-0.6c11-py2.6.egg to /usr/lib/python2.6/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.6 script to /usr/bin

Installed /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

六)安装配置Gitosis

1) 运行如下命令将Gitosis管理端的git仓库下载下来:

$ mkdir sources 
$ cd sources
$ git clone git://eagain.net/gitosis.git

2) 下载成功后再运行如下命令进行初始化:

$ cd gitosis  
$ python setup.py install

这将会输出一大堆的信息,如果没有出现问题,最后那一行输出的信息类似于“Finished processing dependencies for gitosis==0.2”。

3) 到“控制面板/用户帐户和家庭安全”添加一个账户名称为“git”的帐号,密码自定,类型选标准用户即可。

4) 继续在Cygwin终端运行如下命令,将刚添加的git帐号添加到Cygwin的passwd文件:

$ mkpasswd -l -u git >> /etc/passwd 

再使用你喜欢的任何方式查看一下passwd文件(文件的最后那一行),确认git帐号已经添加进去。

5) 拷贝你的公钥文件到目录“/tmp/id_rsa.pub”,再在终端运行“$ chmod 755 /tmp/id_rsa.pub”修改文件的权限

    如果你还没有相应的公钥,就自己生成一个,参考GitHub Guide上的“Set Up SSH Keys”指引或参考基于互联网的Git开发环境搭建(Windows系统)中第3点“ 生成 Git 要使用的 ssh key”的相关指引。

6)以git用户打开一个新的Cygwin终端(如下图所示,位置在开始/所有程序/Cygwin)

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

在该终端内运行如下命令初始化公钥的配置:

$ gitosis-init < /tmp/id_rsa.pub 

如果你运气好的话,成功后你将会看到如下信息:

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

如果出现错误,参考下面第7步的处理

7)如果第6步出现类似如下错误信息:

0 [main] python 4268 D:/cygwin/bin/python.exe: *** fatal error - unable to remap //?/D:/cygwin/lib/python2.6/lib-dynload/select.dll to same address as parent: 0x3E0000 != 0x410000

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

按如下说明处理:

    关闭所有当前打开的所有Cygwin终端窗口,停止sshd服务,然后打开Windows的CMD命令行窗口,切换到cygwin/bin目录,运行ash命令,会出现$命令行,继续输入“$ /bin/rebaseall”,如果没有任何错误信息就OK了,参考如下截图:

实战 Win 7下安装 Gitosis (Windows下的 git 服务器) - rongjih - 拥有自己的梦想,跟随心的召唤

错误处理完毕后,重新启动sshd服务,再按上面第6步重新操作一遍即可。

8)切换回以管理员身份打开的那个Cygwin终端窗口(如果因第7步已经关闭则重新打开一个),运行如下命令

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

至此Gitosis成功安装完毕!

七)使用Gitosis

1)将Gitosis管理端的git仓库检出来,位置随意

$ git clone git@your-server-name:gitosis-admin.git

以下尝试创建一个test仓库,并配置访问权限。

2)进入刚刚检出的目录gitosis-admin,编辑gitosis.conf文件,增加如下信息:

[group test]
writable = test
members = your_email_from_ssh_key

保存,并提交、push到gitosis-admin.git仓库。

3)在你喜欢的地方创建一个空目录test,里面放个readme.txt文件,然后打开Git Bash终端,进入到test目录内运行如下命令,test.git仓库就会在服务端自动创建了(注意经过第2步后是不能直接"$ git clone"出来的,会报错,必须自己有个非空的git仓库然后push上去才行)。

$ git add .
$ git init
$ git commit -m init
$ git remote add origin git@your-server:test.git
$ git push origin master

现在你到“cygwin/home/git/repositories”目录下看看,test.git仓库已经稳放在那里了!

test仓库只是一个原理演示,任何其他的git仓库操作是类似的。

参考资料:

Setting up Gitosis on Windows 7

python.exe: *** fatal error - unable to remap

Git 服务器软件 gitosis 的改进

Pro Git:服务器上的Git 权限管理器Gitosis

Gitosis自身的Readme

还有个git仓库管理工具叫gitolite,用perl写的,听说可以控制到分支的权限等更多功能,有兴趣的可以参考一下下面的链接:

Gitolite 构建 Git 服务器

原帖:http://rongjih.blog.163.com/blog/static/33574461201121611154627/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git是非常著名的分布式版本控制系统。 Gitosis则是方便通过Git与ssh架设中央服务器的软件。这篇文章的安装流程写得很明了,但使用中还是遇到了些许问题,本文算是该流程的补充。如果打算通过Gitosis架设服务器通过本文或许可以少走不少弯路。 一、架设步骤 1. 下载并安装python setuptools sudo apt-get install python-setuptools 2. 下载并安装gitosis cd ~/src git clone git://eagain.net/gitosis.git cd gitosis python setup.py install 3. 添加用户git sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git 4. 生成本机密钥 切换到个人机,如果已有~/.ssh/id_rsa.pub略过此步 ssh-keygen -t rsa 5. 上传密钥到服务器临时目录 scp ~/.ssh/id_rsa.pub 用户名@主机:/tmp 6. 初使化gitosis 切回到服务器 sudo -H -u git gitosis-init < /tmp/id_rsa.pub 7. 修改post-update权限 sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 8. clone gitosis管理平台 git clone git@主机名:gitosis-admin.git cd gitosis-admin 9. 安装完成 通过修改gitosis-admin管理gitosis用户权限 添加公密到keydir,添加用户 修改完后commit,push到中服务器即可完成仓库权限的相关操作。 二、实例 目标:添加用户 john 和仓库 foo 到gitosis,并和管理员miao合作管理 1. 用户john添加并发送id_rsa.pub给miao john:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/john/.ssh/id_rsa): Created directory '/home/john/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/john/.ssh/id_rsa. Your public key has been saved in /home/john/.ssh/id_rsa.pub. john:~$ cp /home/john/.ssh/id_rsa.pub /tmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值