EC2でRuby on Railsを動かす環境を構築する
OSイメージ作成
もうすでにEC2ではRailsを動かしたりしてるのですが、新たに環境を構築する必要があったのでついでにメモとして残しておきます。
EC2のインスタンス作成後、サーバーにログインします
OSイメージはAmazon Linuxを使うことを前提です(64bit版)
Basic 64-bit Amazon Linux AMI 2011.02.1 Beta
user作成とrootパスワード変更
最初はec2-userでしかログインできなくなってるので、他ユーザーでログインしたければ、ユーザー作成後、ec2-userホームの.sshディレクトリを対象ユーザーのホームディレクトリにコピーすると次回からログインが可能になります。
ついでにrootのパスワードも変更しておくと便利です。以下で変更
sudo passwd
以降はrootで作業します。
RubyGemsのinstall
下記から最新版を取得します
http://rubygems.org/pages/download
wget http://production.cf.rubygems.org/rubygems/rubygems-1.7.2.tgz tar xvzf rubygems-1.7.2 cd rubygems-1.7.2 ruby setup.rb
Railsのinstal
gem install rails
rdocのところでエラーが出たので、rdocもinstallしておきます。
あと、この後のpassengerのinstallでもruby.hがない、gccがない、makeがないとか怒られるので以下もinstallします
yum -y install ruby-devel yum -y install gcc yum -y install make yum -y install rdoc
passengerのinstall
gem install passenger
Apacheのmoduleをinstallするのですが、以下を実行すると
passenger-install-apache2-module
なにやらたくさんinstallしろと言われます。なので足りないものを全部installします
yum -y install gcc-c++ yum -y install zlib-devel yum -y install httpd-devel yum -y install openssl-devel yum -y install curl-devel
再度実行すると、コンパイルが実行されて完了となります(結構時間かかります)
Apache設定ファイルの追加
http.confを直接いじらず、conf.d/rails.confという名前のファイルを作成します(名前は何でもいい)
中身は以下(必要に応じて設定変更は必要)
LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.7 PassengerRuby /usr/bin/rubyServerName hoge.com # サーバー名 DocumentRoot /home/www/xxx # document rootのディレクトリ指定 RailsEnv development # document root の詳細設定 AllowOverride None Options FollowSymLinks
Subversionのinstall
とりあえずこれで完了ですが、自分はアプリのdeployにCapistranoを使いたかったので、subversionをinstall(sqliteも必要になるのでinstallする)
sqliteのinstall
wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz 解凍後 ./configure make make install
subversionのinstall
wget http://subversion.tigris.org/downloads/subversion-1.6.16.tar.gz 解凍後 ./configure make make install
※gitでソース管理している人はsubversionではなくてgitをinstallすればいいと思います
以上で構築完了です。これはステージング環境用に作ったのですが、ec2でOSイメージをコピーすれば簡単に同じ環境のインスタンスが作成されるので本番環境も簡単に作れて便利です