🦦
デプロイを完了させよ〜[完]
前提として、今更だけど。
今回は、WebサーバーNginxの設定
Nginx(webサーバー)の設定ファイルを編集
-/etc/nginx/nginx.conf
と/etc/nginx/conf.d/アプリケーション名.conf
の2つのファイルを編集する。
nginx.conf編集
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ sudo vi /etc/nginx/nginx.conf
viの基本操作手順
編集モードとコマンドモード
-
編集モード
文字を入力するモード -
コマンドモード
vi起動時の初期モード。
文字入力以外の操作はコマンドモード。
例)文字間の移動、文字の検索、置換、ファイルの保存、viの終了 -
このコマンド切り替えは、[escキー]を押すと切り替わる。
自分がどっちにいるかわからない場合は、とりあえず[escキー]を押す。 -
文字入力を開始するときは、[iキー]
-
文字を削除する場合は、[xキー]
ファイルの保存/終了
- 保存/終了は、[:wq]で出来る。
- 内容保存のみの場合は[:w]
- 保存せずに終了は[:q!]
/etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
#user nginx;
user ec2-user;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#index index.html index.htm;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
:
:
-
user nginx;
の行をコメントアウト。 -
user ec2-user;
を追記する
.confの編集
-
/etc/nginx/conf.d/アプリケーション名.conf
を作成する。
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ sudo vi /etc/nginx/conf.d/アプリケーション名.conf
- viエディタが開いたら、
:set paste
を入力してエンター。
これを記述してから、コピー&ペーストすると、インデントが崩れなくて済む。
コピー&ペーストしたら、:set paste
消さないと、後で、構文チェックの時にエラーが出てしまう。注意⚠️
/etc/nginx/conf.d/アプリケーション名.conf
upstream puma {
server unix:///home/ec2-user/アプリケーション名/tmp/sockets/puma.sock;
}
server {
listen 80;
server_name EC2のパブリックIPv4アドレスもしくはドメイン取得している方はドメイン名を設定;
root /home/ec2-user/アプリケーション名/public;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 100M;
include /etc/nginx/mime.types;
location / {
proxy_pass http://puma;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_connect_timeout 30;
}
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /home/ec2-user/アプリケーション名/public;
}
location ^~ /packs/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /home/ec2-user/アプリケーション名/public;
}
}
設定ファイル構文チェック
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ sudo nginx -t
結果が↓なら、問題ない。(test is successful)
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
/var/lib/nginxの権限をnginxの実行ユーザーにする。
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ sudo chown -R ec2-user /var/lib/nginx
-
nginx.conf
で実行ユーザーをec2-user
に変更しているため、
権限には、ec2-user
を指定する。
Nginxの設定完。
ウェブサーバー(Nginx)を再起動
- Nginxの設定を変更した時は、ウェブサーバーを再起動して、設定を反映させる。
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ sudo systemctl restart nginx
アプリケーションサーバー(Puma)を起動する
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ rails s -e production
これで、パブリックIPv4アドレスをブラウザで入力したら、見れるはず。
エラー画面が表示された場合は対処してください。
- nginxのエラーの場合
$ sudo tail /var/log/nginx/error.log
- Railsのエラーの場合
赤い看板みたいなやつ。
$ sudo tail -f log/production.log
Discussion