初心者向け：AWS(EC2)にRailsのWebアプリをデプロイする方法 ④


## 参考
- 以下の記事を参考にさせて頂きました。ありがとうございます。

#### [(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](http://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e)
#### [RailsアプリをAWS、unicorn、nginxで手動デプロイして独自ドメインを紐づけるまで](http://qiita.com/happytarou0228/items/3771b13217483c35965d#_reference-11e6fa5657711d78d10d)
#### [EC2とRDSでrailsを動かす](http://qiita.com/7sgg_m/items/dc483baf38ea90de5ada)
#### [AWS EC2 Amazon Linuxインスタンス起動後、最初にやることまとめ（SysVinit編）](http://qiita.com/yangci/items/ef2ab9b6f0d28bad0881)

## 目次はこちら
### [初心者向け：AWS(EC2)にRailsのWebアプリをデプロイする方法 目次](http://qiita.com/iwaseasahi/items/d5f2ef3eac5e349a8f7d)


## 手順
### サーバの設定
#### サーバをアップデートします。

```
$ sudo yum update
```

#### Nginxのインストールします。

```
$ sudo yum install -y nginx
```

#### 起動をします。

```
$ sudo /etc/init.d/nginx start
Starting nginx:                                            [  OK  ]
```

#### 自動起動を設定します。

```
$ sudo chkconfig nginx on
```

### ユーザーの作成と設定
#### 作業用ユーザーを作成します。

```
$ sudo adduser test_user
```

#### マスター権限を与えます。

```
$ sudo usermod -G wheel test_user
```

#### パスワードを設定します。

```
$ sudo passwd test_user
Changing password for user test_user
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
```

#### 作成したユーザーを追加します。

```
$ sudo visudo
```

#### コメントアウトを外します。
#### 98行目

