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
データベースとユーザ名、パスワードは先程のを設定
production:
adapter: mysql2
database: redminedb
host: localhost
username: redmineuser
password: 'redminepass'
encoding: utf8
アプリケーションの設定
vi config/configuration.yml
rmagick_font_path はyumでインストールしたフォントを設定
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に変更
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
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