##近況報告
大海に糸を垂らして魚を釣るのと鱒がそこにいるとわかっている生簀で鱒を釣るの,どちらが先に釣れるでしょうか。価値があるから売れるのと,売れるから価値がある,どちらが始まりなのでしょうか。鶏と卵論争ではないけれども,考えていくべきことですよね。
ついに最後,Nginxですね。
まだやりたいことはあって,予定ではCapistranoとベーシック認証があるのでvol.8以上あるのか笑
さあいってみようかぁ!
##今回の内容
・インフラ整備での各アクションの言語化
・コードを単に打っているだけでは理解しきれないし,他に応用できないので言語化して整理
・テックキャンプ受講生支援()
##大まかな流れ&設定
Nginxインストール
##事前準備
vol.1
vol.2
vol.3
vol.4
vol.5
###Nginxインストール&設定
sudo yum -y install nginx
sudo yum の解説は前の項で触れています。
インストールできたら設定を編集していきます。むやみやたらにいじられたくないファイルなので権限も強いです。sudo権限でvim形式で編集していきます。
$ sudo vim /etc/nginx/conf.d/rails.conf
upstream app_server {
server unix:/var/www/<アプリケーション名>/tmp/sockets/unicorn.sock;
}
⇨Unicornと連携させるための設定。アプリケーション名を自身のアプリ名に書き換えることに注意。upstreamは上流の意。ここでunixが登場していることはよくわかんなかった。
server {
⇨ {}で囲った部分をブロックと呼ぶ。サーバの設定ができる
listen 80;
⇨このプログラムが接続を受け付けるポート番号
server_name <Elastic IP>;
⇨接続を受け付けるリクエストURL
client_max_body_size 2g;
⇨クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガ
root /var/www/<アプリケーション名>/public;
⇨接続が来た際のrootディレクトリ
location ^~ /assets/ { ←assetファイルはここに入っているのを参照するよ
gzip_static on; ←圧縮状態のものを配信。容量が小さくなるのでメモリの負担減らせる
expires max; ←キャッシュの有効期限。maxは限界までの意
add_header Cache-Control public; ←キャッシュを受け取る範囲の選択
⇨assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定
}
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;
⇨Nginxからユニコーンにむけた設定
}
error_page 500 502 503 504 /500.html;
⇨エラーが表示された時のページ
}
と<アプリケーション名>計三箇所直したら,脱出(:wq)
補足
プロキシ
ブラウザとウェブサーバーの中間役。ウェブサーバーの情報をブラウザで写すが,プロキシはウェブサーバーの代理としてウェブサーバーからの情報を写す。 ⇨わかりやすかった説明
location unicornではHTMLメソッドの受け取る方法とか表示の仕方とか設定してるっぽい。
権限変更を行ったあと,再起動をします。
$ cd /var/lib
$ sudo chmod -R 775 nginx ←-RはNginxに対してって意味
$ cd ~
$ sudo service nginx restart
⇨初めにfailed出ても再起動でOKがでれば大丈夫
カリキュラムで分からなかった点
POSTメソッドを用いるとエラーが発生する可能性があるから権限変更を行うらしいのですが,このコマンドが通信量の多いPOSTメソッドのエラーを防ぐのかまだ理解できていません。
●補足chmodについて
UnicornをNginxに接続
listen 3000
↓以下のように修正
listen "#{app_path}/tmp/sockets/unicorn.sock"
githubに反映後,EC2に読み込み。
unicorn再起動処理をして,ブラウザにElastic IPを直打ちしてアプリケーションのルートページが表示できれば成功。うまく表示できない場合はもう一回やり方を見直す。URLが見つからないことで表示されてない可能性があるので注意して見る。
###終わりに
テックキャンプのカリキュラム,はしょりすぎぃ!!!
まあ多分目的は完全理解というより大枠を捉えよ的な教科書みたいなアプローチですな。
10週間でやれることなんてたかがしれてるし,Nginxひとつとっても理解しようとすれば数百ページの本を読まないとだから無難なのかな(しかもオープンソースだから今この瞬間にアップデートされているかもしれない...)。
微量でも参考になったらLGTM,ご指導はコメント欄にお願いします!