Redmine 2.5をCentOS 6.5にインストールする手順

2014-03-06 10:32  •  分類: ,

より新しいバージョンのRedmineのインストール記事があります。下記をご覧ください。

インストール直後のCentOS 6.5にRedmine 2.5をインストールする手順です。

本手順で作成される環境

本手順で作成される環境は以下のとおりです。

Redmine Redmine 2.5
OS CentOS 6.5
データベース MySQL 5.1.73
webサーバ Apache 2.2.15(Railsの実行にはPassengerを使用)
Ruby 2.0.0

システム構成を下図に示します。

CentOSの設定

SELinuxを無効にする

エディタで /etc/sysconfig/selinux を開き、 SELINUX の値を disabled に編集してください。

SELINUX=enforcing
↓
SELINUX=disabled

編集後、CentOSを再起動して下さい。

reboot

再起動後、 getenforce コマンドを実行してSELinuxが無効になったことを確認してください。 Disabled と表示されればSELinuxは無効になっています。

# getenforce
Disabled

iptablesでHTTPを許可

CentOS 6.4の初期状態ではiptables(ファイアウォール)が有効になっており、外部からサーバ上の80/tcpポート(HTTP)に接続することができません。クライアントのwebブラウザからアクセスできるようiptablesの設定を変更します。

エディタで /etc/sysconfig/iptables を開き、80/tcpへの接続を許可するための以下の記述を追加してください。追加位置は、22/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を再起動してください。

service iptables restart

必要なパッケージのインストール

Redmineを使用するにあたり、必要なパッケージのインストールを行います。

EPELリポジトリの登録

Rubyのビルドに必要なlibyamlをyumでインストールできるようにするために、EPEL(エンタープライズ Linux 用の拡張パッケージ)リポジトリを追加します。

まず、下記のページで最新の epel-release パッケージのURLを確認してください。

http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html

URLの確認方法は以下の画像を参考にしてください。

その後、以下のように rpm コマンドを実行してください。CentOSのyumリポジトリにEPELが追加されます。

rpm -Uvh epel-releaseパッケージのURL

yum repolist を実行して表示される一覧に「epel」が含まれていればEPELリポジトリが正しく追加されています。

yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * epel: epel.mirror.net.in
 * extras: mirror.fairway.ne.jp
 * updates: mirror.fairway.ne.jp
repo id          repo name                                                status
base             CentOS-6 - Base                                           6,367
epel             Extra Packages for Enterprise Linux 6 - x86_64           10,541<
extras           CentOS-6 - Extras                                            14
updates          CentOS-6 - Updates                                          581
repolist: 17,503

開発ツール(Cコンパイラ等)のインストール

yum groupinstall "Development Tools"

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

yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel

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

yum -y install mysql-server mysql-devel

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

yum -y install httpd httpd-devel

ImageMagickとヘッダファイル・日本語フォントのインストール

yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

ImageMagickと日本語フォントはガントチャートをPNG形式の画像にエクスポートする機能、添付ファイルのサムネイル画像を作成するのに使われます。これらのインストールを行わなくてもRedmineの実行は可能です。

Rubyのインストール

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

RubyのオフィシャルサイトのダウンロードページからRuby2.0の最新のソースコードをダウンロードしてください。

http://www.ruby-lang.org/ja/downloads/

curl -O http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz

Rubyのビルド

ダウンロードしたRubyのtarballを展開し、Rubyのビルドとインストールを行ってください。

tar zxvf ruby-2.0.0-p451.tar.gz 
cd ruby-2.0.0-p451
./configure --disable-install-doc
make
make install
cd ..

Redmine 2.5は2014年2月にリリースされたRuby 2.1には対応していません。必ずRuby 2.0をインストールしてください。

--disable-install-doc を指定するとRubyのドキュメントのインストールを省略でき、作業時間を短縮できます。

インストール後、 ruby -v を実行してRubyのバージョンを表示させ、インストールが完了したことを確認してください。

ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]

bundlerのインストール

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

gem install bundler --no-rdoc --no-ri
--no-rdoc --no-ri はドキュメントのインストールを省略するためのオプションです。
ファイル ~/.gemrc に以下の記述を行っておくとコマンドラインで明示的に指定しなくてもよくなり便利です。

