Redmine 3.0をCentOS 7.0にインストールする手順

2015-03-12 12:30  •  分類: ,

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

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

本手順で作成される環境

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

Redmine Redmine 3.0.0
OS CentOS 7.0
データベース MariaDB 5.5.40
webサーバ Apache 2.4.6(Railsの実行にはPassengerを使用)
Ruby 2.2.1

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

MariaDBはMySQLからフォークした、MySQLと互換性を持つデータベースです。CentOS 7ではMySQLに代わりMariaDBがパッケージに含まれるようになりました。

CentOSの設定

SELinuxを無効にする

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

SELINUX=enforcing
↓
SELINUX=disabled

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

reboot

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

getenforce
Disabled

firewalldでHTTPを許可

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

デフォルトzoneにhttpを追加する:

firewall-cmd --zone=public --add-service=http --permanent
success

追加した設定を反映:

firewall-cmd --reload
success

httpでのアクセスが許可されたか確認する

firewall-cmd --zone=public --list-services
dhcpv6-client http ssh

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

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

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

yum -y groupinstall "Development Tools"

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

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

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

yum -y install mariadb-server mariadb-devel

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

yum -y install httpd httpd-devel

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

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

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

Rubyのインストール

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

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

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

curl -O http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz

Rubyのビルド

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

tar xvf ruby-2.2.1.tar.gz
cd ruby-2.2.1
./configure --disable-install-doc
make
make install
cd ..

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

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

ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

bundlerのインストール

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

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

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

MariaDBの設定

デフォルトキャラクタセットを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
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

character-set-server=utf8

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

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[mysql]
default-character-set=utf8

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

service mariadb start
systemctl enable mariadb

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

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

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

# mysql -uroot
MariaDB [(none)]> 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)

MariaDB [(none)]> exit

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

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

mysql_secure_installation
/usr/bin/mysql_secure_installation: 行 379: find_mysql_client: コマンドが見つかりません

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

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 MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:  (MariaDBのrootユーザーに新たに設定するパスワードを入力)
Re-enter new password:  (新パスワードを再入力)
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  (匿名ユーザーを削除)
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  (rootユーザーの接続元をlocalhostに限定)
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  (testデータベースを削除)
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  (権限関係の変更を直ちに適用)
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

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

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

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

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

Redmineのインストール

Redmineのダウンロード

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

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

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

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

Redmineの展開と配置

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

tar xvf redmine-3.0.0.tar.gz

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

mv redmine-3.0.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

※ ******** 部分は、MariaDB上に作成した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 --path vendor/bundle

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

Redmineの初期設定と初期データ登録

Redmine動作に関する初期設定と初期データの登録を行います。下記のコマンドはRedmineのインストールディレクトリで実行してください。

セキュリティトークン作成

セッションデータ改竄防止用鍵の生成を行います。

bundle exec rake generate_secret_token

データベースのテーブル作成

config/database.yml で指定したデータベースにテーブルを作成します。

RAILS_ENV=production bundle exec rake db:migrate

初期データの登録

作成したテーブルにデフォルトデータのロードを行います。

RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

デフォルトデータの登録はRedmine起動後、管理画面から実行することも可能です。プロジェクトを作成する前に実行してください。
参考: デフォルトデータのロード — Redmine.JP
上記コマンドを実行した場合は、画面からの実行は不要です。

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/2.2.0/gems/passenger-5.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.2
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>


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 に直接追加してもよいですが、管理しやすいようRedmine関係の設定は別ファイルに分離します。

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

# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
#
LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.2
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

# 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 864000
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
PassengerFriendlyErrorPages off

CentOSではApache起動時に /etc/httpd/conf.d/*.conf が自動的に読み込まれます。

RedmineのCSSや画像へのアクセスを許可

Apache 2.4のデフォルト設定ではサーバ上の全ファイルへのアクセスが禁止されています。このままではRedmineの画像・CSS・JavaScript等をブラウザで読み込むことができないので、ファイルが格納されているディレクトリへのアクセスを許可します。

先ほど作成した /etc/httpd/conf.d/redmine.conf に以下の内容を追記してください。

<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

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

service httpd start
systemctl enable httpd

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を再起動してください。

service httpd configtest
service httpd restart

パターン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)もしくは前述の手順で作成したRedmine関係のApacheの設定ファイル(/etc/httpd/conf.d/redmine.conf)などに以下の設定を追加します。

RackBaseURI /redmine

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

service httpd configtest
service httpd restart

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

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

NameVirtualHost *:80

...

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

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

service httpd configtest
service httpd restart

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

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

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

作成: 2015-03-12 12:30  •  分類: ,