AWSにRedmineを構築


AWS(t2.micro)にRedmine3以降を構築する際に、Rubyのバージョン、インストール時のメモリ不足と嵌ったのでメモ。

前提

  • Stable の最新を使う(2016.7.24時点の最新:Redmine3.3)
  • Amazon Linuxでシンプルに構築する
  • 構築済みのAMIは使用しない
  • 同じインスタンスないにデータベースも構築する
Application Version
Redmine 3.3
MySQL 5.6
Apache 2.4
Ruby 2.3

EC2インスタンスの作成

個人利用なので、無料枠で作成する。

  • AMI : Amazon Linux AMI 2016.03.3 (HVM), SSD Volume Type - ami-374db956
  • タイプ : t2.micro
  • セキュリティグループ : HTTP,HTTPS,SSH

インスタンスが作成できたら、SSHでログインし、yum update を実行する。

一時的なSWAP領域を作成する(ここでは1G、デフォルトのSwap領域は0KB)。
passenger-install-apache2-moduleでメモリ不足になる

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

DBとHTTPサーバのインストール

開発ツールのインストール

yum groupinstall "Development Tools"

Apache をインストール

yum install httpd24

MySQLのインストール
yumでインストール可能な最新は5.6

yum list available | grep mysql
yum install mysql56-server mysql56-devel

MySQLを起動して、rootパスワードを変更

service mysqld start
chkconfig mysqld on
# mysql -uroot
> update mysql.user set password=password('new-password') where user = 'root';
> flush privileges;
> exit;
# mysql -u root -p

DBの準備

以下の内容でRedmine用のデータベースとユーザを作成する
- DB : redmine_db
- USER : redmineuser
- PASS : password

CREATE DATABASE redmine_db default charset="utf8";
GRANT ALL PRIVILEGES ON redmine_db.* TO redmineuser@localhost IDENTIFIED BY 'password';

Rubyを2.3にする

Ruby2.3をインストールして、デフォルトの2.0は消す。

ruby -v
yum install ruby23 ruby23-devel
yum erase ruby20
ruby -v

rubyとgemのバージョンを確認

# ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux-gnu]
# gem -v
2.5.1

bundlerをインストールする。

gem install bundler --no-rdoc --no-ri

Redmineをインストール

ビルドに必要なパッケージをインストール。(一部はすでにインストール済)

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
curl -O https://www.redmine.org/releases/redmine-3.3.0.tar.gz
tar xzf redmine-3.3.0.tar.gz
mv redmine-3.3.0 /var/lib/redmine

データベース接続の設定

cd /var/lib/redmine
vi config/database.yml

データベースとユーザ名、パスワードは先程のを設定

database.yml
production:
  adapter: mysql2
  database: redminedb
  host: localhost
  username: redmineuser
  password: 'redminepass'
  encoding: utf8

アプリケーションの設定

vi config/configuration.yml

rmagick_font_path はyumでインストールしたフォントを設定

configuration.yml
production
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'example.com'

  rmagick_font_path: /usr/share/fonts/ipa-gothic/ipag.ttf

必要なgemをインストール

bundle install --without development test postgresql sqlite --path vendor/bundle

シークレットトークンを生成

bundle exec rake generate_secret_token

以下の警告がでるが、無視

expanded.rb:465: warning: key "inodot" is duplicated and overwritten on line 466

DBスキーマの作成

RAILS_ENV=production bundle exec rake db:migrate

/var/lib/redmineのオーナーをapacheに変更

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

Passengerモジュールをビルド

gem install passenger --no-ri --no-rdoc
passenger-install-apache2-module

コンパイルが終わったら、Apacheのモジュール設定を行う。

vi /etc/httpd/conf.modules.d/01-passenger.conf

コンパイルの終盤に出力された内容を設定する。

LoadModule passenger_module /usr/local/share/ruby/gems/2.3/gems/passenger-5.0.29/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/share/ruby/gems/2.3/gems/passenger-5.0.29
  PassengerDefaultRuby /usr/bin/ruby2.3
</IfModule>

Apacheの設定

vi /etc/httpd/conf.d/redmine.conf
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

Apacheの起動

service httpd start
chkconfig httpd on

参考