gem: --no-ri --no-rdoc

MySQLの設定

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

エディタで /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

# 任意設定
innodb_file_per_table
query-cache-size=16M

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

[mysql]
default-character-set=utf8

MySQLの起動および自動起動の設定

service mysqld start
chkconfig mysqld on

/etc/my.cnf への設定が反映されていることの確認

MySQLのシステム変数 character_set_* のうち、 character_set_filesystemcharacter_sets_dir 以外の値がすべて utf8 になっていることを確認してください。

latin1 になっている項目があれば、 /etc/my.cnf の設定が正しいか確かめてください。

# mysql -uroot
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)

mysql> exit

rootユーザーのパスワード変更・匿名ユーザー削除ほかセキュリティ向上

MySQLのセキュリティ向上のために、初期設定ツール mysql_secure_installation を実行してrootパスワードの設定や不要なユーザー・データベースの削除を行います。

mysql_secure_installation
      :
    (中略)
      :
Enter current password for root (enter for none):   (そのままEnterキーを押す)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y
New password:   (MySQLのrootユーザーに新たに設定するパスワードを入力)
Re-enter new password:   (新パスワードを再入力)
Password updated successfully!
Reloading privilege tables..
 ... Success!
      :
    (中略)
      :
Remove anonymous users? [Y/n] y  (匿名ユーザーを削除)
 ... Success!
      :
    (中略)
      :
Disallow root login remotely? [Y/n] y  (rootユーザーの接続元をlocalhostに限定)
 ... Success!
      :
    (中略)
      :
Remove test database and access to it? [Y/n] y  (testデータベースを削除)
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
      :
    (中略)
      :
Reload privilege tables now? [Y/n] y  (これまでの変更を直ちに適用)
 ... Success!

MySQLのrootユーザーに設定した新パスワードは、今後MySQLにrootで接続してデータベースの管理操作を行うときに入力を求められます。

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

mysql -uroot -p
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine@localhost identified by '********';
mysql> flush privileges;
mysql> exit;

※ ******** の部分は任意のパスワードを設定してください。このパスワードは後述のdatabase.ymlの設定で使用します。

Redmineのインストール

Redmineのダウンロード

下記のページからRedmine 2.5のtarball(.tar.gz)をダウンロードしてください。

http://www.redmine.org/projects/redmine/wiki/Download

curl -O http://www.redmine.org/releases/redmine-2.5.0.tar.gz
tarballをダウンロードするのではなく次のようにSubversionリポジトリからソースコードを取得することもできます。

svn co http://svn.redmine.org/redmine/branches/2.5-stable /var/lib/redmine

Redmineの展開と配置

ダウンロードしたRedmineのtarballを展開してください。 redmine-2.5.0 というディレクトリが作成され、その下にRedmineを構成するファイル群が作成されます。

tar xvf redmine-2.5.0.tar.gz

Redmineの配置先のディレクトリを決定し、そこへ展開したファイルを移動してください。例えば、 /var/lib/redmine を配置先とする場合、以下のようにします。

mv redmine-2.5.0 /var/lib/redmine

データベースへの接続設定

Redmineからデータベースへ接続するための設定を記述したファイルを作成します。

以下の内容でRedmineのインストールディレクトリ(例: /var/lib/redmine)以下に config/database.yml を作成してください。

production:
  adapter: mysql2
  database: db_redmine
  host: localhost
  username: user_redmine
  password: ********
  encoding: utf8

※ ******** 部分は、MySQL上に作成したRedmineユーザーのパスワードです。
config/database.yml.example に設定例がありますので参考にしてください。

設定ファイル config/configuration.yml の作成

Redmineからメールサーバへ接続するための設定や日本語フォントファイルのパスを記述した設定ファイルを作成します。

以下の内容でRedmineのインストールディレクトリ以下に config/configuration.yml ファイルを作成してください。

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

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

example.com の部分は、Redmineを実行するサーバのFQDNとしてください。
config/configuration.yml.example に設定例がありますので参考にしてください。

configuration.yml ではアップロードされたファイルの保管場所や、データベースの暗号化なども設定できます。詳しくは configuration.yml によるRedmineの設定 をご覧ください。

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

