授業のグループ課題で Rails をデプロイしなければならないので, Nginx の勉強を初めてみた.
ネットワークのこととか何もわからない学生がNginx unicorn rails で AWS にデプロイするまでの日記(自分用のメモなのでゴミかす汚い)
1日め
- vagrant で CentOS7.0 の環境を作る
- nginx をインストール
-
/etc/nginx/conf.d/default.conf
を/etc/nginx/conf.d/local.conf
にコピー -
/etc/nginx/conf.d/default.conf
を/etc/nginx/conf.d/default.conf.bk
にしておく
/etc/nginx/conf.d/local.conf
をいじってみる
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
location / {
root /usr/share/nginx/html;
index index.htm;
proxy_pass http://localhost:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
nginx を再起動して curl http://localhost
を叩いてみる
index.html が返ってるくると思ってたら, 何も帰ってこない.
ログには 127.0.0.1 - - [17/Jun/2016:10:11:36 +0200] "GET / HTTP/1.0" 499 0 "-" "curl/7.29.0"
がいっぱい書いてあった
2日め
期間が空いてしまったけど頑張る
とりあえず, vagrant 上で rails s できるようにする
- rbenv で ruby のインストール
- mysql のインストールで詰まったけどここで解決
- git flow のインストール
- ファイアーウォール関連がだめだったので参考1, 参考2で解決
ファイアーウォール
vi /etc/sysconfig/iptables
で設定を確認
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
dport のあたりを使いたいポートに指定しとく
ystemctl start iptables.service
これでiptabels を再起動
起動 & mac からアクセス出来た
unicorn の設定
Rails 4.2 + Unicorn + Nginx でアプリケーションサーバの構築 ここみたら出来た
nginx の 設定
nginx を起動しているユーザをroot にすべき
http://qiita.com/okitsutakatomo/items/d98e3f4e9120c622ac44
unicorn の sock と nginx の sock をあわせる
ホストPCから見れた
と思ったら怒られた
production の シークレットなんちゃらを設定
見れたけど アセットプリコンパイルしてなかった
のでした
bundle exec rake assets:precompile RAILS_ENV=production
しかし, だめ
nginx の location に assets を追加しなきゃダメっぽいん
location /assets/ {
root /rails_root/public; # 明示的にこれを追加
}
でけた!