EC2にRailsアプリをデプロイ⑥ ~Webサーバーの設定~
はじめに
この記事は前回の続きです。
クライアントからのリクエストをまずはEC2内のWebサーバーに送られ、Webサーバーで処理ができるものはそのままブラウザにレスポンスを返します。
もしWebサーバーでは処理できないものであれば、アプリケーションサーバーへふって処理します。
そのWebサーバーを今回導入してデプロイ完了とします。
Nginxを導入
今回はNginxというWebサーバーの一種を導入します。
ターミナルで下記のコマンドを実行してインストールします。
[ec2-user@ip-172-31-25-189 ~]$ sudo amazon-linux-extras install nginx1
Is this ok [y/d/N]:と表示されたらyを押してエンター押してください。
Nginxの設定を編集
Nginxの設定ファイルはターミナルからコマンドを実行してファイルを開きます。
ターミナルでファイルを開けたら下記のように編集します。
しかし、3行目、17行目の「リポジトリ名」と書かれた部分と
11行目の「Elastic IP」と書かれた部分は自分のものに置き換えます。
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;
}
入力を終えたら「escキー」→「:wq」の順で実行し、保存します。
Nginxの権限を変更する
POSTメソッドでもエラーが出ないように下記のコマンドでNginxの権限を変更します。
[ec2-user@ip-172-31-25-189 ~]$ cd /var/lib
[ec2-user@ip-172-31-25-189 lib]$ sudo chmod -R 775 nginx
これでNginxの設定は完了です。
Nginxの設定ファイルを再度読み込みさせます。↓
[ec2-user@ip-172-31-25-189 lib]$ cd ~
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl reload nginx
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl start nginx
Unicornの設定を変更する
Unicornの設定を変更します。
config/unicorn.rbのファイルのこの記述があると思います。
↓
(省略)
listen 3000
(省略)
この記述を下記のように修正します。
(省略)
listen "#{app_path}/tmp/sockets/unicorn.sock"
できたらコミット、プッシュ
さらに本番環境にも反映させます。↓
# 開発中のアプリケーションに移動
[ec2-user@ip-172-31-25-189 ~]$ cd /var/www/開発中のアプリケーション
# GitHubの内容をEC2に反映させる
[ec2-user@ip-172-31-23-189 <レポジトリ名>]$ git pull origin master
Unicornを再起動させます。
⑤の記事でkillコマンドを使って行った作業と同じです。
まずプロセスを確認↓
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ps aux | grep unicorn
ec2-user 17877 0.4 18.1 588472 182840 ? Sl 01:55 0:02 unicorn_rails master -c config/unicorn.rb -E production -D
ec2-user 17881 0.0 17.3 589088 175164 ? Sl 01:55 0:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
ec2-user 17911 0.0 0.2 110532 2180 pts/0 S+ 02:05 0:00 grep --color=auto unicorn
そしてkill
# 上記の例だと「17877」
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ kill プロセス番号
そしてUnicornを起動↓
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
これで全てが完了です。
ブラウザからElastic IPでアクセスしてデプロイされているはずです。
最後に
区切って記事にしたので六つの記事になりました。
ただ、初めてAWSを使ってこの工程は一応残しておきたかったので記事にできてよかったです。
また、自分の作成したアプリがインターネットで公開されるのは少し感動しました。
Author And Source
この問題について(EC2にRailsアプリをデプロイ⑥ ~Webサーバーの設定~), 我々は、より多くの情報をここで見つけました https://qiita.com/minhee/items/b58b4cf70079980b62a4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .