Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
AWSのEC2上でRails+Unicorn+Nginxを実現する

目的

  • AWSのEC2上でRails+Unicorn+Nginxを実現する

前提

  • OSはAmazon Linux AMIを使用する

必要なライブラリをインストール

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

gitインストール

sudo yum install git

ruby-buildインストール

git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build
sudo ./install.sh

rbenvインストール

git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bashrc
exec $SHELL -l
ebenv install -l
rbenv install 1.9.3-p392;rbenv rehash

使用するrubyを指定する

rbenv global 1.9.3-p392;rbenv rehash

bundlerインストール

gem install bundler;rbenv rehash

railsインストール

gem install rdoc
gem install rails
rbenv rehash
rails -v

SQLiteインストール

gem install sqlite3;rbenv rehash

railsアプリ作成

rails new myapp

JavaScript Runtimeを有効にする

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

unicornのgemをインストール

vi Gemfile
gem 'unicorn'をコメントイン
bundle install

railsアプリ確認

rails server
curl -I localhost:3000

Unicornインストール

gem install unicorn;rbenv rehash

configファイル作成

cd myapp
vi config/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

nginxインストール

sudo yum -y install nginx

nginx確認

sudo /etc/init.d/nginx start
http://xxx.compute.amazonaws.com/
Welcome to nginx on the Amazon Linux AMI!と出れば成功
sudo /etc/init.d/nginx stop
公開パス /usr/share/ngin/html/

nginxの設定ファイル編集

sudo vi /etc/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;
        }
    }
}

nginx起動

sudo /etc/init.d/nginx start

unicorn起動

cd myapp
unicorn -c config/unicorn.conf -D

※ unicorn_railsの方がいいけどうまくいかなかったのでunicornを使う

動作確認

http://xxx.compute.amazonaws.com/
Railsのトップが表示されればOK

nginx停止

sudo /etc/init.d/nginx stop

unicorn停止

ps ax|grep unicorn|grep -v grep
これで表示されるmasterのプロセスをkillする

nginx再起動

sudo /etc/init.d/nginx restart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.