Amazon EC2上にRedmineをインストールしてみた
渡辺です。
これでもかというくらいインストールが面倒なRedmineですが、AWS上でもやはり面倒でした。 というわけで、Redmine 2.5をCentOS 6.5にインストールする手順を参考に、Amazon Linux(Amazon Linux AMI 2014.03.1)にRedmineをインストールしてみたのでまとめておきます。 バージョンが変わるとそのままでは動かなくなると思いますが、参考にしてみてください。
概要
今回はスタンドアローンで運用できるように、MySQLも同じインスタンスにインストールします。
構成はこんな感じです。
Name | Version | Install |
---|---|---|
Apache | 2.2.27 | yum |
Ruby | 2.0 | Pre Installed |
Redmine | 2.5.1 | download |
Passenger | 4.0.45 | gem |
MySQL | 5.5.1 | yum |
なるべく簡単にインストールしたいので、可能な限り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なども特定のバージョンであればインストールできるんでしょうけど…。 何度もインストールする類のプロダクトでもないので、スクリプト化しても次に利用する時にはまたエラー潰しが始まるんだろうなぁと思います。
というわけで、フツーにインストールした備忘録でした。