Table Of Contents

Previous topic

Welcome to Redmine Memo’s documentation!

Next topic

redmine で OpenID を利用する

This Page

インストール直後のCentOS5.5にRedmine1.1.2をインストールする手順

Note

参照および引用元

インストール直後のCentOS5.5にRedmine1.1.2をインストールする手順

からごっそり引用 (汗

CentOS 5.6 に redmine をインストールした手順です。

基本、参考にした インストール直後のCentOS5.5にRedmine1.1.2をインストールする手順 と全く一緒ですが、 元Sourceが消えると困るので、ごっそり引用させていただきました。

以下罫線より引用開始

想定環境

  • Redmineバージョン 1.1.2
  • OS CentOS 5.5
  • データベース MySQL
  • webサーバ Apache (Railsの実行にはPassengerを使用)

Redmineを実行するのに必要なもの

RedmineはRubyによるwebアプリケーションフレームワークRuby on Railsで記述されています。従って、Redmineを利用するためにはRuby on Railsのアプリケーションが実行できる環境を構築する必要があります。

そのために本手順書では次のものをインストールします。

Apache (webサーバ) Passenger (Ruby on RailsアプリケーションをApache上で実行するためのモジュール) Ruby Enterprise Edition (Passengerとの組み合わせでメモリを効率よく利用できるよう変更が加えられたRubyインタプリタ)

CentOSの設定

SELinuxを無効にする

/etc/sysconfig/selinux 開き、 SELINUX の値を disabled に変更後、CentOSを再起動してください。

SELINUX=disabled

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

# getenforce
Disabled

iptablesでHTTPを許可

CentOS 5.5をインストールした直後の状態ではiptables(ファイアウォール)が有効になっており、外部からサーバ上の80/tcpポート(HTTP)に接続することができません。このままではwebサーバを立ち上げてもクライアントから接続することができませんので、iptablesの設定を変更します。

/etc/sysconfig/iptables を開き、80/tcpへの接続を許可するための以下の記述を追加してください。追加位置は、22/tcpへの許可している同様の記述(以下の記述の80の部分が22になったもの)の直後としてください。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

設定が終わったらiptablesを再起動します。

# /etc/init.d/iptables restart

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

開発ツール(Cコンパイラ等): .. code-block:: bash

# yum groupinstall “Development Tools”

RubyとPassengerのビルドに必要なヘッダファイルなど: .. code-block:: bash

# yum install openssl-devel readline-devel zlib-devel curl-devel

MySQLとヘッダファイル: .. code-block:: bash

# yum install mysql-server mysql-devel

Apacheとヘッダファイル: .. code-block:: bash

# yum install httpd httpd-devel

Rubyのインストール

本手順ではPassengerの開発元であるPhusionが開発しているRuby Enterprise Editionをインストールします。

Ruby Enterprise EditionはRuby 1.8.7をベースに変更を加えたもので、オリジナルのRubyと比較すると、Passenger上でRuby on Railsアプリケーションを実行する際にメモリ使用量を減らせるというメリットがあります。

  1. Ruby Enterprise Editionのダウンロード

http://www.rubyenterpriseedition.com/download.html

  1. インストーラ実行

ダウンロードしたtarballを展開して installer を実行します。以下のコマンド例においてinstallerが格納されているディレクトリはRuby Enterprise Editionのバージョンによって変わります。適宜読み替えて実行してください。

# ./ruby-enterprise-1.8.7-2011.03/installer --dont-install-useful-gems --no-dev-docs

インストーラーオプション:

--dont-install-useful-gems
 後の手順でRedmineに必要なgemパッケージを手動でインストールするのでここではインストールしません
--no-dev-docs 不要なので開発者向けドキュメントをインストールしません

インストーラを実行すると、Ruby Enterprise Editionをビルドするのに必要なソフトウェアがOSにインストールされているか確認が行われます。不足しているものがあるとエラーが表示され先に進めません。前述の「必要なパッケージのインストール」を実行していれば、エラーが発生することなく先に進めるはずです。

Checking for required software...

 * C compiler... found at /usr/bin/gcc
 * C++ compiler... found at /usr/bin/g++
 * The 'make' tool... found at /usr/bin/make
 * The 'patch' tool... found at /usr/bin/patch
 * Zlib development headers... found
 * OpenSSL development headers... found
 * GNU Readline development headers... found

依存するソフトウェアのチェックが終わると、インストール先(Target Directory)の入力を求められます。デフォルトのインストール先は”/opt/ruby-enterprise-1.8.7-2011.03/“などですが、”/usr/local/”と入力すれば、オリジナルのRubyをビルドしたときと同様に/usr/local/以下にインストールされます。

Target directory

Where would you like to install Ruby Enterprise Edition to?
(All Ruby Enterprise Edition files will be put inside that directory.)

[/opt/ruby-enterprise-1.8.7-2011.03] : /usr/local/

RubyGems1.4.2のインストール

Ruby Enterprise Editionと共にインストールされるRubyGems1.5.2ではRedmineが実行できないのでRubyGemsを1.4.2にダウングレードします。

# gem update --system 1.4.2

RubyGems 1.4.2 installed と表示されたらRubyGemsのバージョンを確認します。

# gem --version
1.4.2

1.4.2と表示されれば正常にインストールが完了しています。

なおRubyGem 1.4.2以外の場合は以下のようなエラーが表示されます。

RubyGem 1.6.2の場合:

[root@localhost redmine]# rake generate_session_store
(in /var/lib/redmine)
rake aborted!
uninitialized constant ActiveSupport::Dependencies::Mutex
/var/lib/redmine/Rakefile:10
(See full trace by running task with --trace)

RubyGem 1.5.2の場合:

[root@localhost redmine]# rake db:migrate RAILS_ENV=production
(in /var/lib/redmine)
rake aborted!
undefined local variable or method `version_requirements' for #<Rails::GemDependency:0x820eb28>

(See full trace by running task with --trace)

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

Redmineを実行するために必要なgemパッケージをインストールします。gemパッケージとは、Rubyのプログラムやライブラリを配布するための仕組みです。Redmineを実行するために必要なRubyのライブラリもgemパッケージとして配布されています。

Rack 1.0.1のインストール

Redmine1.1を実行するにはRack 1.0.1が必要です。最新版のRackではRedmineを実行できませんので必ず1.0.1をインストールしてください。

# gem install rack -v=1.0.1

Rackの最新版しかインストールされていない状態では、後の手順で以下のようなエラーが表示されます。

# rake db:migrate RAILS_ENV=produciton
(in /var/lib/redmine)
rake aborted!
RubyGem version error: rack(1.2.2 not ~> 1.0.1)

i18n 0.4.2のインストール

Rubyアプリケーションを国際化対応させるgemパッケージをインストールします。他のバージョンではRedmineの画面の一部がうまく表示できなかったりApacheにエラーログが記録されるなどの不具合がありますので正しく動作するi18n 0.4.2をインストールします。

# gem install i18n -v=0.4.2

Ruby用MySQLドライバーのインストール

RubyからMySQLにアクセスするためのgemパッケージ”MySQL”をインストールします。

# gem install mysql

MySQLの設定

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

/etc/my.cnfの [mysqld] セクション、 [mysql] セクション にそれぞれ default-character-set=utf8 を追加してください。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
innodb_file_per_table
query-cache-size=16M
default-character-set=utf8

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

[mysql]
default-character-set=utf8
  1. MySQLの起動および自動起動の設定
# /etc/init.d/mysqld start
# chkconfig mysqld on
  1. /etc/my.cnf への設定が反映されていることの確認

MySQLのシステム変数character_set_client, character_set_connection, character_set_database, character_set_results, character_set_server, character_set_systemの値がutf8になっていることを確認してください。

latin1になっている項目があれば、my.cnfの設定が正しいか、MySQLの再起動を行ったか確かめてください。

# 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/ |
+--------------------------+----------------------------+
  1. rootユーザーのパスワード変更・匿名ユーザー削除
# mysql -uroot
mysql> use mysql;
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> exit;
  1. Redmine用データベースとユーザーの作成
# mysql -uroot -p
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine identified by '********';
mysql> flush privileges;
mysql> exit;

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

Redmineのインストール

  1. Redmineのダウンロード

下記URLからRedmineの最新版のtarball(.tar.gz)をダウンロードします。

http://rubyforge.org/frs/?group_id=1850

  1. ダウンロードしたRedmineの展開と配置

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

# tar zxvf redmine-1.1.2.tar.gz

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

# mv redmine-1.1.2 /var/lib/redmine
  1. database.ymlの設定

Redmineを配置したディレクトリに移動します。

# cd /var/lib/redmine

以下の内容でconfig/database.ymlファイルを作成します。

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

**** 部分は、MySQL上に作成したRedmineユーザーのパスワードです。

  1. email.ymlの設定

以下の内容でconfig/email.ymlファイルを作成します。

production:
  delivery_method: :smtp
  smtp_settings:
    address: localhost
    port: 25
    domain: host.example.jp

※host.example.jpの部分は、Redmineを実行するサーバのFQDNとしてください。

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

セッションデータ暗号化用鍵の生成とテーブル作成を行います。[#f1]_

# rake generate_session_store
# rake db:migrate RAILS_ENV=production

Passengerのインストール

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

# gem install passenger

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

インストーラを実行し画面の指示に従って操作します。

# passenger-install-apache2-module

途中でApacheに設定すべき内容が表示されますので控えておきます。表示される設定情報は passenger-install-apache2-module –snippet を実行して後で参照することもできます。

Apacheの設定

  1. worker MPMに切り替える

高速化とメモリの節約のために、ApacheのMPMをデフォルトのprefork MPMからworker MPMに変更します。 [2]

/etc/sysconfig/httpd:

HTTPD=/usr/sbin/httpd.worker
  1. Passengerの設定を追加

/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.8/gems/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.5
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のチューニングのための設定を追加。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
  1. Apacheの起動および自動起動の設定
# /etc/init.d/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にアクセスできます。

ApacheのDocumentRootをRedmineのpublicディレクトリ(例: /var/lib/redmine/public)に変更してください。

/etc/httpd/conf/httpd.conf:

DocumentRoot "/var/lib/redmine/public"

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

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

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

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

以下は、「http://サーバIPアドレスまたはホスト名/redmine/」でアクセスできるようにする場合の設定例です。

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

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

# ln -s /var/lib/redmine/public /var/www/html/redmine
  1. Apacheへの設定追加

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

RailsBaseURI /redmine

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

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

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

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

NameVirtualHosts *:80

...

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

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

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

以上で引用終了

/etc/httpd/conf.d/passenger.conf

私の passenger.conf は以下のようになった

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

# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
#
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.5
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のチューニングのための設定を追加。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0

httpd起動時のPHP Warning

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/dbase.so' - /usr/lib64/php/modules/dbase.so: undefined symbol: core_globals in Unknown on line 0

がhttpdのerror_logに出る。

その後、pacheのMPMをデフォルトのprefork MPMからworker MPMに変更した事が原因だと判りました。 [2]

脚注

[1]手順にはないが、 gem install rake を事前に実行してrakeをインストールしておく必要がある。
[2](1, 2) CentOSでは、worker MPMを採用した場合、phpのモジュール群を再ビルドする必要がある場合がある。詳細は CentOSの php と httpd.worker 参照。