とある案件でRedmineを準備しようってなったんですが、せっかくだし入れたことない環境に入れますかと意味不明なチャレンジ精神が沸き起こってやってみたメモです。一回インストールするとすぐ忘れちゃうので今回はちゃんと備忘録として残しておきます。
まぁ…面倒ではありますよね
何回かインストールしたことあるんですが、スキル不足の為スムーズに入ったことがなく…それでも今回はわりとスムーズに入りました。あ、すでにやってるエントリはたくさんありますので、そちらを参照した方が早いかもです。
Ubuntu 12.04 + ruby 1.9.3 + nginx + unicorn + Redmine - くじらにっき++
用意するものと環境とか
今回はさくらVPSのUbuntu Serverです。upgradeしたら12.04 LTSになっちゃったのでまぁいいかということで。nginxとMySQLはaptから、rubyとRedmineはソースから入れる構成です。特に深い理由はありません(nginx/MySQLはすでに稼動しているサービスで使ってたので)。あと、上記サイトを参考にしてたらnginxでリバースプロキシして5001番ポートでハンドルするようにしてました。それがいいのかわかりませんが、先人に習っておくことにします。
では、インストール行きましょう。
rubyのインストール(ソースから)
Ubuntuだとバージョン指定のaptで入るんですが、特にコレ以外に用途が無いのでバージョン指定で…。 特に苦もなく、ソースを落としてきてコンパイル。
``` $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz $ tar xvfz ruby-1.9.3-p429.tar.gz $ cd ruby-1.9.3-p429 $ ./configure --prefix=/usr/local $ sudo make $ sudo make install ```コンパイルの途中で、「libffiとyaml無いよ」って言ってたので、入れてから再度makeしました。
$ sudo apt-get install libffi-dev
$ sudo apt-get install libyaml-dev
あとは/usr/local/ruby/bin/にパスを通しておきます。
$ vim ~/.bashrc
export PATH=$PATH:/usr/local/ruby/bin
source ~/.bashrc
$ ruby -v
ruby 1.9.3p429 (2013-05-15) [x86_64-linux]
$ gem -v
1.8.23
OKですね。続いてRedmine…の前に、MySQLの設定をしておきます。
MySQLの設定
設定と言っても専用のユーザとDBを作るくらいですかね。
$ mysql -uroot -p
> create database redmine character set utf8;
> create user 'redmine'@'localhost' identified by 'xxxxxx';
> grant all privileges on redmine.* to 'redmine'@'localhost;
> flush privileges;
> \q
redmineというユーザとredmineというDBを作って完了です。
Redmineのインストール
インストールしたバージョンは2.3.1です。公式ブログを見ながらほぼそのままの手順ですね。ググると1.4とかの記事が散見されるので、一応メモメモ。
落としてきて、展開して、RailsのアレをすればOKですかね。
$ wget http://rubyforge.org/frs/download.php/76933/redmine-2.3.1.tar.gz
$ tar xvfz redmine-2.3.1.tar.gz
$ mv redmine-2.3.1 /var/www/redmine
$ cd /var/www/redmine
2.x系はbundleでいけるらしい。DBはMySQLなのでPostgresとかSQLiteは無効に。あとrmagickも無効に。 あと、後述しますがUnicornも使うのでここで入れておいちゃいます。
$ echo "gem 'unicorn'" >> Gemfile.local
$ bundle install --without development test postgresql sqlite rmagick
と、ここでmysql2が入らないって怒られました><Redmine2系からはmysql2らしいです。libmysqlclientが入ってなかった様子。
$ sudo apt-get install libmysqlclient-dev
で、再度bundle install。
DB設定。設定ファイルをコピーしてproductionの項目に設定記述。
$ cp config/database.yml.example config/database.yml
$ vim config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: ******
encoding: utf8
ファイルに書き込み権限付与。今回はnginxなのでnginxが書き込めるようにします。
$ chown -R nginx:nginx files log tmp plugins
$ chmod -R 755 files log tmp plugins
参考サイトにはpublic/plugin_assetsってあるんですが、何か今回のパッケージにはありませんでした。
んで、おきまりのアレ。
$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data → [ja]を選択
Webrickで動作テスト。(このへんからめんどくさいなーって思い始める)
$ bundle exec rails s -e production
=> Booting WEBrick
=> Rails 3.2.13 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
うん、動いてますね。続いてUnicornの設定を。
Unicornの設定と起動
Unicornでサーバ立てて、Nginxでリバースプロキシするのが一般的なようで、そんな感じで私もやります。設定ファイルは下記を参考にさせていただきました。config/unicorn.rbとして配置。
https://gist.github.com/letsspeak/3981772#file_unicorn.rb
起動ファイルは下記を参考にさせて頂きました。/etc/init.d/unicornとして配置。以下の部分を変更しています。
・configファイルの配置指定 ・NAMEはredmineに変更 ・startオプションのコマンドに「-p 5001」を追記
https://gist.github.com/arosh/3616832#file_unicorn
ありがとうございます。 Rubyあんまり書けないので…(´;ω;`)
ともあれ、自動起動設定設定して起動。
$ sudo sysv-rc-conf unicorn on
$ sudo /etc/init.d/unicorn start
起動完了。あとはnginxからリバースプロキシの設定をすればOKです。
Nginxの設定
今回Nginxはaptで入れたものなので、その構造に従って記述します。まずはnginx.confにupetramを追記。
$ sudo vim /etc/nginx/nginx.conf
http {
+ upstream redmine{
+ server 127.0.0.1:5001;
+ }
sites-availablesにredmineのホストを追加。
$ sudo vim /etc/nginx/sites-availables/redmine.example.jp
server {
listen 80;
root /var/www/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name redmine.example.jp;
# Basic Authorization
auth_basic "Authorization Required";
auth_basic_user_file "/var/www/redmine/.htpasswd";
access_log /var/log/nginx/redmine.example.jp_access.log;
error_log /var/log/nginx/redmineexample.jp_error.log;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
location / {
root /var/www/redmine/public;
if (-f $request_filename) {
break;
}
fastcgi_buffers 16 16K;
fastcgi_buffer_size 32K;
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://redmine;
proxy_redirect off;
}
example.jpのところは適宜読み替えてください。あとはsites-enabledにシンボリックリンクを貼ってnginxを再起動。アクセスして、初期画面が表示されればOKです!
$ sudo ln -s /etc/nginx/sites-available/redmine.example.jp /etc/nginx/sites-enabled/redmine.example.jp
$ sudo /etc/init.d/nginx restart
終わりに
完全に覚書になってますね…。それでも昔より簡単になったような気がしないでもないです。 誰かの何かの参考になれば。というか上記の参考エントリを見てもらうのが早いと思います(´・ω・`)