AWSにrailsサーバーを構築する方法


AWSのAmazon Linux AMI にrailsサーバーをたてて外部に公開する方法。
今回はrvmを使わない。

[前提条件]
AWSのインスタンスを確保している。
SecurityGroupsの設定が完了している。

yumのアップデート

sudo yum update

必要なパッケージのインストール

sudo yum -y install gcc
sudo yum -y install gcc-c++
sudo yum -y install zlib-devel
sudo yum -y install httpd-devel
sudo yum -y install curl-devel
sudo yum -y install sqlite-devel

ruby1.9.3のインストール

mkdir src
cd src
wget ftp://core.ring.gr.jp/pub/lang/ruby/1.9/ruby-1.9.3-p392.tar.gz
tar xzf  ruby-1.9.3-p392.tar.gz

cd ruby-1.9.3-p392
./configure
make
make test
sudo su - root
make install

ruby -v

AWSに元々インストールされているrubyは1.8.7。
homeのsrcとか適当にディレクトリ作ってダウンロードしたファイルはそこに入れる。

railsインストール

gem install bundler
gem install rdoc
gem install rails
rails -v

※sudo gemができないのでrootユーザーに変更して行う。

sqlliteインストール

gem install sqlite3

Unicornインストール

gem install unicorn

nginxインストール

sudo yum -y install nginx
sudo /etc/init.d/nginx start

nginx起動後にアクセスしてnginxのページが出れば成功
http://XX.XXX.XXX.XXX/

railsアプリ作成

mkdir app
cd app 
rails new myapp

myappなど適当なアプリを作成。

JavaScriptを有効にする

cd myapp
vi Gemfile
gem 'therubyracer', :platforms => :rubyをコメントイン
bundle install

railsサーバー起動

rails server -d
curl -I localhost:3000

curlで起動の確認が可能。
ポートを指定して画面にアクセスすればrailsアプリを画面で確認することが可能
http://XX.XXX.XXX.XXX:3000/

niginxとunicornの設定

unicorn起動スクリプト作成。

cd myapp
vi config/unicorn.conf
unicorn.conf
worker_processes 2
listen '/tmp/unicorn.sock'
stderr_path File.expand_path('unicorn.log', File.dirname(__FILE__) + '/../log')
stdout_path File.expand_path('unicorn.log', File.dirname(__FILE__) + '/../log')
preload_app true
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk
sudo vi /etc/nginx/nginx.conf

nginxの設定を変更。
ファイルは全文書き換える。

nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    upstream unicornapp {
        server unix:/tmp/unicorn.sock;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://unicornapp;
        }
    }
}
sudo /etc/init.d/nginx restart

unicorn起動

unicorn -c config/unicorn.conf -D

これでrailsのアプリが公開される。
http://XX.XXX.XXX.XXX