msgbartop
世界上的一队小小的漂泊者呀,请留下你们的足印在我的文字里
msgbarbottom

31 十二 11 Gitorious on Ubuntu

Gitorious 是一个基于 Git 版本控制系统的Web项目托管平台。基于 Ruby on Rails 开发,本文简单描述下在Ubuntu(11.04)下配置的记录.

khan.chan {at} virest.org | [email protected]

默认Ubuntu我们安装的时候只安装了OpenSSH Server/Client. 你可以按照我的顺序往下操作.

Packages

#aptitude install build-essential zlib1g-dev tcl-dev libexpat-dev libxslt1-dev \
libcurl4-openssl-dev zip unzip memcached postfix apache2 mysql-server mysql-client \
apg geoip-bin libgeoip1 libgeoip-dev sqlite3 libsqlite3-dev \
imagemagick libpcre3 libpcre3-dev zlib1g zlib1g-dev libyaml-dev \
libmysqlclient15-dev apache2-dev libonig-dev ruby-dev rubygems \
libopenssl-ruby libdbd-mysql-ruby libmysql-ruby \
libmagick++-dev  git-core git-svn git-doc \
git-cvs irb libaspell-dev

Ruby Gems

强制升级使用RubyGems v1.4,Gitorious支持需要.

#REALLY_GEM_UPDATE_SYSTEM=1 gem update –system

OK, 我们安装rake,daemons等

#gem install –no-ri –no-rdoc -v 0.8.7 rake && \
gem install –no-ri –no-rdoc -v 1.1.0 daemons && \
gem install -b –no-ri –no-rdoc \
rmagick stompserver passenger bundler

#gem install raspell

下载安装Sphinx

#wget -c http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz

#./configure –prefix=/usr;  make all install

我们查看下apache2安装是否正常, 然后用git clone取gitorious代码

#git clone git://gitorious.org/gitorious/mainline.git /var/www/gitorious

#cd /var/www/gitorious

#git submodule init
#git submodule update

#ln -s /var/www/gitorious/script/gitorious /usr/bin

#cd /var/www/gitorious/doc/templates/ubuntu/ && \
cp git-daemon git-poller git-ultrasphinx stomp /etc/init.d/ && \
cd /etc/init.d/ && \
chmod 755 git-daemon git-poller git-ultrasphinx stomp

# update-rc.d git-daemon defaults && \
update-rc.d git-poller defaults && \
update-rc.d git-ultrasphinx defaults && \
update-rc.d stomp defaults

# ln -s /usr/ /opt/ruby-enterprise

下载rots GIT

# git clone git://github.com/roman/rots.git

#cd rots && gem build rots.gemspec && gem install rots-0.2.1.gem

#rm -rf /usr/lib/ruby/gems/1.8/bundler/gems/rots-babb5559aae8

#vi /var/www/gitorious/Gemfile:

gem “rots”, :git => ‘https://github.com/roman/rots.git‘    把这一行替换为:

gem “rots”, :git => “~> 0.2.1″

#$(gem contents passenger | grep passenger-install-apache2-module)

#vi /etc/apache2/mods-available/passenger.load

 

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /usr/bin/ruby1.8

 

#a2enmod passenger

#a2enmod rewrite

#a2enmod ssl

创建Apache2的gitorious配置文件:

/etc/apache2/sites-available/gitorious

<VirtualHost *:80>
ServerName gitorious.virest.org
DocumentRoot /var/www/gitorious/public
</VirtualHost>

/etc/apache2/sites-available/gitorious-ssl

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
DocumentRoot /var/www/gitorious/public
SSLEngine on
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
BrowserMatch “.*MSIE.*” nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>

#a2ensite gitorious

#a2ensite gitorious-ssl

创建mysql用户

mysql -u root -p
Enter password: (your mysql root password you selected while installing the packages)
mysql> GRANT ALL PRIVILEGES ON *.* TO ’gitorious’@'localhost’ IDENTIFIED BY ’<insert password>’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

配置Gitorious

#cd /var/www/gitorious
#bundle install && \
#bundler pack
#adduser --system --home /var/www/gitorious/ --no-create-home --group --shell /bin/bash git && \     chown -R git:git /var/www/gitorious
#su - git && \
    mkdir .ssh && \     touch .ssh/authorized_keys && \     chmod 700 .ssh && \     chmod 600 .ssh/authorized_keys && \     mkdir tmp/pids && \     mkdir repositories && \     mkdir tarballs
#cp config/database.sample.yml config/database.yml && \     cp config/gitorious.sample.yml config/gitorious.yml && \     cp config/broker.yml.example config/broker.yml
  • 产品段信息修改下适合的配置信息
  • repository_base_path   /var/www/gitorious/repositories
  • cookie_secret  设置一段字符段,长于30个字母
  • gitorious_client_port  80
  • gitorious_host
  • archive_cache_dir  /var/www/gitorious/tarballs
  • archive_work_dir  /tmp/tarballs-work
  • hide_http_clone_urls   true
  • is_gitorious_dot_org  false
在config/boot.rb中加入:   require ‘thread’

OK,最后完工工作:

export RAILS_ENV=production && \
bundle exec rake db:create && \
bundle exec rake db:migrate && \
bundle exec rake ultrasphinx:bootstrap
#crontab -e
* * * * * cd /var/www/gitorious && /usr/bin/bundle exec rake ultrasphinx:index RAILS_ENV=production

建立gitorious 管理账号:

env RAILS_ENV=production ruby1.8 script/create_admin

 

 

 

 

Tags: ,

Comments are closed.