![スクリーンショット 2017-05-04 20.05.13.png](https://qiita-image-store.s3.amazonaws.com/0/142810/edf3b2c4-e7ee-0e13-38a1-7eafb682d1d6.png "スクリーンショット 2017-05-04 20.05.13.png")

#### sshでログインするためのauthorized_keysを[test_user]のフォルダに移動します。

```
$ sudo rsync -a ~/.ssh/authorized_keys ~test_user/.ssh/
```

#### オーナーとグループを変更します。

```
$ sudo chown -R test_user:test_user ~test_user/.ssh
```

#### 読み出し、書き込み、実行の許可を取り去ります。

```
$ sudo chmod -R go-rwx ~test_user/.ssh
```

#### アクセスできるか確認ため、一度出ます。

```
$ exit
```

#### ログインするユーザー名を変更し、再度sshでログインします。

```
$ ssh -i ~/.ssh/鍵名.pem test_user@IP
```

#### 例

```
$ ssh -i ~/.ssh/christchurches-map.pem test_user@52.192.101.190
```

#### 接続できました。

```

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/
$
```

#### セキュリティー強化のため、ec2-userからアクセスできないようにします。

```
$ sudo vi /etc/ssh/sshd_config
```

#### ファイルの末尾に追記します。

```
# ec2-userでのログインを禁止
DenyUsers ec2-user
```

#### 設定を反映させます。

```
$ sudo service sshd reload
```

### 作業用ディレクトリの作成
#### railsアプリを配置する作業用のディレクトリを作成します。

```
$ sudo mkdir /var/www
```

#### varに移動します。

```
$ cd /var/
```

#### オーナーを変更し、パスワードを入力します。

```
$ sudo chown test_user www

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for test_user:
```

### プラグインの導入
#### 以下のコマンドを実行し、インストールします。

```
$ sudo yum install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel ImageMagick ImageMagick-devel epel-release
```

#### mysqlは、5.6をインストールするために以下を実行します。

```
$ sudo yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
```

#### インストールします。

```
$ sudo yum install mysql mysql-devel mysql-server mysql-utilities
```

#### node.jsをインストールします。

```
$ sudo yum install nodejs npm --enablerepo=epel
```

#### rbenvをインストールします。

```
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
```

```
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
```

```
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```

```
$ source ~/.bash_profile
```

#### ruby-buildをインストールします。

```
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv rehash  
```

#### rubyをインストールします。
#### ここでは、バージョン2.3.1をインストールします。

```
$ rbenv install -v 2.3.1
```

```
$ rbenv global 2.3.1
```

```
$ rbenv rehash
```

```
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
```

### Githubと連携
#### gitの設定ファイルを作成します。

```
$ vi ~/.gitconfig
```

#### 設定ファイルに以下を記載します。

```
[user]
  name = Githubのユーザー名
  email = Githubに登録しているメールアドレス

[color]
  ui = true

[url "github:"]
  InsteadOf = https://github.com/
  InsteadOf = git@github.com:
```

#### 例

![スクリーンショット 2017-05-27 22.28.01.png](https://qiita-image-store.s3.amazonaws.com/0/142810/1cba869e-238f-31c8-57c0-7eafb6803b99.png "スクリーンショット 2017-05-27 22.28.01.png")

#### www配下にRailsを格納するフォルダを作成します。

```
$ cd /
```

```
$ sudo chown test_user var
```

```
$ cd /var/www/
```

```
$ sudo mkdir projects
```

```
$ sudo chown test_user projects
```

### 鍵を作成

```
$ cd
```

```
$ chmod 700 .ssh
```

```
$ cd .ssh
```

```
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test_user/.ssh/id_rsa): aws_git_rsa
# パスワードを入力
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
```

#### 鍵を確認します。

```
$ ls
authorized_keys  aws_git_rsa  aws_git_rsa.pub
```

#### 設定ファイルを作成します。

```
$ vi config
```

#### 以下を記載します。

```
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/aws_git_rsa
```

#### 暗号を確認します。

```
$ cat aws_git_rsa.pub
ssh-rsa 鍵の暗号が表示
```

### Githubに鍵を追加
#### [Github](https://github.com/)にアクセスします。
#### `Settings` をクリックします。

![スクリーンショット 2017-05-27 22.45.47.png](https://qiita-image-store.s3.amazonaws.com/0/142810/331a756a-1ea0-70c9-e0f5-d5a25ca06c29.png "スクリーンショット 2017-05-27 22.45.47.png")

#### `SSH and GPG keys` を選択します。

![スクリーンショット 2017-05-27 22.46.53.png](https://qiita-image-store.s3.amazonaws.com/0/142810/61f34cc8-060d-0600-2aac-8ed6c2ff6c97.png "スクリーンショット 2017-05-27 22.46.53.png")

#### 「New SSH key」 をクリックします。

![スクリーンショット 2017-05-27 22.47.50.png](https://qiita-image-store.s3.amazonaws.com/0/142810/8bba6f32-3aca-1e4c-2c1a-5ba959d08fe3.png "スクリーンショット 2017-05-27 22.47.50.png")

#### TitleとKeyを入力します。

![スクリーンショット 2017-05-27 22.50.04.png](https://qiita-image-store.s3.amazonaws.com/0/142810/da3e86c5-7005-cb53-dce9-39a702333475.png "スクリーンショット 2017-05-27 22.50.04.png")

#### 例
#### Keyの部分は、`cat aws_git_rsa.pub` で表示された暗号を入力します。
#### 「Add SSH key」をクリックします。

![スクリーンショット 2017-05-27 22.51.52.png](https://qiita-image-store.s3.amazonaws.com/0/142810/d2e0f7cb-719f-ac33-88d9-68c56e91a0da.png "スクリーンショッ
ト 2017-05-27 22.51.52.png")

#### Passwordを入力します。

![スクリーンショット 2017-05-27 22.53.40.png](https://qiita-image-store.s3.amazonaws.com/0/142810/0dea0261-b991-19a3-cf84-a4a53645929e.png "スクリーンショット 2017-05-27 22.53.40.png")

#### 鍵が登録されました。

![スクリーンショット 2017-05-27 22.55.28.png](https://qiita-image-store.s3.amazonaws.com/0/142810/e58c2803-6a2a-a141-c4e4-0a4c9f758f58.png "スクリーンショット 2017-05-27 22.55.28.png")

#### 設定ファイルの権限を変更します。

```
$ chmod 600 config
```

#### Githubの接続を確認します。

```
$ ssh -T github
```

#### `yes` と入力します。

```
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
```

#### パスワードを入力します。

```
Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
Enter passphrase for key '/home/test_user/.ssh/aws_git_rsa':
```

#### 接続できました。

```
Hi user_name! You've successfully authenticated, but GitHub does not provide shell access.
```

### RDSの確認
#### エンドポイントを確認します。
#### 「サービス」をクリックします。

![スクリーンショット 2017-05-27 23.02.21.png](https://qiita-image-store.s3.amazonaws.com/0/142810/c5241057-1f04-4533-f34f-67eabc6043c0.png "スクリーンショット 2017-05-27 23.02.21.png")

#### RDSを選択します。

![スクリーンショット 2017-05-27 23.03.22.png](https://qiita-image-store.s3.amazonaws.com/0/142810/3cb2689a-8c3e-ae32-5a3c-6579962c2d53.png "スクリーンショット 2017-05-27 23.03.22.png")

#### インスタンスを選択します。

![スクリーンショット 2017-05-27 23.04.19.png](https://qiita-image-store.s3.amazonaws.com/0/142810/ddfea417-1f4b-7dbd-c9da-a22f988f98ee.png "スクリーンショット 2017-05-27 23.04.19.png")

#### 作成したRDSを選択し、エンドポイントを確認します。
#### 後で使いますので、コピーしてください。

![スクリーンショット 2017-05-27 23.05.19.png](https://qiita-image-store.s3.amazonaws.com/0/142810/f82ed534-9ac3-b502-4bdf-323bdd33d32b.png "スクリーンショット 2017-05-27 23.05.19.png")

### セキュリティグループの設定
#### サービスをクリックします。

![スクリーンショット 2017-05-27 23.07.47.png](https://qiita-image-store.s3.amazonaws.com/0/142810/8b019cd7-a602-887f-1680-f46a4c7d55f1.png "スクリーンショット 2017-05-27 23.07.47.png")

#### EC2を選択します。

![スクリーンショット 2017-05-27 23.08.27.png](https://qiita-image-store.s3.amazonaws.com/0/142810/8911a857-0089-7872-10ef-3d44cfacd257.png "スクリーンショット 2017-05-27 23.08.27.png")

#### セキュリティグループを選択します。

![スクリーンショット 2017-05-27 23.09.15.png](https://qiita-image-store.s3.amazonaws.com/0/142810/b18d11cf-ba20-3924-4db0-40afdfab37d1.png "スクリーンショット 2017-05-27 23.09.15.png")

#### 作成したセキュリティグループを選択します。

![スクリーンショット 2017-05-27 23.28.25.png](https://qiita-image-store.s3.amazonaws.com/0/142810/b559f534-8dad-a897-7152-c70c84e87306.png "スクリーンショット 2017-05-27 23.28.25.png")

#### グループIDをコピーします。

![スクリーンショット 2017-05-27 23.28.25 2.png](https://qiita-image-store.s3.amazonaws.com/0/142810/9cf052b2-edca-2c5d-be74-12d73d39ddaa.png "スクリーンショット 2017-05-27 23.28.25 2.png")

#### インバウンドをクリックします。

![スクリーンショット 2017-05-27 23.28.25 3.png](https://qiita-image-store.s3.amazonaws.com/0/142810/44c79469-9226-0eda-6e0f-fe6bd9ac326f.png "スクリーンショット 2017-05-27 23.28.25 3.png")

#### 「編集」をクリックします。

![スクリーンショット 2017-05-27 23.10.59.png](https://qiita-image-store.s3.amazonaws.com/0/142810/570b7a45-a993-bb36-57ca-577fa0510e10.png "スクリーンショット 2017-05-27 23.10.59.png")

#### 「ルールの追加」をクリックします。

![スクリーンショット 2017-05-27 23.11.38.png](https://qiita-image-store.s3.amazonaws.com/0/142810/1619fffc-1900-29bc-92a9-ef983424e96d.png "スクリーンショット 2017-05-27 23.11.38.png")

#### 新しい設定を追加します。

![スクリーンショット 2017-05-27 23.12.22.png](https://qiita-image-store.s3.amazonaws.com/0/142810/c0106191-2ad6-6fa5-6f0f-b4d1e9480073.png "スクリーンショット 2017-05-27 23.12.22.png")

#### MYSQLを選択します。
#### コピーしたグループIDを入力します。

![スクリーンショット 2017-05-27 23.26.11.png](https://qiita-image-store.s3.amazonaws.com/0/142810/76349991-c213-0d45-f5b5-5c721d56d794.png "スクリーンショット 2017-05-27 23.26.11.png")

#### 「保存」をクリックします。

![スクリーンショット 2017-05-27 23.31.58.png](https://qiita-image-store.s3.amazonaws.com/0/142810/f1ffb83d-4d72-ae25-0bcf-412e77ca97e1.png "スクリーンショット 2017-05-27 23.31.58.png")

#### サーバにて以下のコマンドを実行します。
#### ここでエンドポイントを使用します。

```
$ mysql -h エンドポイント -P 3306 -u root -p
```

#### 例

```
$ mysql -h christchurches-map-mysql.cbev6lgaewnk.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p
```

#### パスワードを入力します。

```
Enter password:
```

#### RDSにアクセスできました。

```
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 75
Server version: 5.6.27-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```

#### データベースを確認します。

```
mysql> show databases;
```

```
+-------------------------------+
| Database                      |
+-------------------------------+
| information_schema            |
| christchurches_map_production |
| innodb                        |
| mysql                         |
| performance_schema            |
| sys                           |
+-------------------------------+
6 rows in set (0.00 sec)
```

#### 退出します。

```
$ exit;
```

### パラメータグループの作成
#### パラメータグループを選択します。

![スクリーンショット 2017-05-27 23.36.53.png](https://qiita-image-store.s3.amazonaws.com/0/142810/5e496b8b-7529-dd3f-46f4-083d005d46e6.png "スクリーンショット 2017-05-27 23.36.53.png")

#### 「パラメータグループの作成」をクリックします。

![スクリーンショット 2017-05-27 23.37.32.png](https://qiita-image-store.s3.amazonaws.com/0/142810/62e93ff4-170a-0e33-a125-88d5597fea46.png "スクリーンショット 2017-05-27 23.37.32.png")

#### 赤囲みの部分を入力します。

![スクリーンショット 2017-05-27 23.38.23.png](https://qiita-image-store.s3.amazonaws.com/0/142810/453bf25f-f8c5-50c6-dade-a7e8781b6198.png "スクリーンショット 2017-05-27 23.38.23.png")

#### 例

![スクリーンショット 2017-05-27 23.43.55.png](https://qiita-image-store.s3.amazonaws.com/0/142810/1701d223-2840-008f-cffa-90dc8ec65e2a.png "スクリーンショット 2017-05-27 23.43.55.png")

#### [説明]

```
DB Parameter Group for ChristChurches-Map
```

#### 「作成」をクリックします。

![スクリーンショット 2017-05-27 23.44.29.png](https://qiita-image-store.s3.amazonaws.com/0/142810/5355af25-bdec-b09d-0270-08dc7b05e82b.png "スクリーンショット 2017-05-27 23.44.29.png")

#### 作成したパラメータグループを選択し、「パラメータの編集」をクリックします。

![スクリーンショット 2017-05-28 0.11.43.png](https://qiita-image-store.s3.amazonaws.com/0/142810/a58feaef-e3af-b61f-9f61-6f0846e36aa0.png "スクリーンショット 2017-05-28 0.11.43.png")

#### 赤囲みの部分を設定します。

![スクリーンショット 2017-05-28 0.13.16.png](https://qiita-image-store.s3.amazonaws.com/0/142810/6e5243e9-9af5-b448-5e5a-241a953b518a.png "スクリーンショット 2017-05-28 0.13.16.png")

#### 例

![スクリーンショット 2017-05-28 0.14.55.png](https://qiita-image-store.s3.amazonaws.com/0/142810/63ae2b79-c6cb-c91a-a71e-7551ac994a2a.png "スクリーンショット 2017-05-28 0.14.55.png")

#### 赤囲みの部分を設定します。

![スクリーンショット 2017-05-28 0.15.35.png](https://qiita-image-store.s3.amazonaws.com/0/142810/40dea403-8550-89de-2736-a6f2407c0ee3.png "スクリーンショット 2017-05-28 0.15.35.png")

#### 例

![スクリーンショット 2017-05-28 0.16.25.png](https://qiita-image-store.s3.amazonaws.com/0/142810/f8a574ef-3da2-5a25-322d-81fb16223382.png "スクリーンショット 2017-05-28 0.16.25.png")

#### 「変更の保存」をクリックします。

![スクリーンショット 2017-05-28 0.52.16.png](https://qiita-image-store.s3.amazonaws.com/0/142810/24a458ca-047a-d69d-7645-958737af6baf.png "スクリーンショット 2017-05-28 0.52.16.png")

### Githubからクローン
#### projectsに移動します。

```
$ cd /var/www/projects
```

#### bundlerをインストールします。

```
$ gem install bundler
```

#### Gemfileを作成します。

```
$ bundle init
```

#### Gemfileを編集します。

```
$ vim Gemfile
```

#### railsのバージョンを記載します。
#### 例

```
gem "rails", '5.0.1'
```

#### `vendor/bundle` にgemをインストールします。

```
$ bundle install --path vendor/bundle --jobs=4
```

#### railsのバージョンを確認します。

```
$ bundle exec rails -v
Rails 5.0.1
```

#### Githubからクローンします。

```
$ git clone git@github.com:iwaseasahi/christchurches-map.git
```

#### クローンできたか確認します。

```
$ ls
christchurches-map  Gemfile  Gemfile.lock  vendor
```

#### railsアプリに移動します。

```
$ cd christchurches-map/
```

#### `vendor/bundle` にgemをインストールします。

```
$ bundle install --path vendor/bundle
```

#### シークレットを表示します。

```
$ bundle exec rake secret
数字が表示
```

#### 設定ファイルに記載します。

```
$ vi config/secrets.yml
```

```
production:
  secret_key_base: ここにsecretを貼り付ける
```

### nginxの設定
#### 設定ファイルを作成します。

```
$ sudo vi /etc/nginx/conf.d/アプリ名.conf
```

#### 例

```
$ sudo vi /etc/nginx/conf.d/アプリ名.conf
```

#### 以下を記載します。

```
upstream unicorn_server {
    server unix:/var/www/projects/christchurches-map/tmp/sockets/.unicorn.sock
    fail_timeout=0;
}

server {
    listen 80;
    client_max_body_size 4G;
    server_name IPアドレス;

    keepalive_timeout 5;

    # Location of our static files
    root /var/www/projects/アプリ名/public;

    location ~ ^/assets/ {
        root /var/www/projects/アプリ名/public;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://unicorn_server;
            break;
        }
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /var/www/projects/christchurches-map/public;
    }
}
```

#### 例

```
upstream unicorn_server {
    server unix:/var/www/projects/christchurches-map/tmp/sockets/.unicorn.sock
    fail_timeout=0;
}

server {
    listen 80;
    client_max_body_size 4G;
    server_name 52.192.101.190;

    keepalive_timeout 5;

    # Location of our static files
    root /var/www/projects/christchurches-map/public;

    location ~ ^/assets/ {
        root /var/www/projects/christchurches-map/public;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://unicorn_server;
            break;
        }
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /var/www/projects/christchurches-map/public;
    }
}
```

#### 上記の設定において、IPアドレスがわからない場合は、以下で確認できます。

![スクリーンショット 2017-05-29 20.44.43.png](https://qiita-image-store.s3.amazonaws.com/0/142810/35be596d-ea5a-9fc2-2769-24a4f3abb796.png "スクリーンショット 2017-05-29 20.44.43.png")

#### Nginxをリスタートします。

```
$ sudo service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
```

### Unicornの設定
#### Gemfileを編集します。

```
$ vim Gemfile
```

#### 以下をファイルの末尾に追記します。

```
group :production do
    gem 'unicorn'
end
```

#### インストールします。

```
$ bundle install
```

#### unicornの設定ファイルを作成します。

```
$ vim config/unicorn.conf.rb
```

#### 以下を記載します。

```
# set lets
$worker  = 2
$timeout = 30
$app_dir = "/var/www/projects/アプリ名"
$listen  = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir
$pid     = File.expand_path 'tmp/pids/unicorn.pid', $app_dir
$std_log = File.expand_path 'log/unicorn.log', $app_dir
# set config
worker_processes  $worker
working_directory $app_dir
stderr_path $std_log
stdout_path $std_log
timeout $timeout
listen  $listen
pid $pid
# loading booster
preload_app true
# before starting processes
before_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
  old_pid = "#{server.config[:pid]}.oldbin"
  if old_pid != server.pid
    begin
      Process.kill "QUIT", File.read(old_pid).to_i
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end
# after finishing processes
after_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end
```

#### 例

```
# set lets
$worker  = 2
$timeout = 30
$app_dir = "/var/www/projects/christchurches-map"
$listen  = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir
$pid     = File.expand_path 'tmp/pids/unicorn.pid', $app_dir
$std_log = File.expand_path 'log/unicorn.log', $app_dir
# set config
worker_processes  $worker
working_directory $app_dir
stderr_path $std_log
stdout_path $std_log
timeout $timeout
listen  $listen
pid $pid
# loading booster
preload_app true
# before starting processes
before_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
  old_pid = "#{server.config[:pid]}.oldbin"
  if old_pid != server.pid
    begin
      Process.kill "QUIT", File.read(old_pid).to_i
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end
# after finishing processes
after_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end
```

#### 権限を変更します。

```
$ sudo chmod -R 775 /var/lib/nginx/
```

### database.ymlの設定
#### [Ruby アプリケーション環境に Amazon RDS DB インスタンスを追加](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby.rds.html)

##### 念のために `database.yml` をコピーします。

```
$ cp config/database.yml config/database.yml.org
```

##### 編集します。

```
$ vim config/database.yml
```

##### 以下を記載します。

```
$ production:
  <<: *default
  adapter: mysql2
  encoding: utf8
  database: データベース名
  username: root
  password: 設定したパスワード
  host: エンドポイント
  port: 3306
```

#### 例

```
$ production:
  <<: *default
  adapter: mysql2
  encoding: utf8
  database: christchurches_map_production
  username: root
  password: 設定したパスワード
  host: christchurches-map-mysql.cbev6lgaewnk.ap-northeast-1.rds.amazonaws.com
  port: 3306
```

#### mysqldを起動します。

```
$ sudo service mysqld start
Starting mysqld:                                           [  OK  ]
```

#### 念のためにデータベース作成のコマンドを実行します。

```
$ bundle exec rake db:create RAILS_ENV=production
Database 'christchurches_map_production' already exists
```

#### production環境でマイグレーションを実行します。

```
$ bundle exec rake db:migrate RAILS_ENV=production
```

### 以下に続きます。
#### [初心者向け：AWS(EC2)にRailsのWebアプリをデプロイする方法 ⑤](http://qiita.com/iwaseasahi/items/72c43bd932ad5cc2d206)