gitoriousのインストール
先日、やっとの思いでgitoriousをインストールしました。
いろいろドキュメントはあるんですけど、
gitorious自体がバージョンアップしてるので
もう既に古くなってたりして、めちゃくちゃはまりました。。
以下、メモしておきます。抜けてるところあるかも。
Ubuntu Server 9.10にインストールしました。
必要なライブラリなどをインストール
aptitude install build-essential \ apache2 apache2-dev \ mysql-server mysql-client libmysqlclient15-dev \ git-core git-svn git-doc git-cvs \ apg \ geoip-bin libgeoip1 libgeoip-dev \ sqlite3 libsqlite3-dev \ imagemagick libmagickcore2 libmagickwand2 libmagickcore-dev libmagickwand-dev \ libpcre3 libpcre3-dev \ zlib1g zlib1g-dev \ libyaml-dev \ sendmail \ zip unzip \ memcached \ openssh-server \ g++
ソースコードからインストール
wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.1.tar.gz tar xvfz onig-5.9.1.tar.gz cd onig-5.9.1 ./configure && make && make install cd .. wget http://www.sphinxsearch.com/downloads/sphinx-0.9.8.tar.gz tar xvfz sphinx-0.9.8.tar.gz cd sphinx-0.9.8 ./configure && make && make install cd .. wget http://rubyforge.org/frs/download.php/58679/ruby-enterprise_1.8.6-20090610_i386.deb sudo dpkg -i ruby-enterprise_1.8.6-20090610_i386.deb
/etc/bash.bashrcを編集
export PATH=/opt/ruby-enterprise/bin:$PATH export LD_LIBRARY_PATH="/usr/local/lib" export LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib"
/etc/ld.so.confを編集
/usr/local/lib include ld.so.conf.d/*.conf
変更後はldconfigを忘れずに。
gemでインストール
gem install --no-rdoc --no-ri actionmailer actionpack activerecord activeresource activesupport BlueCloth chronic daemons diff-lcs echoe eventmachine fastthread gemcutter geoip hoe json json_pure mime-types mysql passenger plist rails rake rdiscount RedCloth rmagick rspec rspec-rails ruby-hmac ruby-openid ruby-yadis rubyforge sqlite3-ruby stompserver textpow ultrasphinx oniguruma gem install --no-rdoc --no-ri rack --version '~> 1.0.1' gem install --no-rdoc --no-ri stomp --version '=1.1'
ここで、以下のようにシンボリックリンクを作っておきます。
ln -s /opt/ruby-enterprise/bin/stompserver /usr/local/bin/stompserver
gitoriousのインストール
git clone git://gitorious.org/gitorious/mainline.git /var/www/gitorious ln -s /var/www/gitorious/script/gitorious /usr/bin 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 mkdir /tmp/tarballs-work cp doc/templates/ubuntu/git-daemon /etc/init.d/ cp doc/templates/ubuntu/git-ultrasphinx /etc/init.d/ cp doc/templates/ubuntu/gitorious-logrotate /etc/logrotate.d/gitorious
/etc/init.d/stompを作成
#!/bin/sh # Start/stop the stompserver # ### BEGIN INIT INFO # Provides: stomp # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 1 # Short-Description: Stomp # Description: Stomp ### END INIT INFO test -f /usr/local/bin/stompserver || exit 0 . /lib/lsb/init-functions case $1 in start) # log_daemon_msg “Starting stompserver” “stomp” cd /var/www/gitorious && sudo -u git /usr/local/bin/stompserver & log_end_msg $? ;; stop) # log_daemon_msg “Stopping stompserver” “stomp” cd /var/www/gitorious && kill -INT `cat log/stompserver.pid` log_end_msg $? ;; restart) # log_daemon_msg “Restarting stompserver” “stomp” cd /var/www/gitorious && sudo -u git /usr/local/bin/stompserver & cd /var/www/gitorious && kill -INT `cat log/stompserver.pid` log_end_msg $? ;; status) if [ -f /var/www/gitorious/log/stompserver.pid ]; then echo "stompserver is running. pid: `cat /var/www/gitorious/log/stompserver.pid`" else echo "stompserver is not running." fi ;; *) # log_action_msg “Usage: /etc/init.d/stomp {start|stop|restart|status}” exit 2 ;; esac exit 0
パーミッションなど
chmod 755 /etc/init.d/git-ultrasphinx /etc/init.d/git-daemon /etc/init.d/stomp /etc/logrotate.d/gitorious update-rc.d stomp defaults update-rc.d git-daemon defaults update-rc.d git-ultrasphinx defaults
データベース系は各自の設定で。
broker.ymlはそのままでよい。
cp config/database.sample.yml config/database.yml cp config/broker.yml.example config/broker.yml
gitorious.yml
cp config/gitorious.sample.yml config/gitorious.yml
gitorious.ymlの内容
production: cookie_secret: rhignonjenyiabDewnorenOsitsIkDattAlHyacGenAtEwtumJeagNactOjCawajcuibwunolthAcnoHyRiatveeswefcylg1BlovrypAthFephdatootpaunIrInriffrupKojojCenObvuzHitEcAsFeijfotIcobToujTijWoomficMygTicWipgavoj0GhoyWevCudNaifdevRicAuWebuvWiddabUlkisseimmideylluseewsepLukeoj3hipoibyidUfyucwenugjuadcufEassiacArredLymriBlajhomepviwirbEkJeg&yoathhiphGocOodPyfsirdosh5oshyisShodguldOrjEtKecOwmAfPebMotNonja repository_base_path: "/var/www/gitorious/repositories" extra_html_head_data: system_message: gitorious_client_port: 80 gitorious_client_host: gitorious.ameba.jp gitorious_host: gitorious.ameba.jp gitorious_user: git exception_notification_emails: mangle_email_addresses: true public_mode: true locale: en archive_cache_dir: "/var/www/gitorious/tarballs" archive_work_dir: "/tmp/tarballs-work" only_site_admins_can_create_projects: false hide_http_clone_urls: true is_gitorious_dot_org: false
crontabの設定
*/10 * * * * cd /var/www/gitorious && /opt/ruby-enterprise/bin/rake ultrasphinx:index RAILS_ENV=production
データベースマイグレーション
rake db:create RAILS_ENV=production rake db:migrate RAILS_ENV=production rake ultrasphinx:bootstrap RAILS_ENV=production
起動
sudo service stomp start sudo service git-daemon start sudo service git-ultrasphinx start sudo service mysql start sudo service sendmail start sudo service memcached start sudo su git -c "cd /var/www/gitorious && RAILS_ENV=production /opt/ruby-enterprise/bin/ruby script/poller start && sleep 10" sudo service apache2 start
はまりポイント
・gemでインストールするプロダクトのバージョンが違うとエラーになる
・gitorious_client_host, gitorious_hostで指定したHostでアクセスしないと正常に処理されない。