2024年3月7日发(作者:)
在windows下架构git服务器及其应用
Gitosis 是一个使用SSH管理Git仓库的服务端工具,该软件用来添加用户和设定权限的界面不是网页,而是一个特殊的 Git 仓库。你只需要设定好某个项目,然后推送,Gitosis 就会随之改变服务器设定!
在Windows下的安装则花了我不少功夫,有时候碰到问题无从入手,所以以下将整个安装过程详细记录下来,给以后的需要者参考。
总体分为如下几大步骤:
第一步:安装Git
简单来说Git是一个免费的、开源的版本控制软件,从功能上讲,跟Subversion(SVN)这类版本控制软件没什么两样。由于工作的需求,需要在WinXP下安装git配合团队完成相应的工作,以前一直在别的系统下使用,今天经Drupal花园的龙马指点终于安装成功了,特意贴出来与有需要的童鞋一起分享。
获取Git软件:
大家可以通过两种方式获取Git的软件,一个是在官网上获取,另一个可以点击这里下载。只是有一点需要说明就是需要下载支持WinXp系统的版本。
Git在WinXP安装过程
在WinXP下安装Git详细步骤参考如下安装示意图:
点击上图的“Finish”后Git的安装就完成了,安装完成后需要在进行一下环境变量的设置,改变环境变量的具体步骤可以参考下图:
右键点击我的电脑:
生成ssh公钥
双击桌面上的git运行程序:
启动git的运行程序:
在程序中依次输入:
1、配置全局的name 和email,命令如下:
$git config --global "your name" $git config --global "your@s"
其中"your name"换成你的名字,""换成你的邮箱地址。
2、生成公钥,用于身份认证:
-C "your@s" -t rsa
这样就可以在你的用户下取得需要的公钥匙,公钥位于你的电脑中“C:Documents and
”的“id_”文件下:
你使用文本编辑器打开“id_”就可以看到公钥的内容:
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAs1c3zL3IbjhMbSCwooZ7WHlkga7xq+5inQUCTqmZ7xqBclvEwofDd4BYts99X+xfNXgGSlil85wrOfXX9ZH27ZmPR3Z8KWp3pekFOvk7iLmt0b9lZqhgpUll76Q7D2KED8se9gV4FNxg05ZK6AUZm70cBj9sZqjV//weE7ufkibcqd3ngHsTKB+0Js8NcMwldHmxIxZEwufxgT/D4EGQCA6ijjuj9ILIydzzLwWzKoH1wuGDU5LAE1qptIpAt50uWxPNlsBPoqZnbJjHg+As9If6tRkG4YzkwzSBTP725bJDcWkArhWRRkJ2cwUgcJYRyCY+8jI2oxDawYjWQ+w9HQ== airenliao@
此时只要把你的公钥放进你项目的服务中就可以进行git的相关操作。
关于git的命令更多操作,可以到官网查阅,或点击这里查看更多的命令操作。
顺便列出解决中文目录支持问题:
1、ls不能显示中文目录
解决办法:在git/etc/中增加一行:
alias ls='ls --show-control-chars --color=auto'
2、git commit不能提交中文注释
解决办法:修改git/etc/inputrc中对应的行:
set output-meta on set convert-meta off
3、git log无法显示中文注释
解决办法:在git/etc/profile中增加一行:
export LESSCHARSET=iso8859
到这时有关于git在winxp下安装就介绍完了,希望这个能给一些朋友带来一定的帮助。同时更希望朋友们关注W3CPLUS,因为只有你们的关注才能带来我的成长。
原文地址:/node/74
第二步 安装Python2.6
直接在官网/上,选择“Download”可以下载适合于不同系统的python
当前下载python2.6.2的版本,即可。
然后下载第三项,python 2.6.2 windows installer,打开python2.6.2的安装程序开始安装:一路Next下去就可以了,最后点击安装完成即可。注:默认路径会是C:Python26 路径一般不要改
第三步 安装Cygwin
cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。
一)下载安装Cygwin
1)到/官方网站下载 Cygwin 的在线安装程序 。
2)以管理员身份运行开始安装Cygwin
3)Cygwin安装过程截图
点击下一步继续
选择“Install from Internet”
设置Cygwin的安装路径Root Directory,选择“All Users(RECOMMENDED)”
设置Cygwin在线下载的数据包的保存路径Local Package Directory
选择“Direct Connection”
选择下载文件的镜像地址后点击下一步(选择不同的地址会影响下载速度)
开始下载相关数据包
如果是首次安装Cygwin,将会弹出如下界面,点击确定继续即可
选择默认并没有包含的相应包,点击将Default变为Install包括:
devel 分类下的 git
net 分类下的 openssh
Python 分类下的 python(这里顺便记录一下python的版本号,后面会用到,如2.6
Editors | vim(可以编辑修改文件参数)
点击下一步继续
到了漫长的下载等待界面了
下载完之后将自动安装,点击完成后Cygwin就安装完毕了。
二)修改安装后相关目录的访问权限
进入“开始/所有程序/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
运行的截图如下:
三)安装 ssh 守护进程服务
继续执行如下命令:
$ ssh-host-config
根据命令的提示分别回答:yes、yes、yes、ntsec tty、no、yes、[密码]、[重复密码],参考如下截图:
至此ssh服务安装完毕!
打开Windows的命令行,运行“> net start sshd”启动ssh服务(也可以到Windows服务
中启动)。
四)在Windows防火墙内开放上述 ssh 服务需要的22端口
打开“控制面板”,选择“系统和安全”选项
选择“Windows防火墙”
选择“高级设置”
选择“新建规则”
添加新的入站规则:
名称可以随意命名,点击完成即可。
五)安装python setuptools
先设置python路径的访问权限,保证所有用户都可以访问:
$ chmod +r /lib/python2.6/ -R
2.6是所安装python的版本号,要对上你安装的版本号才行,我装的时候是2.6,如果忘记了,可以在Cygwin的命令终端输入“$ python -v”查看一下。
到 Python Package Index 主页下载对应版本的python setuptools,如2.6版对应要下载
。
将复制到/home/your_user_name目录下(也可以按自己的需要复制到其它地方,注意下面的运行路径正确即可),然后在该目录的Cygwin终端下运行如下命令安装:
$ ./
看到输出类似如下的信息就表示安装成功了:
Processing
Copying to /usr/lib/python2.6/site-packages
Adding setuptools 0.6c11 to file
Installing easy_install script to /usr/bin
Installing easy_install-2.6 script to /usr/bin
Installed /usr/lib/python2.6/site-packages/
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11
六)允许SSH客户端访问
1)新建一个用户git
创建一个名为git的用户,设置密码,并确保密码不会过期。打开“控制面板”,选择用“户账户与家庭安全”中的“添加或删除用户账户”
在“新账户名”处写上“git”,选择“标准用户(S)”,之后点击创建用户即可。
创建结果如下:
2)在Cygwin Bash中,执行命令: mkpasswd -l -u git >> /etc/passwd
再使用你喜欢的任何方式查看一下passwd文件(文件的最后那一行),确认git帐号已经添加进去。
七)验证下SSH登录
1)打开Cygwin Bash(10.0.2.15 为服务器的地址,也可以是服务器的域名)
sh git@10.0.2.15 Administrator@china-fe1bdcde5 ~
$ ssh git@10.0.2.15
The authenticity of host '10.0.2.15 (10.0.2.15)' can't be established.
ECDSA key fingerprint is 5d:a6:81:98:43:fa:5a:f6:df:ba:18:b9:a0:76:87:f8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.15' (ECDSA) to the list of known hosts.
git@10.0.2.15's password:
Could not chdir to home directory /home/git: No such file or directory
Copying skeleton files.
These files are for the users to personalise their cygwin experience.
They will never be overwritten nor automatically updated.
`./.bashrc' -> `/home/git//.bashrc'
`./.bash_profile' -> `/home/git//.bash_profile'
`./.inputrc' -> `/home/git//.inputrc'
`./.profile' -> `/home/git//.profile'
git@china-fe1bdcde5 ~
$
以git用户登录成功
八)创建SSH密钥, 使能够通过SSH identity以git用户登录SSH服务器
打开Cygwin Bash
$ ssh-keygen -t rsa(所有输入都为空,即使用默认配置,密码为空)
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Administrator/.ssh/id_rsa.
Your public key has been saved in /home/Administrator/.ssh/id_.
The key fingerprint is:
6a:02:9f:42:99:7c:fe:52:e7:a9:fe:1b:15:1e:70:31 Administrator@china-fe1bdcde5
The key's randomart image is:
+--[ RSA 2048]----+
| . E. |
| o . |
| o |
| . o . o |
| * . S o |
| . = ..... |
| . =.oo.. |
| ..+ o. |
| o+oo. |
+-----------------+
$ ssh-copy-id git@10.0.2.15(输入git用户密码)
$ ssh-copy-id git@10.0.2.15
git@10.0.2.15's password:
Now try logging into the machine, with "ssh 'git@10.0.2.15'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
如果第3不执行不了,就执行如下方法:拷贝你的公钥文件到目录“/tmp/id_”,再在终端运行“$ chmod 755 /tmp/id_”修改文件的权限,如果你还没有相应的公钥,就自己生成一个,参考GitHub Guide上的“Set Up SSH Keys”指引或参考基于互联网的Git开发环境搭建(Windows系统)中第3点“ 生成 Git 要使用的 ssh key”的相关指引。
验证下,以git用户登录:ssh git@10.0.2.15
$ ssh git@10.0.2.15
Last login: Sat Jun 11 23:06:14 2011 from china-fe1bdcde5
git@china-fe1bdcde5 ~
$
不需要输入密码,即登录成功
如果登录时出现如下错误:
“CYGWIN=tty is no longer supports。„„”等问题是执行第7步。
7找到,然后单击右键选择“编辑”
打开之后可以见
将set CYGWIN=tty修改为set CYGWIN=nodosfilewarning,修改后结果如下:
如果不能修改文件,则执行第8步。
8 选中,单击右键,选择“属性”。
在输入要选择的对象名称(例如)(E)的空白处填写你的当前用户名称。
“权限”选择完全控制。
然后重新打开文件执行第7步。
九)安装配置Gitosis
1) 运行如下命令将Gitosis管理端的git仓库下载下来:
$ mkdir sources
$ cd sources
$ git clone git:///如果git:///不能成功克隆,则选择下面的地址进行克隆res0nat0r(其中0是“零”)。
git clone /res0nat0r/
2) 下载成功后再运行如下命令进行初始化:
$ cd gitosis
$ python install
这将会输出一大堆的信息,如果没有出现问题,最后那一行输出的信息类似于“Finished
processing dependencies for gitosis==0.2”。
3)以git用户打开一个新的Cygwin终端(如下图所示,位置在开始/所有程序/Cygwin)
在该终端内运行如下命令初始化公钥的配置:
$ gitosis-init < /tmp/id_
如果你运气好的话,成功后你将会看到如下信息:
如果出现错误,参考下面第4步的处理
4)如果第3步出现类似如下错误信息:
0 [main] python 4268 D:: *** fatal error - unable to remap
?D: to same address as parent: 0x3E0000 !=
0x410000
按如下说明处理:
关闭所有当前打开的所有Cygwin终端窗口,停止sshd服务,然后打开Windows的CMD命令行窗口,切换到cygwin/bin目录,运行 ash命令,会出现$命令行,继续输入“$ /bin/rebaseall”,如果没有任何错误信息就OK了,参考如下截图:
错误处理完毕后,重新启动sshd服务,再按上面第3步重新操作一遍即可。
5)切换回以管理员身份打开的那个Cygwin终端窗口(如果因第4步已经关闭则重新打开一个),运行如下命令
$ chmod 755 /home/git/repositories//hooks/post-update
至此Gitosis成功安装完毕!
十)使用Gitosis
第一种方式:命令窗口
1)将Gitosis管理端的git仓库检出来,位置随意
$ git clone git@your-server-name:
以下尝试创建一个test仓库,并配置访问权限。
2)进入刚刚检出的目录gitosis-admin,编辑文件,增加如下信息:
[group test]
writable = test
members = your_email_from_ssh_key
保存,并提交、push到仓库。
3)在你喜欢的地方创建一个空目录test,里面放个文件,然后打开Git Bash终端,进入到test目录内运行如下命令,仓库就会在服务端自动创建了(注意经过第2步后是不能直接"$ git clone"出来的,会报错,必须自己有个非空的git仓库然后push上去才行)。
$ git add .
$ git init
$ git commit -m init
$ git remote add origin git@your-server:
$ git push origin master
现在你到“cygwinhomegitrepositories”目录下看看,仓库已经稳放在那里了!
test仓库只是一个原理演示,任何其他的git仓库操作是类似的。
参考资料:
Setting up Gitosis on Windows 7
: *** fatal error - unable to remap
Git 服务器软件 gitosis 的改进
Pro Git:服务器上的Git 权限管理器Gitosis
Gitosis自身的Readme
还有个git仓库管理工具叫gitolite,用perl写的,听说可以控制到分支的权限等更多功能,有兴趣的可以参考一下下面的链接:
Gitolite 构建 Git 服务器
碰到的错误记录:
1)2011-05-27 启动sshd服务报错 "错误1069:由于登录失败而无法启动服务"
这是由于用户密码错误导致的,以后更改用户后sshd也可能发生这个问题,在
里的登录标签里更改用户设置即可!
我刚好是碰到帐号cyg_server处于"用户下次登录时须更改密码"状态,修改为"密码永不过期"后sshd就启动正常了。
第二种方式图形化界面。
1)以管理员身份运行git Bash。
2)在 git Bash 中输入命令git gui打开图形化界面窗口或者直接打开Git GUI也可以。
选择创建新的版本库,在系统中放一个位置就可以了开始工作了。
3)将程序放在刚刚建立的本地版本库中,如果程序有修改,选择“重新扫描”就可以将改动的程序扫描出来,然后在提交描述的窗口上写上修改的原因,为了区别是谁修改的,改动之后“签名(Sign Off)”。然后点击“缓存改动”,最后进行提交。
此时提交的是本地的版本库中,如果要提交到服务器上就选择“远端->Add”
在名字处写上服务器的名字,Location处写上服务器的地址。
然后选择上传
显示结果如下表示上传成功:
打开“版本库->图示所有的分支历史”
上传显示结果:
如果在Git GUI 里面中文显示的是乱码,就做如下修改:
修改完之后,就可以正确显示中文了。


发布评论