功夫Panda

记录一些遇到的问题

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

大家都知道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

 

 

 

 

posted on 2013-04-13 02:57  功夫Panda  阅读(822)  评论(0编辑  收藏  举报