Gitorious on Ubuntu
Ubuntu 10.04にGitoriousをインストール
必要なパッケージをインストール
aptitudeで入れるもの
これは、ほぼ先ほどのページ通り。但し、Ruby関連は後から入れ直す羽目になったので、この時点で入れなくても良いはず。
sudo aptitude update sudo aptitude install build-essential zlib1g-dev tcl-dev libexpat-dev \ libcurl4-openssl-dev 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 phpmyadmin libdbd-mysql-ruby libmysql-ruby \ libmagick++-dev zip unzip memcached git-core git-svn git-doc \ git-cvs irb sudo aptitude install irb sphinxsearch uuid uuid-dev openjdk-6-jre
ActiveMQのインストール
インストールは解凍するだけ。
$ wget 'http://(適当なミラーサイト)/mirror/apache/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.tar.gz' $ sudo tar zxvf apache-activemq-5.5.0-bin.tar.gz -C /usr/local/
設定ファイルは /etc の直下ではなく、/etc/default の下に置く。
$ sudo sh -c 'echo "export ACTIVEMQ_HOME=/usr/local/apache-activemq-5.5.0" >> /etc/default/activemq.conf' $ sudo sh -c 'echo "export JAVA_HOME=/usr/" >> /etc/default/activemq.conf'
その他細々とした内容。この辺は先ほどのページ通り。
$ sudo adduser --system --no-create-home activemq $ sudo chown -R activemq /usr/local/apache-activemq-5.5.0/data
/usr/local/apache-activemq-5.5.0/conf/activemq.xml を修正。ここで結構時間がかかった。バージョンによって違うみたいだけど、5.5.0ではとりあえず以下のようにして動いている模様。
<transportConnectors> <transportConnector name="stomp" uri="stomp://127.0.0.1:61613"/> </transportConnectors>
起動スクリプトの設定。先ほどのページだと http://launchpadlibrarian.net/15645459/activemq から取得すると書いてあるが、これは不要。配布されてるパッケージにあるスクリプトをそのまま使用。
$ sudo ln -sf /usr/local/apache-activemq-5.5.0/bin/activemq /etc/init.d/
Ruby関連のインストール
Ruby本体はRuby Enterprise Editionというのを入れると良いらしいので、そうする。
$ sudo dpkg -i ruby-enterprise_1.8.7-2011.03_i386_ubuntu10.04.deb
RubyGemsはとりあえず何も考えず最新バージョンを入れたらハマって、1.4.2だと大丈夫だったんで、最初から1.4.2を入れておくといいと思う。ファイルはこの辺からどうぞ。
$ tar zxvf rubygems-1.4.2.tgz $ cd rubygems-1.4.2/ $ sudo ruby setup.rb
必要なgemのインストール。後の方で何か怒られたらその都度入れればいいや、程度の軽い気持ちで。
sudo gem install -b --no-ri --no-rdoc rmagick chronic geoip daemons hoe \ echoe ruby-yadis ruby-openid mime-types diff-lcs json rack ruby-hmac rake \ stompserver passenger rails ultrasphinx mysql
Gitoriousのインストール
nginxのインストール
なお、nginxはaptitudeで普通に入れるバージョンだとダメなので、インストール済みの場合は削除し、passengerに対応したnginxを入れる。インストール先は/opt/nginx。
$ sudo aptitude purge nginx $ sudo passenger-install-nginx-module Where do you want to install Nginx to? Please specify a prefix directory [/opt/nginx]: (以下略)
Gitoriousは/opt/nginx/html/gitoriousに入れる予定なので、設定ファイル(/opt/nginx/conf/nginx.conf)に以下を追記。
location / { root html/gitorious/public; index index.html index.htm; passenger_enabled on; }
Gitoriousのインストール
GitoriousはRuby on Railsで出来ている。以下の通り、最新版ソースを持ってくる。
$ sudo git clone git://gitorious.org/gitorious/mainline.git /opt/nginx/html/gitorious
ユーザーの設定、権限の設定等。
$ sudo adduser --system --home /opt/nginx/html/gitorious/ --no-create-home --group --shell /bin/bash git $ sudo chown -R git:git /opt/nginx/html/gitorious/
以下、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
gitorious.ymlは以下の通り。cookie_secretには、apg -m 64と言うコマンドを実行して、その結果を貼付ける。
production: cookie_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx repository_base_path: "/opt/nginx/html/gitorious/repositories" gitorious_client_port: 80 gitorious_client_host: git.example.com gitorious_host: git.example.com gitorious_user: git archive_cache_dir: "/opt/nginx/html/gitorious/tarballs" archive_work_dir: "/tmp/tarballs-work" hide_http_clone_urls: true is_gitorious_dot_org: false use_ssl: false public_mode: false only_site_admins_can_create_projects: true
MySQLデータベースの設定
MySQLの管理者ユーザーでログインして、DB及びユーザーを作成する。
mysql> create database gitorious; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON gitorious.* TO 'gitorious'@'localhost'; Query OK, 0 rows affected (0.01 sec) mysql> SET PASSWORD FOR 'gitorious'@'localhost' = PASSWORD('secretpassword'); Query OK, 0 rows affected (0.00 sec)
必要なgemがインストールされているかチェック
$ bundle check
不足しているのは以下のコマンドで一発でインストールできる。便利。
$ sudo bundle install
DBのセットアップ
RoRな人にはお馴染みのrakeコマンドで。
$ export RAILS_ENV=production $ rake db:create $ rake db:migrate
ちなみに、RubyGemsのバージョンが新しかった時には、以下のエラーが出た。
$ rake db:migrate (in /opt/nginx/html/gitorious) rake aborted! uninitialized constant ActiveSupport::Dependencies::Mutex /opt/nginx/html/gitorious/Rakefile:10:in `require' (See full trace by running task with --trace)
各種設定
管理者ユーザーの作成。
$ env RAILS_ENV=production ruby script/create_admin
ultrasphinxの設定?
$ rake ultrasphinx:bootstrap
cronに以下のタスクを追加。
* * * * * cd /opt/nginx/html/gitorious && /usr/local/bin/rake ultrasphinx:index
各種デーモンの起動設定
nginx
nginxの起動スクリプト /etc/init.d/nginx 内の変数は適宜修正する。自分の場合以下の通り。
PATH=/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/opt/nginx/sbin/nginx PS="nginx" PIDNAME="nginx" #lets you do $PS-slave PIDFILE=$PIDNAME.pid #pid file PIDSPATH=/opt/nginx/logs DESCRIPTION="Nginx Server..." RUNAS=root #user to run as SCRIPT_OK=0 #ala error codes SCRIPT_ERROR=1 #ala error codes TRUE=1 #boolean FALSE=0 #boolean lockfile=/var/lock/nginx NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
nginxの起動設定。
$ sudo chmod +x /etc/init.d/nginx $ sudo update-rc.d -f nginx defaults
git-daemon
/etc/init.d/git-daemon を適宜修正。
#GIT_DAEMON="/opt/ruby-enterprise/bin/ruby /var/www/gitorious/script/git-daemon -d" GIT_DAEMON="/usr/local/bin/ruby /opt/nginx/html/gitorious/script/git-daemon -d" LOCK_FILE=/var/lock/git-daemon #PID_FILE=/var/www/gitorious/log/git-daemon.pid PID_FILE=/var/run/git-daemon.pid PID_FILE=/opt/nginx/html/gitorious/log/git-daemon.pid
その他
後は、git-pollerとgit-ultrasphinxが必要。
sudo update-rc.d git-ultrasphinx defaults sudo update-rc.d git-poller defaults
/etc/init.d/git-poller と /etc/init.d/git-ultrasphinx は適当に修正する。
起動!
多分以下の4つでOK。stompというのは要らない。
$ /etc/init.d/nginx start $ /etc/init.d/git-daemon start $ /etc/init.d/git-poller start $ /etc/init.d/git-ultrasphinx start
長かった・・・