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ファイルは

UNIXPOSIX準拠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ファイル(CSSJavaScriptのファイルなど)にアクセスが来た際に適用される設定
  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で自動デプロイの設定をする