AWS上でApache+Passenger+Redmine(2.5.1)を動かす

秋も本番を迎えたのでRedmineを設置したい

Redmineを導入する(2.5.1)

http://www.redmine.org/releases/redmine-2.5.1.tar.gz

対応するruby,gem,railsのバージョン

ruby 1.8.7, 1.9.2, 1.9.3, jruby-1.6.7
Rails 3.2.3
RubyGems <= 1.8

サーバーはEC2

AMI => Amazon Linux(ami-minimal-pv x86-64 ebs)
2GBのままやってたら容量不足だったので8GBでインスタンス立ち上げなおした

必要なアイテムを入れていく

$ sudo yum groupinstall -y "Development tools"
$ sudo yum install -y openssl-devel readline-devel
$ zlib-devel libyaml-devel
$ sudo yum install -y wget
$ sudo yum install -y vim

rubyとrailsの導入

$ sudo yum install -y ruby19 ruby19-devel
$ gem install rails -v '3.2.3' --no-rdoc --no-ri

各種バージョン確認

$ ruby -v
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
$ gem -v
1.8.23.2
$ rails -v
Rails 3.2.3

bundlerを導入

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

Imagemagickの導入

sudo yum install -y libxml2-devel libxslt-devel
sudo yum install -y ImageMagick-devel

convertでバージョンを確認

$ convert --version

Version: ImageMagick 6.7.8-9 2014-05-12 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP 

gemでrmagickを導入

$ gem install rmagick -v '2.13.2' --no-rdoc --no-ri

Redmineに必要なgemをすべてインストール

$ bundle install --without development test

Mysql導入

リポジトリ追加してインストールする

sudo yum install -y http://repo.mysql.com/mysql-community-release-el6-4.noarch.rpm

諸々導入

mysqlにまつわるいろいろをインストールする

sudo yum install -y mysql mysql-devel mysql-server mysql-utilities

gemをインストール

$ gem install mysql2 --no-rdoc --no-ri

mysqld起動

$ sudo service mysqld start

chkconfigで自動起動

$ sudo chkconfig mysqld on

mysqlのrootを設定

$ mysql -u root
mysql> set password for root@localhost=PASSWORD('パスワード');

redmineのユーザーとDB作成

mysql> CREATE DATABASE redmine CHARACTER SET utf8;
	Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'パスワード';
	Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON redmine.* to 'redmine'@'localhost';
	Query OK, 0 rows affected (0.03 sec)

configにDB設定

$ cp config/database.yml.example config/database.yml

rakeでsession storeを作成

$ bundle exec rake generate_secret_token

rakeでテーブルを作成

RAILS_ENVを忘れず指定する

$ RAILS_ENV=production bundle exec rake db:migrate

apacheインストールしてなかった

$ sudo yum install -y httpd
$ sudo service httpd start
$ sudo chkconfig httpd on

tmp/usrにいたのをwww以下にコピー

$ mkdir /var/www/redmine
$ cp -r redmine-2.5.1/* /var/www/redmine

confファイル設定

[参考ページ] http://live-cast.asia/blog/2010/10/amazon-ec2-for-setting-up-the-apache-micro-instances.html

自動起動

$ sudo chkconfig httpd on

passenger

passengerのインストールでつまづく

$ sudo gem install passenger --version '1.2.3' --no-ri --no-rdoc
	Fetching: rake-10.3.2.gem (100%)
	Fetching: daemon_controller-1.2.0.gem (100%)
	Fetching: rack-1.5.2.gem (100%)
	Fetching: passenger-4.0.42.gem (100%)
	ERROR:  While executing gem ... (Errno::ENOSPC)
	    No space left on device - /usr/local/share/gems1.9/gems/passenger-4.0.42/ext/common/agents/LoggingAgent/RemoteSender.h

容量がない

$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/xvda1             2064208   2063160         0 100% /
tmpfs                   304236         0    304236   0% /dev/shm

!?

$ sudo du -sh /*
	5.8M	/bin
	11M	/boot
	44K	/dev
	4.0M	/etc
	125M	/home
	28M	/lib
	19M	/lib64
	4.0K	/local
	16K	/lost+found
	4.0K	/media
	4.0K	/mnt
	20K	/opt
	du: cannot access `/proc/14030/task/14030/fd/4': そのようなファイルやディレクトリはありません
	du: cannot access `/proc/14030/task/14030/fdinfo/4': そのようなファイルやディレクトリはありません
	du: cannot access `/proc/14030/fd/4': そのようなファイルやディレクトリはありません
	du: cannot access `/proc/14030/fdinfo/4': そのようなファイルやディレクトリはありません
	0	/proc
	2.0M	/root
	9.9M	/sbin
	4.0K	/selinux
	4.0K	/srv
	0	/sys
	12K	/tmp
	1.3G	/usr
	419M	/var

あんだちみは

$ sudo du -sh /usr/
	1.3G	/usr/

EC2の容量増やして解決。

AMI作って好きな容量でインスタンス立ち上げて接続。
そうしたら、拡張しておきましょうね

sudo resize2fs /dev/xvda1

再度passengerインストールして無事にインストール完了。
尚、このgemのインストールの際エラーが出たら一回再起動したりインスタンスrebootしたりするとうまくインストールされる場合がある

apache2のためのモジュールをインストールする

$ passenger-install-apache2-module


	 * To install Curl development headers with SSL support:
	   Please install it with yum install curl-devel

	 * To install Apache 2 development headers:
	   Please install it with yum install httpd-devel

	 * To install Apache Portable Runtime (APR) development headers:
	   Please install it with yum install apr-devel

	 * To install Apache Portable Runtime Utility (APU) development headers:
	   Please install it with yum install apr-util-devel

なんだか諸々足りないと言われたので、足りないモジュールのインストール

sudo yum -y install curl-devel httpd-devel apr-devel apr-util-devel

あとなんだかswap領域が全然ないから作る

sudo chmod o+x "/home/ec2-user"
sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap

再度

$ passenger-install-apache2-module

Welcome to the Phusion Passenger Apache 2 module installer, v4.0.42.

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.


--------------------------------------------

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

(略)

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

passenger-install-apache2-module中にいろいろ言われたのでApacheのconfファイルにpassengerの設定を追加する
ServerNameはとりあえずで…。

 SetEnv GEM_HOME /usr/bin/gem1.9
<VirtualHost *:80>
    PassengerRuby /usr/bin/ruby1.9
    DocumentRoot /var/www/redmine-2.5.1/public
    <Directory /var/www/redmine-2.5.1/public>
        AllowOverride all
        Options -MultiViews
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

LoadModule passenger_module /home/ec2-user/.gem/ruby/1.9.1/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /home/ec2-user/.gem/ruby/1.9.1/gems/passenger-3.0.19
PassengerRuby /usr/bin/ruby1.9

<VirtualHost *:80>
	ServerName ec2-*******.ap-northeast-1.compute.amazonaws.com
	DocumentRoot /var/www/redmine/public    
	<Directory /var/www/redmine/public>
		AllowOverride all
		Options -MultiViews
	</Directory>
</VirtualHost>

稼働するかの確認

ruby script/rails server webrick -e production

Sendmail導入

そしてRedmineのメールが無事駆動していることを確認

Amazon Linux+Apache2+passenger+Redmineが動いた。

おまけ

image焼いて別インスタンス立ち上げた際は、再度swap領域確保しないとpassengerでエラーが出てびっくりするけど落ち着いて

sudo chmod o+x "/home/ec2-user"
sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap