Ubuntu に Redmine をインストールする(ただし RVM で)

目標:

  • Ubuntu 10.04。安定版なのよー。多分新しいやつでも大丈夫。
  • Nginx 使う。ちょっぱやらしいんで。
  • RVM 使う。Redmine の要求する Ruby 1.8.7 はともかく、Rails 2.3.11 ってどういうことよ!ってわけで汚したくないんで。
  • REE(Ruby Enterprise Edition)使う。メモリ抑えたい。
  • Passenger の Nginx モジュール使う。
  • Redmine は 1.2.1。


いやー、色々なブログを放浪しましたが、結局4.5時間ぐらいかかってしましましたよ。お客さん、ラッキー!これが、最短だ!!

# Nginx(の起動スクリプト)インストール(本体は使わない)
$ aptitude install nginx


# MySQL インストール
$ sudo aptitude install mysql-server libmysql++-dev
$ sudo update-rc.d mysql defaults 64 36


# RVM を最新に
$ rvm get latest
$ rvm reload
$ rvm repair all


# REE インストール
$ rvm pkg install zlib
$ rvm pkg install readline
$ rvm pkg install openssl
$ rvm pkg install iconv
$ rvm install ree --with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_usr_path --with-zlib-dir=$rvm_usr_path --with-openssl-dir=$rvm_usr_path


# for Redmine
$ rvm use ree
$ rvm use gemset global # あー、ここで redmine って名前の gemset 作れば良かった
$ rvm rubygems 1.5.2 # 1.5.2より上の場合はダウングレード
$ gem install rack -v=1.1.1
$ gem install rake -v=0.8.7
$ gem uninstall rake -v=0.9.2 
$ gem install i18n -v=0.4.2
$ gem install mysql
$ gem install rails -v=2.3.11


# MySQL 設定
$ vi /etc/mysql/my.cnf

[mysqld]
default-character-set=utf8 # 追加

[mysql]
default-character-set=utf8 # 追加

$ sudo /etc/init.d/mysql restart
$ mysql -uroot -p(パスワード)
mysql> create database redmine default character set utf8;
mysql> grant all on redmine.* to redmine identified by '(Redmine の DB 接続用のパスワード)';
mysql> flush privileges;
mysql> exit


# Redmine
$ cd ~/dev/ # お好きな場所に
$ git clone git://github.com/edavis10/redmine.git # オフィシャルクローンリポジトリらしい
$ cd redmine
$ git checkout -b 1.2.1 refs/tags/1.2.1
$ vi config/database.yml

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: (Redmine の DB 接続用のパスワード)
  encoding: utf8

$ cp config/configuration.yml.example config/configuration.yml
$ vi config/configuration.yml # メール送信設定のサンプルがたくさんついてるのであなたのお好みの設定で。私は gmail にした。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      tls: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
      authentication: :plain
      user_name: "(メールアドレス)"
      password: "(メールアカウントのパスワード)"

$ rake generate_session_store
$ rake db:migrate RAILS_ENV=production


# Passenger
$ aptitude install libcurl4-openssl-dev
$ gem install passenger
$ rvmsudo passenger-install-nginx-module
# なんか、Nginx をダウンロードしてインストールするぜー、って言われる

Automatically download and install Nginx?

 1. Yes: download, compile and install Nginx for me. (recommended)

 2. No: I want to customize my Nginx installation. (for advanced users)

Enter your choice (1 or 2) or press Ctrl-C to abort: 1 #<= 1 を選んで Passernger 用のの Nginx をインストール。

$ sudo vi /opt/nginx/conf/nginx.conf

user  www-data; #<= コレ大事
worker_processes  1;                                                                                                  
                                                                                                                      
error_log  /var/log/nginx/error.log;                                                                                  
pid        /var/run/nginx.pid; #<= コレ大事
...
  http {
      ...
      passenger_root /home/babie/.rvm/gems/ree-1.8.7-2011.03@global/gems/passenger-3.0.9;
      passenger_ruby /home/babie/.rvm/wrappers/ree-1.8.7-2011.03@global/ruby;
      ...
  }
  ...
    server {
        listen       80;
        server_name  (あなたのサーバのドメイン名);
        root /home/babie/dev/redmine/public;   # <--- Redmine の 'public' ディレクトリへのパス
        passenger_enabled on;
        ...
        # この辺コメントアウト
        #location / {
        #    root   html;  
        #    index  index.html index.htm;
        #}      
        ...
        #error_page   500 502 503 504  /50x.html;
        #location = /50x.html {
        #    root   html;  
        #}      
        ...
    }

$ sudo vi /etc/init.d/nginx # Ubuntu 標準の Nginx から Passenger 用の Nginx にすり替える
...
#DAEMON=/usr/sbin/nginx
DAEMON=/opt/nginx/sbin/nginx
....


# Nginx 起動
$ sudo /etc/init.d/nginx start


# ufw でファイアウォール管理してる人のみ。ポートを空ける
$ sudo ufw allow 80


# Redmine ユーザー(www-data)が書き込めるようにパーミッションを変更
$ sudo chown -R babie:www-data files log tmp public/plugin_assets
$ sudo chmod -R 775 files log tmp public/plugin_assets

長い戦いだった。後はここらへんを参考に設定していけばいいはず。


Nginx も REE も超速くて幸せ。