前提
- Redmine 3.3 を使いたい
- Amazon Linux でシンプルに & できるだけ yum を使って済ませたい
Redmine の入った AMI が配布されてますが、Redmine 3.3 で Amazon Linux のは無いようなので (2016-06-19 時点) 、自分で作ります。
ここでは
- データベースに RDS の MySQL 5.6 を使います。
- Apache 2.4 + Passenger を使います。
- Ruby もできるだけ新しく 2.3 を使います。
以下コマンドはすべて root です。
EC2 インスタンス を準備する
Amazon Linux の GP2 な AMI からインスタンスを作ります。
(執筆時点で amzn-ami-hvm-2016.03.2.x86_64-gp2 )
お忘れなく
yum update
t2.nano とかでも Redmine は動きますが、メモリが少ないとコンパイル時にエラーになりますので、場合によっては一時的にスワップを作ります。
例えば
dd if=/dev/zero of=/tmp/swap.img bs=1M count=1024
chmod 600 /tmp/swap.img
mkswap /tmp/swap.img
swapon /tmp/swap.img
free
Apache HTTP Server と MySQL クライアント入れておきます。
DB 関係の作業を他のところから行うのであれば、MySQL クライアントは入れなくていいです。
yum install httpd24 mysql56
Ruby を 2.3 にする
Ruby 2.3 をインストールします。
デフォルトで入っている 2.0 は消しておきます。
yum install ruby23 ruby23-devel
yum erase ruby20
bundler をインストールします。
gem install bundler --no-rdoc --no-ri
RDS インスタンスを準備する
RDS のインスタンスを用意しておきます。
接続して、Redmine用のデータベースとユーザーを作ります。
mysql -u your_master_user -p -h your-instance-id.************.ap-northeast-1.rds.amazonaws.com
mysql> CREATE DATABASE redmine_db CHARACTER SET utf8;
mysql> CREATE USER redmine_user@'%' IDENTIFIED BY 'your password';
mysql> GRANT ALL PRIVILEGES ON redmine_db.* TO redmine_user@'%';
utf8mb4 にしようとすると色々改造が必要なので今回はパスします。
Redmine を組み立てる
ビルドに必要なパッケージをそろえます。
yum install make gcc gcc-c++ automake autoconf
yum install zlib-devel libcurl-devel openssl-devel httpd24-devel apr-devel apr-util-devel mysql56-devel
yum install ImageMagick ImageMagick-devel ipa-gothic-fonts
Redmine のパッケージを展開します。
cd /usr/local/src
wget https://www.redmine.org/releases/redmine-3.3.0.tar.gz
tar xzf redmine-3.3.0.tar.gz
chown -R root:root redmine-3.3.0
mv redmine-3.3.0 /var/lib/
cd /var/lib
ln -s redmine-3.3.0 redmine
cd redmine
データベース接続の設定を行います。
cp config/database.yml.example config/database.yml
vim config/database.yml
production:
adapter: mysql2
database: redmine_db
host: your-instance-id.************.ap-northeast-1.rds.amazonaws.com
username: redmine_user
password: 'your password'
encoding: utf8
アプリケーションの設定を行います。
cp config/configuration.yml.example config/configuration.yml
vim config/configuration.yml
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: 'your smtp server'
port: 587
authentication: :cram_md5
domain: 'your helo domain'
user_name: 'your account'
password: 'your password'
rmagick_font_path: /usr/share/fonts/ipa-gothic/ipag.ttf
必要な gem をインストールします。
今回は MySQL を使用するのでこのようになります。
bundle install --without development test postgresql sqlite --path vendor/bundle
シークレットトークンを生成します。
bundle exec rake generate_secret_token
執筆時点 (2016-06-19) では
.../gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot"
rake を実行するとこのような警告が出ますが、動作に影響ないようなので無視します。以下同様。
参考: https://nazx.jp/x/CentOS_TIPS_010
データベース
DBスキーマの導入とデフォルトデータのロードを行います。
ここでは REDMINE_LANG=ja
を指定して日本語用のデータを入れます。
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
ファイルシステム
ファイル書き込みが行われる部分についてオーナーの設定をします。
chown -R apache:apache files log tmp public/plugin_assets
パーミッションはすでに 775 などになっているかと思います。
ログローテーション
ここでは logrotate を使います。
vim /etc/logrotate.d/redmine
一例として
/var/lib/redmine/log/*.log {
weekly
rotate 53
missingok
dateext
copytruncate
compress
}
Passenger
Passenger モジュールをビルドします。
gem install passenger --no-ri --no-rdoc
passenger-install-apache2-module
選択肢で Ruby を選んだら環境チェックが始まります。 もう一度 Enter でコンパイルが始まります。
成功すると最後に httpd 用の設定 ( LoadModule 等) が出力されますので、それをコピーして設定ファイルを作ります。
vim /etc/httpd/conf.modules.d/01-passenger.conf
執筆時の例
LoadModule passenger_module /usr/local/share/ruby/gems/2.3/gems/passenger-5.0.28/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/ruby/gems/2.3/gems/passenger-5.0.28
PassengerDefaultRuby /usr/bin/ruby2.3
PassengerDefaultUser apache
</IfModule>
出力された内容に PassengerDefaultUser
を足しました。
Apache 設定
Apache HTTP Server の設定を行います。
ここでは /redmine
という URL パスで利用すると仮定します。
vim /etc/httpd/conf.d/redmine.conf
RailsBaseURI /redmine
<Directory /var/lib/redmine/public>
AllowOverride none
Require all granted
</Directory>
cd /var/www/html
ln -s /var/lib/redmine/public redmine
その他、ServerName 、Options 、LoadModule 、MPM チューニング等、httpd を適切に設定します。
httpd を自動起動させたければ
chkconfig httpd on