debian系统下安装git的gitosis服务器教程
Gitosis 就是一套用来管理 authorized_keys 文件和实现简单连接限制的脚本,本文我们来看看在debian系统下安装和配置gitosis服务的步骤.
前段时间一直在用google code,大概了解了svn的使用方法,其实也没有怎么了解,因为使用了eclipse的svn插件,没有手动使用svn命令过,想在家里的龙芯上也弄个版本管理软件,这样既可以控制平时写的软件的版本,同时也实现了对这些程序的备份.
以前在自己的电脑上搭建过svn服务器,所以这次想尝试一下搭建git的服务器,git是分布式的版本控制软件,因此本身没有很强的服务器概念,因此选择了gitosis这个软件.
安装这个软件非常方便,直接用apt-get就可以了,很久没有刷新软件源了,导致第一次安装没有成功,重新刷新一下就好了,安装完之后,按照http://en.gentoo-wiki.com/wiki/Gitosis这篇wiki的指示配置gitosis,不过其中有一点需要说明的是,debian安装的gitosis创建的组和用户都是gitosis,因此wiki上描述的远程路径帐户名都要改为gitosis.
在本地用ssh-keygen生成一对密钥对之后,把公钥上传到龙芯上,然后用那把公钥初始化版本库,这样我这台电脑就是这个版本库的拥有者了,初始化之后,就可以通过gitosis账户远程clone一个gitosis-admin.git版本库,里面有账户和代码库的设置,修改之后,先commit到本地,然后再push到远程版本库中.
在安装gitosis之前,apt建议我安装git-daemon-run和gitweb两个包,那就试试看好了,前面那个包好像是用runit程序进行管理的,现在还不清楚是怎么控制开启和关闭,在/etc/init.d文件夹下没有服务脚本,修改一下/etc/sv/git-daemon/run文件,把git-daemon启动参数改掉,其中的base-path改为版本库的路径,我这里是/srv/gitosis/repositories,gitosis账户的家目录是在/srv/gitosis,最后加上–export-all暴露所有的版本库.
然后安装gitweb,安装也很方便,配置起来麻烦了点,因为不会弄apache的虚拟主机,所以直接在原来的默认主机里进行配置,把gitweb安装在/usr/lib/cgi-bin中的gitweb.cgi复制到原来配置的cgi-bin路径,我这里是/srv/sgi-bin,把/usr/share/gitweb下的图片和css文件复制到apache默认主机的根目录,我把它们复制到了/srv/www/git文件夹下,然后配置/etc/gitweb.conf,其中的$projectroot改为版本库的根路径,我这里是/srv/gitosis/repositories,所有图片和css文件的路径前面加上了”/git”,因为我把它们放在了默认主机的根目录下的git目录中,最后修改apache的配置,debian的默认主机配置文件是/etc/apache2/sites-enabled/000-default,在虚拟主机项目下增加:
SetEnv GITWEB_CONFIG /etc/gitweb.conf
这样apache会去读取gitweb的配置文件,设置好相应的环境变量,代码如下:
- <Directory"/srv/www/cgi-bin/gitweb">
- OptionsFollowSymlinksExecCGI
- Allowfromall
- AllowOverrideall
- Orderallow,deny
- --phpfensi.com
- <Filesgitweb.cgi>
- SetHandlercgi-script
- </Files>
- RewriteEngineon
- RewriteCond%{REQUEST_FILENAME}!-f
- RewriteCond%{REQUEST_FILENAME}!-d
- RewriteRule^.*/gitweb.cgi/$0[L,PT]
- </Directory>
这段从网上抄来的设置,应该是改写url用的吧,代码如下:
- <Directory"/srv/gitosis/repositories">
- Allowfromall
- </Directory>
这个应该是设置可以访问版本库根文件夹,但是这个设置好像没有用.
重新启动apache,访问xxx/cig-bin/gitweb.cgi,但是显示的是403错误,没有权限访问,不清楚为什么会这样,把整个版本库根文件夹访问权限改为755就可以显示了.
最后照着样子自己本地初始化git版本库,然后放到远程的版本库中,初始化是成功的,在gitweb页面中也可以看见,但是修改之后commit,然后再push的时候,报错project description file hasn’t been set。这个不知道怎么解决,网上搜索了下,说是要同时修改本地和远程的描述文件,.git/description,然后的确是可以提交了,先尝试到这里,以后继续.
热门评论