(」・ω・)」うー!(/・ω・)/にゃー!

Nginx + Unicorn + Redmine のセットアップ

| Comments

redmineを入れようとしたのだが、日常的に使ってるWebサーバがnginxになってるもので、 せっかくなのでPassengerではなくunicornを使って組み上げてみた。

なおnginxはすでに入っている。

redmineのセットアップ

ユーザ側ではrvmを使ってたりするので、system rubyと混乱の生まれないようrootで作業。

1
# apt-get install ruby1.8 rubygems

gemはdebianのものでは新しすぎるので1.7以前に戻す必要があるが、gem update –system 1.6.2とかするとDebianは怒るので、REALLY_GEM_UPDATE_SYSTEMフラグをつける。

1
# REALLY_GEM_UPDATE_SYSTEM=true gem update --system 1.6.2

そして各種パッケージを入れる

1
2
3
4
5
# gem install rack -v=1.1.1 --no-rdoc --no-ri
# gem install rake -v=0.8.7 --no-rdoc --no-ri
# gem install i18n -v=0.4.2 --no-rdoc --no-ri
# gem install mysql --no-rdoc --no-ri
# gem install rails -v=2.3.11 --no-rdoc --no-ri

ちなみにunicornやrailsから先に入れたりするとrakeやrackのバージョンが高いものが入ったりして動かなくなるので、その場合は対象をuninstallしてから入れ直して使う。

これで必要パッケージが完了。

mysqlで以下のようにDB、ユーザを作る。

1
2
3
> create database redmine;
> create user 'redmine'@'localhost' identified by 'password';
> grant all privileges on redmine.* to 'redmine'@'localhost;

これでOK。次にredmineをcheckout

1
2
3
4
# cd /usr/share/nginx
# svn checkout http://redmine.rubyforge.org/svn/branches/1.2-stable redmine
# cd redmine/config
# cp database.yml.exapmle database.yml

として、DBの設定をする。

そして、セッション鍵生成とDB作成

1
2
# rake generate_session_store
#  rake db:migrate RAILS_ENV=production

以上で、redmineに必要な作業完了。

unicornのセットアップ

何はなくともinstall

1
# gem install unicorn --no-rdoc --no-ri

redmineのconfig/の中にunicorn.rbを作成

1
# vi config/unicorn.rb

設定は http://www.cocoalife.net/2010/10/post_77.html のエントリを参考に。

完了したら、unicornをデーモンモードで起動

1
# unicorn_rails -c config/unicorn.rb -E production -D

nginxの設定

1
# vi /etc/nginx/site-available/redmine

以下のように作成。上述のサイトも参考にしつつ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream unicorn {
    server unix:/tmp/unicorn.sock;
}

server {
    listen          80;
    server_name     example.com;

    root            /usr/share/nginx/redmine/public;
    error_log       /usr/share/nginx/redmine/log/error.log;

    location / {
        if (-f $request_filename) { break; }
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_pass http://unicorn;
    }
}

有効にして、nginx再起動。

1
2
# ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/redmine
# /etc/init.d/nginx restart

以上で完了。

Comments