ページ

2014/07/16

さくらのVPSのCentOS6でRedmineを動かす

規模が大きくて長期のイベントとかあると
やっぱり課題管理システムとして Redmine とか欲しいなって思います。
開発者じゃなくても使えそうで
自分が使ったことがあるというところで
Redmine を使うことにしました。

参考
[Linux]さくらVPSのCentOSにRedmineをインストール - daybreaksnow's diary
Redmine 2.5をCentOS 6.5にインストールする手順 | Redmine.JP Blog

CentOS の設定

SELinux の無効化

さくらのVPSでは SELinux はデフォルトで無効化されています。
無効化されていない場合は以下のように無効化します。
sudo vim /etc/sysconfig/selinux
-SELINUX=enforcing
+SELINUX=disabled
再起動して設定を反映
sudo reboot
無効化されていることの確認
getenforce
# Disabled

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

Redmine を使用するにあたって必要なパッケージをインストールします。

EPELリポジトリの登録

Ruby のビルドに必要な libyaml を yum でインストールできるようにするために
EPEL(Extra Packages for Enterprise Linux)リポジトリを追加します。
http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html
上記のページで Packages の最新のURLをコピー、以下のコマンドのように実行します。
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# パッケージ epel-release-6-8.noarch は既にインストールされています。
さくらのVPSではインストール済みでした。

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

sudp yum groupinstall "Development Tools"
# No packages in any requested group available to install or update

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

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

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

sudo yum -y install mysql-server mysql-devel

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

sudo yum -y install httpd httpd-devel

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

sudo 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-p481.tar.gz
Redmine 2.5 は 2014 年 2 月にリリースされた Ruby 2.1 には対応していません。
必ず Ruby 2.0 をインストールしてください。

Ruby のビルド

ダウンロードした Ruby の tarball を展開し、Ruby のビルドとインストールを行ってください。
tar zxvf ruby-2.0.0-p481.tar.gz
cd ruby-2.0.0-p481
sudo ./configure --disable-install-doc
sudo make
sudo make install
cd ..
--disable-install-doc を指定すると Ruby のドキュメントのインストールを省略でき、作業時間を短縮できます。
ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

Bundler のインストール

Redmine が使用する Gem を一括インストールするための Bundler というツールをインストールします。
sudo su -
gem install bundler --no-rdoc --no-ri
exit
以下のページの事象が発生して悲しくなります。
参考: とっとこ駆け出しエンジニアぶろぐ: Cent OS 6系でsudo時に環境変数PATHが引き継がれない

MySQL の設定

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

sudo vim /etc/my.cnf
[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 の起動および自動起動の設定

sudo service mysqld start
sudo chkconfig mysqld on

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

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)
mysql> exit

MySQL のセキュリティ初期設定

  • root ユーザーのパスワード変更
  • 匿名ユーザー削除
  • リモートからの root ログインの禁止
  • test データベースの削除
  • 設定の反映
mysql_secure_installation
...
Enter current password for root (enter for none): [Enter]
...
Set root password? [Y/n] y
New password: [MySQL Password]
Re-enter new password: [MySQL Password]
...
Remove anonymous users? [Y/n]: y
...
Disallow root login remotely? [Y/n]: y
…
Remove test database and access to it? [Y/n]: y
...
Reload privilege tables now? [Y/n]: y

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

mysql -uroot -p
mysql> create database redmine default character set utf8;
mysql> grant all on redmine.* to redmine@localhost identified by '********';
# ******** は redmine ユーザのパスワード。 Redmine の設定で使います。
mysql> flush privileges;
mysql> exit;

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.1.tar.gz

Redmine の展開と配置

tar xvf redmine-2.5.1.tar.gz
sudo mv redmine-2.5.1 /var/lib/redmine

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

sudo vim /var/lib/redmine/config/database.yml
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: ******** # MySQL の redmine ユーザのパスワード
  encoding: utf8

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

sudo vim /var/lib/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
詳しい設定方法については configuration.ymlの設定項目 — Redmine.JP を参照。
通知メールを Gmail から送信する設定について書きました。↓
Redmine の通知メールを Gmail で送信する設定 | DevAchieve

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

sudo su -
cd /var/lib/redmine
bundle install --without development test

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

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

Passenger のインストール

Apache 上で Redmine などの Rails アプリケーションの実行に必要な Passenger をインストールします。
gem install passenger --no-rdoc --no-ri

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

passenger-install-apache2-module
インストール後に Apache の設定ファイルに記述すべき内容が表示されます。
また、以下のコマンドで確認することができます。
passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
上記は環境によって異なるので上のコマンドの実行結果を使用して下さい。
exit

Apache の設定

Passenger の設定を追加

sudo vim /etc/httpd/conf.d/passenger.conf
# Passengerの基本設定
    # passenger-install-apache2-module --snippet を実行して表示される設定を使用
    LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
    
      PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45
      PassengerDefaultRuby /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

    # シンボリックリンクを有効にする
    PassengerResolveSymlinksInDocumentRoot on
参考: [Redmine Rails] Passenger がシンボリックリンクを解決してくれない | Javable.Jp
Apache の再起動
sudo service httpd restart

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

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

Redmine を VirtualHost で動かすための設定

sudo vim /etc/httpd/conf/httpd.conf
-#NameVirtualHost *:80
+NameVirtualHost *:80
sudo mkdir -p /var/www/vhosts/redmine.wada811.at/
sudo ln -s /var/lib/redmine/public/ /var/www/vhosts/redmine.wada811.at
sudo vim /etc/httpd/conf.d/redmine.wada811.at.conf
<VirtualHost *:80>
  ServerName redmine.wada811.at
  DocumentRoot /var/www/vhosts/redmine.wada811.at
  <Directory "/var/www/vhosts/redmine.wada811.at">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  ErrorLog /var/log/httpd/redmine.wada811.at-error_log
  CustomLog /var/log/httpd/redmine.wada811.at-access_log combined
</VirtualHost>
sudo /etc/init.d/httpd graceful
sudo service httpd restart
ドメインを取っていないので Hosts ファイルに追加
sudo sh -c "echo 'IP.ADD.RE.SS  redmine.wada811.at' >> /etc/hosts"

参考
Apache のバーチャルホストで Redmine を動作させる 〜 CentOS6 | EasyRamble

Redmine が動きました!

というわけでここまでです。
あとは Redmine のユーザ作成などの初期設定です。
Redmineを使い始めるための初期設定 — Redmine.JP