アプリケーションが必要とするGemを一括してインストールできるツール、bundlerを使用してRedmineで使用するGemをインストールします。Redmineのインストールディレクトリで以下のコマンドを実行してください。

bundle install --without development test

Redmine 2.3より、bundlerは config/database.yml を参照して適切なデータベースアダプタをインストールするようになりました。 2.2までのように --without オプションで使用しないデータベースアダプタを指定する必要はなくなりました。

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

セッションデータ改竄防止用鍵の生成とテーブル作成を行います。Redmineのインストールディレクトリで以下のコマンドを実行してください。

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

Passengerのインストール

Apache上でRedmineなどのRailsアプリケーションの実行に必要なPhusion Passengerをインストールします。

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

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

インストーラを実行し画面の指示に従って操作してください。

passenger-install-apache2-module

インストールが完了すると以下のように表示されます。太字の部分はApacheに設定すべき内容なので控えておきます。表示される設定情報は 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!

Press ENTER to continue.
太字の部分は環境により異なります。上記設定はあくまでも例ですのでそのまま転記して使用せず、必ずインストール作業中に表示された設定か passenger-install-apache2-module --snippet により表示されたものを使用してください。

Apacheの設定

Passengerの設定を追加

Passengerの設定をApacheに追加します。 /etc/httpd/conf/httpd.conf に直接追加してもよいですが、管理しやすいようPassenger関係の設定は別ファイルにまとめます。

以下の内容で /etc/httpd/conf.d/passenger.conf を作成してください。

# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
#
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

# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくはPhusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)をご覧ください。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0

Apacheの起動および自動起動の設定

service httpd start
chkconfig httpd on

Apache上のPassengerでRedmineを実行するための設定

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

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

どのような形態(URL)でRedmineを利用するかによって設定が異なります。三つのパターンを例に挙げます。

パターン1: webサーバをRedmine専用として使用

webサーバのルートディレクトリでRedmineを実行するための設定です。「http://サーバIPアドレスまたはホスト名/」でRedmineにアクセスできます。

エディタで /etc/httpd/conf/httpd.conf を開き DocumentRoot をRedmineのpublicディレクトリ(例: /var/lib/redmine/public )に変更してください。

DocumentRoot "/var/www/html"
↓
DocumentRoot "/var/lib/redmine/public"

設定変更後、Apacheを再起動してください。

/etc/init.d/httpd configtest
/etc/init.d/httpd graceful

パターン2: サブディレクトリでRedmineを実行

URLのサブディレクトリでURLにアクセスできるように設定します。同じサーバでRedmine以外のアプリケーションを実行する場合や、複数のRedmineを実行する場合に便利な設定です。

シンボリックリンクの作成

Apacheの DocumentRoot に指定されているディレクトリ(通常は /var/www/html )に、Redmineのpublicディレクトリ(例: /var/lib/redmine/public)に対するシンボリックリンクを作成します。シンボリックリンクの名称は、URLのディレクトリ名部分で使いたい名前(例:redmine)にしてください。

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

Apacheへの設定追加

Apacheの設定ファイル(/etc/httpd/conf/httpd.conf)もしくは前述の手順で作成したPassengerの設定ファイル(/etc/httpd/conf.d/passenger.conf)などに以下の設定を追加します。

RackBaseURI /redmine

設定後、Apacheを再起動してください。

service httpd configtest
service httpd graceful

パターン3: バーチャルホストでRedmineを実行

特定のバーチャルホストでRedmineを実行する設定です。Apacheに以下の設定を追加します。

NameVirtualHost *:80

...

<VirtualHost *:80>
    ServerName www.example.jp
    DocumentRoot /var/lib/redmine/public
</VirtualHost>

設定後、Apacheを再起動してください。

/etc/init.d/httpd configtest
/etc/init.d/httpd graceful

インストール完了後の初期設定

インストールが完了しwebブラウザ経由でRedmineにアクセスできる状態になったら、日本語環境で使うための設定変更やユーザーの追加・プロジェクトの追加などを行います。

インストール後の初期設定手順については以下をご覧ください。

作成: 2014-03-06 10:32  •  分類: ,