【ruby on rails AWSデプロイ】AWSでのデプロイ〜UNICORN Nginx
何度もこんにちは!
今回はAWSのEC2サーバ設定終わりましたので、デプロイ関係に関する備忘録します。(2020.3.11)
・AWSの無料枠
・EC2の解放(AWSの登録は省略します)
・Linuxサーバの設定
・アプリケーションサーバUnicorn設定 →今回はここ
・webサーバNginx設定 →今回はここ
------------
・【自動デプロイ】capistrano設定
・IAMユーザの登録
・S3(ストレージ)の設定
まずrailsアプリケーションをEC2にgit cloneするためにgithubにssh鍵を登録します。
■(Git)ssh鍵の作成
(EC2上)$ ssh-keygen -t rsa //-tは鍵の形式でrsaを指定しています
※デフォルトで「id_rsa」
※途中聞かれるパスワードはなくてもOK
$ls /home/ec2-user/.sshにある「id_rsa.pub」が公開鍵です。
※$cat ~/.ssh/id_rsa.pub で内容をコピーします
ご自身のgithub→「setting」→「SSH and GPG key」より公開鍵の内容を登録します。
■Unicorn(アプリケーションサーバ)の登録
ローカルからだと、「rails s」で動かしているものです。
・gemにunicorn追記
$gem 'unicorn'
※production環境にのみ追記
・config/unicorn.rbを作成
用語の備忘録
・USR2シグナル:Unicornを再起動するときUSR2シグナルを送る
(capistranoではusr2シグナルを送って緩やかなデプロイをしている)
・ホットデプロイ:デプロイ中もサービスを停止しないデプロイ
・fork:プロセスのコピーを生成すること
※参考にさせていただきました
fileパス
https://docs.ruby-lang.org/ja/latest/method/File/s/expand_path.html
unicornの設定について
https://qiita.com/syou007/items/555062cc96dd0b08a610
https://qiita.com/y_matsuwitter/items/e6019660b18f13ca8486
https://kray.jp/blog/troubleshooting-rails-unicorn/
■作成したrailsクローンについて
・git clone
サーバにアプリケーションのフォルダを作成してクローンします。
・secret_key_baseを設定
簡単にいうとCookieの生成に必要のようで設定しないとエラーが出るようです。
秘密情報となるため環境変数として設定します。
※環境変数の設定方法はrails5.1以下は[secret.yml]5.2からは[crediential.yml]と変更になっています。今回は5.2のため別記事で環境設定について記載します。
■Nginxのインストール・設定
(EC2上で実行します)
$ sudo yum install nginx
設定ファイル
/etc/nginx/conf.d/rails.conf をEC2上に作成します。
(デフォルトで別に設定ファイルがありますが、作成した方が良いようです。)
upstream app_server {
#unicornのsockets先と合わせる
server unix:/【EC2のレポジトリpath】/shared/tmp/sockets/unicorn.sock;
}
server {
#carrirewaveを使用した際にファイルサイズの上限を超えたため拡張しました
client_max_body_size 20M;
#listen 使用するIPアドレス・ポートを指定
listen 80;
#listen ホスト名を指定
server_name 54.64.○.○;
#root webサーバの最上位となるディレクトリ指定
root /【レポジトリpath】/current/public;
#location URLに応じた様々な設定を行う ^~は正規表現
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /【EC2のレポジトリpath】/current/public;
}
#try_files 静的なファイルと動的なファイルを振り分ける
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;
}
用語の備忘録
http{ }、server{ }、location / {}:ディレクティブ
{ }内の記述:コンテキスト、そのかっこ内で有効
参考サイトさま
https://server-setting.info/centos/nginx-location-check.html
https://qiita.com/kaikusakari/items/cc5955a57b74d5937fd8
こちらで、unicornの設定とnginxの設定が完了しました。
次回はrailsの設定・unicornの起動・nginxの起動について記載します☺️
毎回勉強不足な点がありますがご了承くださいませ🙇♂️