• AWS Summit Tokyo 2014 ~「あなた」のクラウドがここに ~

Amazon EC2上にRedmineをインストールしてみた

Amazon EC2

渡辺です。

これでもかというくらいインストールが面倒なRedmineですが、AWS上でもやはり面倒でした。 というわけで、Redmine 2.5をCentOS 6.5にインストールする手順を参考に、Amazon Linux(Amazon Linux AMI 2014.03.1)にRedmineをインストールしてみたのでまとめておきます。 バージョンが変わるとそのままでは動かなくなると思いますが、参考にしてみてください。

概要

今回はスタンドアローンで運用できるように、MySQLも同じインスタンスにインストールします。

構成はこんな感じです。

NameVersionInstall
Apache2.2.27yum
Ruby2.0Pre Installed
Redmine2.5.1download
Passenger4.0.45gem
MySQL5.5.1yum

なるべく簡単にインストールしたいので、可能な限りyumやインストール済のソフトウェアを利用する方針です。

EC2のセットアップ

SSHとHTTP(s)を許可するセキュリティグループを設定し、EC2インスタンスを起動します。 インスタンスタイプはとりあえずm1.smallとしました。 必要に応じて後からスケールアップできるのはEC2の楽な所ですね。

起動したならば、SSHでログインし、ec2-userでセットアップします。

Apacheのセットアップ

Apacheをインストールします。

$ sudo yum install httpd

Apacheは後ほどPassengerと連携する設定を行うので、とりあえずこのまま進みましょう。

MySQLのセットアップ

今回はスタンドアローンで構成したいので、yumでインストールします。 デフォルトでインストールできるMySQL 5.5を利用しました。

$ sudo yum install mysql-server mysql-devel

インストールしたならば、/etc/my.cnfを編集し、文字コードを設定します。 [mysqld]character-set-server=utf8を、 [mysql]default-character-set=utf8を設定してください。

Railsのセットアップ時にMySQLが起動している必要があるので、ここで起動しておきます。

$ sudo service mysqld start
$ sudo chkconfig mysqld on

最後にRedmine用のデータベースと接続ユーザを作成しておきます。

$ mysql -uroot
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine@localhost identified by 'changeit';

必要に応じて、rootユーザのパスワード設定や匿名ユーザを無効にしてください。

Rubyのセットアップ

Amazon LinuxにはデフォルトでRuby2.0がインストールされているので、そのまま利用します。

$ ruby —v
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]
$ gem -v
2.0.14

Redmineのセットアップ

Redmineをインストールしていきますが、はじめにgccなど必要なツール類をyumでインストールしておきましょう。

$ sudo yum groupinstall "Development Tools"
$ sudo yum --enablerepo=epel install ruby-devel mysql-devel ImageMagick ImageMagick-devel ipa-gothic-fonts

PDF化や画像化などの処理で利用するIPAフォントはepelリポジトリに含まれています。

bundlerのインストール

Redmineのセットアップに必要なbundlerをgemでインストールします。

$ gem install bundler --no-rdoc --no-ri
Fetching: bundler-1.6.3.gem (100%)
Successfully installed bundler-1.6.3
1 gem installed

Redmineの展開と設定

Redmineをダウンロードして/var/lib/redmineに展開します。

$ curl -O http://www.redmine.org/releases/redmine-2.5.1.tar.gz
$ tar xvf redmine-2.5.1.tar.gz 
$ sudo mv redmine-2.5.1 /var/lib/redmine

/var/lib/redmineに移動し、セットアップを行います。

$ cd /var/lib/redmine
$ bundle install --without development test

development/test環境を除外しておかなければ、他にも多くの依存ライブラリが必要とし、インストールが失敗する可能性があります。

インストールが出来たならば、データベース等の設定を行います。

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

データベースの設定を行います。

production:
  adapter: mysql2
  database: db_redmine
  host: localhost
  username: user_redmine
  password: changeit
  encoding: utf8

/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-gothic/ipag.ttf

SMTPの設定は各自で行ってください。 また、SESをセットアップして、設定しても良いでしょう。

セッションのシークレットトークンの作成

$ bundle exec rake generate_secret_token

データベース初期化

$ bundle exec rake db:migrate RAILS_ENV=production

以上でRedmineのセットアップは完了です。

Passengerのセットアップ

最後にApacheとRedmineを連動する設定で、Passengerをセットアップします。

$ sudo yum install curl-devel httpd-devel apr-devel apr-util-devel
$ gem install passenger --no-rdoc --no-ri

続けて、apache2モジュールをセットアップします。

$ passenger-install-apache2-module

セットアップの最後にApacheに記述するモジュールの設定が表示されますので、これをコピーしておきましょう。 Amazon Linux環境では次のようになりました。

   LoadModule passenger_module /home/ec2-user/.gem/ruby/2.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/ec2-user/.gem/ruby/2.0/gems/passenger-4.0.45
     PassengerDefaultRuby /usr/bin/ruby2.0
   </IfModule>

これを /etc/httpd/conf.d/passenger.confを作成して記述します。

今回はこのサーバで他のサービスは動かしません。 このため、次のように/etc/httpd/conf/httpd.confのDocumentRootをRedmineのpublicディレクトリに設定します。

DocumentRoot "/var/lib/redmine/public"

Virtual Hostやその他の設定で行う場合は、適宜confファイルを設定します。

最後にApacheを起動して完了です。

$ sudo service httpd start
$ sudo chkconfig httpd on

備考

調査中の一コマです。

それ、Cloud Formationでできるんじゃ?

デフォルトのテンプレートにRedmine / MySQLテンプレートがあります。 が、Stackの作成中にエラーとなり構築できませんでした。

それ、ALMiniumでできるんじゃ?

ALMiniumもAWSに対応しているとのことで試してみましたが、インストールできませんでした。

まとめ

流行としてはChefとかCloud Formationとかで一発構築できればいいのですが、Ruby系のプロダクトはバージョンによってエラーを読みながら追加ライブラリをインストールしたりと、簡単にインストールできるとはならない感じです。 ALMiniumなども特定のバージョンであればインストールできるんでしょうけど…。 何度もインストールする類のプロダクトでもないので、スクリプト化しても次に利用する時にはまたエラー潰しが始まるんだろうなぁと思います。

というわけで、フツーにインストールした備忘録でした。

  • AWS Summit Tokyo 2014 ~「あなた」のクラウドがここに ~