前回までにひとまずデプロイが完了しました
今回はWebサーバのNginxをEC2インスタンスに導入しようと思います
EC2インスタンス
$ sudo yum -y install nginx
続いてNginxの設定ファイルを変更します
$ sudo vim /etc/nginx/conf.d/rails.conf
vimコマンドで設定ファイルを開いて以下をコピペし自身のアプリに合わせて書き換えます
/etc/nginx/conf.d/rails.conf
upstream app_server {
# Unicornと連携させるための設定。アプリケーション名を自身のアプリ名に書き換えることに注意。
server unix:/var/www/<アプリケーション名>/tmp/sockets/unicorn.sock;
}
# {}で囲った部分をブロックと呼ぶ。サーバの設定ができる
server {
# このプログラムが接続を受け付けるポート番号
listen 80;
# 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない
server_name <Elastic IP>;
# クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく
client_max_body_size 2g;
# 接続が来た際のrootディレクトリ
root /var/www/<アプリケーション名>/public;
# assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
error_page 500 502 503 504 /500.html;
}
Nginxの権限を変更してPOSTメソッドでリクエストされてもエラーがでないようにします
$ cd /var/lib
$ sudo chmod -R 775 nginx
ここまでできたらNginxをスタートさせます
$ cd ~
$ sudo service nginx start
Nginxの設定は完了しましたが、Nginx導入に伴ってディレクトリ構造が変化したため、
前回までに導入したUnicornの設定ファイルを変更する必要があります
アプリ/config/unicorn.rb
listen 3000
↓以下のように修正
listen "#{app_path}/tmp/sockets/unicorn.sock"
Githubにプッシュしたら本番のアプリにも反映させ、Unicornを最スタートさせます
Nginx導入したら今までhttp://IPアドレス:3000/だったのが
http://IPアドレスになり、3000が必要なくなるので注意してください