Redmine 1.1をCentOS5.5にインストールする手順
インストール直後のCentOS5.5にRedmine1.1.2をインストールする手順を説明します。
想定環境
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コンパイラ等):
# yum groupinstall "Development Tools"
RubyとPassengerのビルドに必要なヘッダファイルなど:
# yum install openssl-devel readline-devel zlib-devel curl-devel
MySQLとヘッダファイル:
# yum install mysql-server mysql-devel
Apacheとヘッダファイル:
# 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
2. インストーラ実行
ダウンロードした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
2. MySQLの起動および自動起動の設定
# /etc/init.d/mysqld start # chkconfig mysqld on
3. /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/ | +--------------------------+----------------------------+
4. 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;
5. 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
2. ダウンロードした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
3. 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ユーザーのパスワードです。
4. email.ymlの設定
以下の内容でconfig/email.ymlファイルを作成します。
production: delivery_method: :smtp smtp_settings: address: localhost port: 25 domain: host.example.jp
※host.example.jpの部分は、Redmineを実行するサーバのFQDNとしてください。
5. Redmineの初期設定とデータベースのテーブル作成
セッションデータ暗号化用鍵の生成とテーブル作成を行います。
# 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に変更します。
/etc/sysconfig/httpd:
HTTPD=/usr/sbin/httpd.worker
2. 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
3. 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
2. 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に以下の設定を追加します。
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にアクセスできる状態になったら、日本語環境で使うための設定変更やユーザーの追加・プロジェクトの追加などを行います。
インストール後の初期設定手順については以下をご覧ください。
- Redmineを使い始めるための初期設定 (Redmine.JP)