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 サーバーは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