大家都知道Github,但知道Gitorious相对要少,Gitorious同样是一个基于Git的项目托管平台,功能上和Github基本一致,地址是http://www.gitorious.org。
它使用Ruby on Rails开发,而且是开源的,适合在团队内部搭建项目托管平台。
Gitorious安装与配置相对繁琐,会碰到各种问题,折腾了一段时间,深有体会,
所以整理了安装配置步骤和常见问题,一来是做个总结,好记性不如烂笔头,二来是希望给同样处于困惑中的朋友带来些许帮助。
下面以Redhat为例,进行说明,我也尝试过Ubuntu下的配置,基本上差不多。
提前展示一下我的目录结构,便于后续说明。
/home/git
| -- .ssh
\ -- gitorious
| -- data
| | -- repositories
| | -- tarballs
| \ -- tarballs-work
\ -- source
注:以上均是目录。
安装必要的package,yum -y install git httpd httpd-devel mod_xsendfile mysql mysql-devel mysql-server memcached sphinx ImageMagick aspell apg expect
建立一个新的系统用户"git",/home/git下手动创建.ssh和gitorious及其子目录如上图所示。
在.ssh下新建文件authorized_keys和sshd_config,文件访问权限设置是600。
编辑sshd_config,echo "AllowGroups git" > sshd_config,目的是让其他主机可以通过git系统账户ssh到本机。
安装Ruby和RubyGems,需要注意的是RubyGems版本是1.4.2,命令是gem install update -v 1.4.2 && update_rubygems
安装bundler和passenger,后面会用到,gem install --no-ri --no-rdoc bundler passenger
passenger包安装完成后,根据你的web服务器生成对应的模块,比如apache,执行命令passenger-install-apache2-module
使用git检出Gitorious项目至/home/gitorious/source目录下,git clone git://gitorious.org/gitorious/mainline.git /home/gitorious/source
在source/tmp目录下建立pids目录,后面会用到;source/script/gitirious拷贝至/usr/local/bin
在source目录下执行bundle install,根据Gemfile安装此Rails项目所需的package。
*******重要,执行命令:chown -R git:git /home/git,将git目录(包括子目录及文件)的所有者移交给git系统账户
apache配置,修改配置文件/etc/httpd/conf/httpd.conf,附加下列几行,相关路径根据你的系统环境修改即可。
########## gitorious server config ##########
LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19
PassengerRuby /usr/bin/ruby
XSendFile on
XSendFilePath /home/git/gitorious/data/tarballs
Listen 8000
<VirtualHost *:8000>
ServerName your.host.domain
DocumentRoot /home/git/gitorious/source/public
<Directory /home/git/gitorious/source/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
在source/config目录下,利用模板配置文件创建3个配置文件 broker.yml database.yml gitorious.yml
broker.yml不需要编辑,database.yml注意数据库的类型、用户名、密码,
gitorious.yml需要配置gitorious_host、gitorious_client_port、repository_base_path、repository_base_path、archive_work_dir、
use_ssl: false、is_gitorious_dot_org: false
执行apg -m 64命令,使用其中任意一行,替换cookie_secret: ssssht中的ssssht
创建数据库和数据表,
理论上在source目录下执行bundle exec rake db:create RAILS_ENV=production命令能够创建数据库,但是我没有成功,所以手动建库gitorious_production
然后创建表,执行命令bundle exec rake db:setup RAILS_ENV=production
修改source/doc/templates/centos目录下服务脚本 git-daemon git-poller stomp
需要注意配置正确上述脚本的变量 RUBY_HOME、GITORIOUS_HOME、GEMS_HOME
将上述脚本拷贝至/etc/init.d/目录下
启动服务
service stomp start
service git-daemon start
service git-poller start
service memcached start
service mysqld start
service httpd start
可能遇到的问题:
1. 使用浏览器访问Gitorious服务报#13权限错误
确保/home/git目录有可执行权限,因为要执行Ruby脚本
2. login失败
提供gitorious服务的主机名只有IP,没有域名,在配置中使用的主机名均是IP,导致client访问时无法创建session cookie,
需要修改源码,config/initializers/session_store.rb
注释掉此行 :domain => domain,
3. 利用ssh协议git clone失败
确保 /home/git/.ssh目录下的文件的访问权限是600