なおすけの落書き帳

てきとーに。

PostgreSQL 9.1+Pumaでredmineを導入してみた

寒い日が続いていますが皆さんお元気でしょうか。
最近、サークルでプロジェクト活動をしていて、使ってみるかということでRedmineを導入しました。

今回、RedminePostgreSQL+Pumaで導入しました。
なかなか文献がなく、結構大変でした。

Redmineのインストール!

前提条件

  • apacheが動作していること
  • PostgeSQLが動作していること

環境

インストール

データベースの初期化

データベースユーザにスイッチして、データベースの初期化を行います。
データベースをredmineがいじれるように、ロールの追加も行います。

# su - postgres
$ psql
psql(8.4.18, server9.1.11)
postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VAILD UNTIL 'infinity';
postgres=# create database redmine with encording='utf8' template=template0 owner=redmine;
postgres=# \q
$ exit

これで、データベースの準備が完了です。

redmineの導入

redmineを公式からダウンロードしてきましょう。
redmineを動かすページで行います

# pwd
/home/web/
# wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz
# tar xvf redmine-2.4.2.tar.gz
# mv redmine-2.4.2 redmine
# cd redmine

redmineRoRで動くので、bundle installしてあげましょう

# bundle install 

するとエラーが発生します。
どうやら、rmagickが上手く入らない模様。 gem install rmagickしてみると、

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/usr/local/bin/ruby

どうやらImageMagickとやらを入れないとダメみたい。

# yum install ImageMagick-devel
# bundle install
    Your bundle is complete!
    Gems in the groups development and test were not installed.
    Use `bundle show [gemname]` to see where a bundled gem is installed.

できたー

データベースの設定

redmineの設定ファイルに、接続に使う情報を書きます。

# vi config/database.yml
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: password
  encoding: utf8

ここで、redmineのディレクトリに移動し、

# bundle exec rake generate_secret_token

すると、上手く行きません。
あれー…

# su - psql
$ cd 9.1/data/
$vi pg_gba.conf

そして、local all postgres peerを削除して

# rake db:create
# rake db:migrate
# rake db:seed
# rails s

で、http://localhost:3000/にアクセスすると…?

できてるー!

redmineのデーモン起動

上手く動いてるし、デーモンで起動するように設定しましょう。
噂で聞くと、unicornがいいらしい。

unicornの導入

# vi Gemfile
+ gem "unicorn"
# bundle install 
# bundle exec unicorn -v
unicorn v4.8.0

わーいはいったー。
入ったので、設定ファイルを書いてあげます。 config内の、unicorn.rbに記述します。

@dir = "/home/web/redmine/" # ディレクトリのパス
worker_processes 4
working_directory @dir
timeout 15                  # タイムアウトの指定
listen 30000                # portの指定
preload_app true
pid"#{@dir}tmp/pids/unicorn.pid"     # pidの保存設定
stderr_path "#{@dir}log/unicorn.error.log" # エラー出力先
stdout_path "#{@dir}log/unicorn.log" # ログ出力先

わざわざアドレスバーにポート番号書くのもめんどくさいので、http://localhost/redmine/と入力されたらそこに飛ばしてあげましょう。
いわゆるリバースプロキシってやつです。

# httpd.conf
<VirtualHost *:80>
  ProxyPass /redmine http://localhost:3000/redmine
  ProxyPassReverse /redmine http://localhost:3000/redmine
</VirtualHost>

これでbundle exec unicorn_rails -D --path /redmine -c config/unicorn.rbしてみると…

できたー

動作確認

動作確認してみると、なんかログイン状態がかなり不安定…
ログインしてページ移動するとno login状態になったり、login画面が3回連続で出てみたり…
調べても情報が出てこないし。
でも、rails sをした時は上手く言ってることを考えると、なんかunicornあたりが怪しいことが発覚しました。
というわけで、unicornをやめて、pumaを導入してみます。

puma導入

pumaというのが、意外といいという情報を手に入れました。 早速導入します。

# Gemfile
gem "puma"

bundle installします。

そして、デーモンで起動するように設定を書きます。
config/puma.rbにかけばいいらしい。

#puma.rb
ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"
application_path = '/home/web/redmine'
directory application_path
environment = :production
daemonize true
pidfile "#{application_path}/tmp/pids/puma.pid"
bind 'tcp://0.0.0.0:22284'

これで、bundle exec puma -e production --config config/puma.rb --daemon してあげます。
で、http://localhost/redmine/にアクセスしてあげると…?
できたー。
ログインもうまくいってますね!

というわけで完成です!

今後の課題

うちのサークル、gitlabも使ってるのですが、redmineとgitlabが別のサーバで動いてるんですよね…
なんとか連携できないかなーって。