All Articles

Ubuntu12.04 LTS + Nginx + MySQLでRedmineを動かすメモ

とある案件でRedmineを準備しようってなったんですが、せっかくだし入れたことない環境に入れますかと意味不明なチャレンジ精神が沸き起こってやってみたメモです。一回インストールするとすぐ忘れちゃうので今回はちゃんと備忘録として残しておきます。

まぁ…面倒ではありますよね

何回かインストールしたことあるんですが、スキル不足の為スムーズに入ったことがなく…それでも今回はわりとスムーズに入りました。あ、すでにやってるエントリはたくさんありますので、そちらを参照した方が早いかもです。

Ubuntu 12.04 + ruby 1.9.3 + nginx + unicorn + Redmine - くじらにっき++

CentOS 6.3 にRedmine をインストールしてみた - letsspeak's diary

用意するものと環境とか

今回はさくら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

終わりに

完全に覚書になってますね…。それでも昔より簡単になったような気がしないでもないです。 誰かの何かの参考になれば。というか上記の参考エントリを見てもらうのが早いと思います(´・ω・`)