Redmineセットアップ

Updated: / Reading time: 6 minutes

何故か、何度かRedmineをセットアップしたことがありますが、はっきり言って面倒くさい! なんか色々依存関係はあるし、少しバージョンが異なるとすぐに動かなくなるし…

というわけで、JRuby+Redmine+Tomcatという環境を作って、直ぐに展開できる状態にしたいと思います。展開するだけで使用可能!

ただその前に、もう一度Redmineのセットアップをおさらいすることで、セットアップ過程を再確認するとともに理解を深めたいと思います。

前提

  • CentOS 6.3
  • Redmine 2.1.2
  • MySQL 5.1.61
  • Apache HTTP Server 2.2.15

いずれも、2012/10/11時点の最新バージョンです。CentOSは、OSセットアップ直後に近い状態です(作業ユーザーの追加、ネットワーク設定などを行いました)。

参考リンク

ほとんど[Redmine 2.1をCentOS 6.3にインストールする手順 Redmine.JP Blog](http://blog.redmine.jp/articles/redmine-2_1-installation_centos/)を参考にしています。以下の手順も、参考ページに沿って進めます。

セットアップ手順

SELinuxを無効に設定

/etc/sysconfig/selinuxを開きます。

$ sudo vi /etc/sysconfig/selinux

SELINUXの値をdisabledに変更します。

SELINUX=enforcing
↓
SELINUX=disabled

変更後、OSを再起動します。

$ sudo reboot

再起動後、getenforceコマンドを実行してSELinuxが無効に設定されたことを確認します。

$ getenforce
Disabled

iptablesでHTTPを許可

/etc/sysconfig/iptablesを開きます。

$ sudo vi /etc/sysconfig/iptables

80/tcpへの接続を許可する設定を追記します。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# ↓追記
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

設定を変更後、iptablesを再起動します。

$ sudo service iptables restart

EPELリポジトリを登録

以下のページで、最新のepel-releaseパッケージのURLを確認します。

URLを確認したら、以下のようにrpmコマンドを実行します。yumリポジトリにEPELが追加されます。

$ sudo rpm -Uvh <epel-releaseパッケージのURL>

開発ツール類をインストール

$ sudo yum groupinstall "Development Tools"

RubyとPassengerのビルドに必要なヘッダーファイルなどをインストール

$ sudo yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel

MySQLとヘッダーファイルをインストール

$ sudo yum install mysql-server mysql-devel

Apacheとヘッダーファイルをインストール

$ sudo yum install httpd httpd-devel

ImageMagickとヘッダーファイルをインストール

$ sudo yum install ImageMagick ImageMagick-devel

Rubyをインストール

ソースコードをダウンロード

以下のページからRubyのソースコードをダウンロードします。

wgetを使用してダウンロードします。

$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.zip

ソースコードをビルド

$ unzip ruby-1.9.3-p194.zip
$ cd ruby-1.9.3-p194
$ ./configure
$ make
$ sudo make install
$ make clean

インストール後、rubyコマンドを実行してバージョンを表示することで、正しくインストールされたことを確認します。

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

bundlerをインストール

Redmineが使用するGemを一括インストールするためのツール、bundlerをインストールします。

# gem install bundler --no-rdoc --no-ri

MySQLを設定

デフォルトキャラクターセットをutf8に設定

/etc/my.cnfを開きます。

$ sudo vi /etc/my.cnf

[mysqld]セクションにcharacter-set-server=utf8を、[mysql]セクションにdefault-character-set=utf8を追記します。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

変更したら、MySQLを起動します。ついでに、OS再起動時にもMySQLが自動起動するように設定します。

$ sudo service mysqld start
$ sudo chkconfig mysqld on

$ chkconfig --list | grep mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

my.cnfへの設定が反映されていることを確認します。MySQLに接続して、show variables like 'character_set%';を実行します。表示された値のうち、character_set_filesystemcharacter_sets_dir以外の値が全てutf8に設定されていることを確認します。

$ mysql -u root
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

rootユーザーのパスワードを変更

mysql> set password for root@localhost=password('新しいrootのパスワード');

一度、MySQLをログアウトして、rootでログインし直してみます。パスワード無しではログインに失敗し、先ほど設定したパスワードだとログインできることを確認します。

$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

$ mysql -u root -p
Enter password:

匿名ユーザーを削除

mysql> delete from mysql.user where user = '';
mysql> flush privileges;

Redmine用のデータベース、ユーザーを作成

mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine identified by 'user_redmineのパスワード';
mysql> flush privileges;

Redmineをインストール

Redmineをダウンロード

RubyForge: Redmine: ファイルリストからRedmineをダウンロードします。

$ wget http://rubyforge.org/frs/download.php/76497/redmine-2.1.2.zip

Redmineを展開、配置

ダウンロードしたアーカイブを展開します。

$ unzip redmine-2.1.2.zip

展開したRedmineを配置先ディレクトリに移動します。ここでは、配置先を/var/lib/redmineとして説明します。

$ sudo mv redmine-2.1.2 /var/lib/redmine

以降、Redmineの配置先ディレクトリを$REDMINE_HOMEと表記します。

データベース接続を設定

$REDMINE_HOME/config/database.ymlを開きます。

$ vi /var/lib/redmine/config/database.yml

database.ymlを以下のように作成します。同ディレクトリにdatabase.yml.exampleがあるので、設定の参考にしてください。

production:
  adapter: mysql2
  database: db_redmine
  host: localhost
  username: user_redmine
  password: MySQLのパスワード
  encoding: utf8

メールサーバー接続を設定

$REDMINE_HOME/config/configuration.ymlを開きます。

$ vi /var/lib/redmine/config/configuration.yml

以下のように作成します。同ディレクトリにconfiguration.yml.exampleがあるので、設定の参考にしてください。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'example.com'

実際は、ご利用のメール環境に合わせて設定してください。また、configuration.ymlには、アップロードされたファイルの保管場所、データベース暗号化などの設定があります。詳細はconfiguration.ymlによるRedmineの設定をご覧ください。

tips: GMailのSMTPサーバーを利用する場合の設定

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :login
      user_name: "your_email@gmail.com"
      password: "your_password"

Gemパッケージをインストール

bundlerを使用して、Redmineで使用するGemを一括でインストールします。$REDMINE_HOME で以下のコマンドを実行します。

# bundle install --without development test postgresql sqlite

Redmineの初期設定とデータベースのテーブルを作成

セッションデータ暗号化用鍵の生成と、データベースのテーブルの作成を行います。$REDMINE_HOME で以下のコマンドを実行します。

# rake generate_secret_token
# RAILS_ENV=production rake db:migrate

Passengerをインストール

# gem install passenger --no-rdoc --no-ri

PassengerのApache用モジュールをインストール

# passenger-install-apache2-module

インストールが完了すると、Apacheに設定する内容が表示されます。以下の表示のLoadModuleからPassengerRubyの行までを控えておきます。表示内容は、passenger-install-apache2-module --snippetで後から確認することができます。

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.17
   PassengerRuby /usr/local/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Apacheを設定

Passengerを設定

Passengerの設定をApacheに追加します。httpd.confに直接追加すると紛らわしくなるので、別ファイルで設定します。/etc/httpd/conf.d/passenger.confを先ほど表示された内容を使用して作成します。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.17
PassengerRuby /usr/local/bin/ruby

設定したら、Apacheを起動します。ついでに、OS起動時にApacheが自動起動するように設定します。

$ sudo service httpd start
$ sudo chkconfig httpd on

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

ファイルオーナーを変更

Redmineの配置先ディレクトリのファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はapache)で読み書きできるよう、ファイルオーナーを変更します。

$ sudo chown -R apache:apache /var/lib/redmine

Redmine公開設定(サブディレクトリで公開)

ここでは、Redmineをサブディレクトリで公開する方法を説明します。

Apacheの公開ディレクトリに、$REDMINE_HOME に対するシンボリックリンクを作成します。シンボリックリンクの名前が、URLのディレクトリ名の部分になります。

$ sudo ln -s /var/lib/redmine/public /var/www/html/redmine

passenger.confに以下の設定を追加します。

RackBaseURI /redmine

tips: 説明元ページにはRailsBaseURIと記述されていますが、自分の環境ではInternal Server Errorになりました。詳細はPassenger error - PhusionPassenger::ClassicRails::ApplicationSpawner::Errorをご覧ください。

Apache設定に間違いが無いことを確認し、再起動します。

$ service httpd configtest
Syntax OK
$ sudo service httpd graceful

以上で、Redmineを動作させる設定は完了です。

インストール後は、Redmineを使い始めるための初期設定を参考にして初期設定を行います。

さて、次回はいよいよJRuby+Redmineをセットアップします。まずはTomcat無しで直接起動してみる予定です。