AWS Webサーバーの設定
Nginxを使う
まずインストール
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install nginx
|
設定ファイルの編集をする
[ec2-user@ip-172-31-25-189 ~]$ sudo vim /etc/nginx/conf.d/rails.conf
注目すべきはsudoでvim開いてるとこetcファイルは権限が強くないと弄れないのでsudoでやってるetcファイルは
UNIXやPOSIX準拠OS(Linux等)で、もっぱら、そのコンピューター用のシステム設定ファイルなどを格納するために使われるディレクトリ。
くらいに考えとくかな
開いたら
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;
}
|
こんな感じに編集
設定が終わったら権限変更
[ec2-user@ip-172-31-25-189 ~]$ cd /var/lib [ec2-user@ip-172-31-25-189 lib]$ sudo chmod -R 775 nginx
データやファイルをサーバに送るためにPOSTを許可したいから。
補足
-Rは多分再帰的オプション、ディレクトリがあったらその中身も全部的な
プロキシhttps://cybersecurity-jp.com/security-measures/32171
Nginxを再起動して設定ファイルを読み込み
[ec2-user@ip-172-31-25-189 lib]$ cd ~
[ec2-user@ip-172-31-25-189 ~]$ sudo service nginx restart
|
Unicornを修正する
nginxを介して処理するようローカルで修正
unicorn.rb
listen 3000
↓以下のように修正
listen "#{app_path}/tmp/sockets/unicorn.sock"
|
pushしてgithubのマスターを修正
EC2でpull(cd/var/www/アプリ名 に移動してgit pull origin master)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ps aux | grep unicorn
で起動中のunicornのプロセスID確認してkillして再起動
ec2-user@ip-172-31-23-189 <リポジトリ名>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
何か色々オプションついてるのは前に書いたと思うが
RAILS_SERVE_STATIC_FILES=1は、値がないとアセット読み込んでくれないからとりあえず1入れてるらしい↓
https://numb86-tech.hatenablog.com/entry/2018/11/10/002439
unicorn一箇所修正しただけでこの手間が掛かっているので手動でデプロイするのは非常にめんどい。おさらいすると
ローカルで修正してgit push
EC2にSSH接続
EC2でpull
アセットコンパイル
Unicorn再起動
って流れ。これをやりたくないからCapistranoで自動デプロイの設定をする