yatsuhashi168 / taskleaf

「現場で使えるRuby on Rails5速習実践ガイド」輪読会用リポジトリです
6 stars 0 forks source link

20220522 nginxとRailsを連携してproduction環境で立ち上げる #86

Open Aseiide opened 2 years ago

Aseiide commented 2 years ago

Railsアプリをデプロイする

nginxとRailsを連携する

webサーバとアプリケーションサーバの違い

作業メモ

yatsuhashi168 commented 2 years ago

error_log logs/error.log;

error_log logs/error.log notice;

error_log logs/error.log info;

pid logs/nginx.pid;

events { worker_connections 1024; }

http { access_log /opt/homebrew/etc/nginx/access.log; error_log /opt/homebrew/etc/nginx/error.log;

upstream taskleaf {

for UNIX domain socket setups

# 上記で設定したpuma.sockファイルの絶対パスを指定する
server unix:///Users/admin/RubymineProjects/taskleaf/tmp/sockets/puma.sock;

} server {

ポート80番を許可する

listen 80;
#ホスト名を指定する
server_name _;
#静的ファイルのパスをドキュメントルートに設定する
root //Users/admin/RubymineProjects/taskleaf/public;
# ドキュメントルート配下を以下の順番で検索する
try_files $uri/index.html $uri.html $uri @taskleaf;
# @appの場合は、以下の設定を読み込ませる
location @taskleaf {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://taskleaf; #upstreamで指定した名前で設定する
}
# エラーページの参照先を設定する
error_page 500 502 503 504 /500.html;
location = /500.html {
  root /app/sample-app/public;
}

} }



   - nginxを起動した状態で、rails sでpumaをたちあげた後、localhost:80へアクセス(nginx -s reloadで設定ファイルの再読み込みを忘れない)

参考リンク:
https://serip39.hatenablog.com/entry/2020/12/23/235700
https://bootcamp.fjord.jp/reports/13580
https://zenn.dev/machamp/articles/rails-puma-nginx
https://ascii.jp/elem/000/001/415/1415088/
Aseiide commented 2 years ago

現状の問題

yatsuhashi168 commented 2 years ago

参考リンク: https://heartbeats.jp/hbblog/2012/02/nginx03.html https://qiita.com/furikake6000/items/fb97779659dddfc2c196 https://e-words.jp/w/application-octet-stream.html

yatsuhashi168 commented 2 years ago

環境構築

yatsuhashi168 commented 2 years ago

events { worker_connections 768;

multi_accept on;

}

http { include mime.types; default_type application/octet-stream;

upstream taskleaf {

for UNIX domain socket setups

# 上記で設定したpuma.sockファイルの絶対パスを指定する
server unix://home/ubuntu/taskleaf/tmp/sockets/puma.sock;

} server {

ポート80番を許可する

listen 80;
#ホスト名を指定する
server_name さくらVPSのホスト名;
#静的ファイルのパスをドキュメントルートに設定する
root /home/ubuntu/taskleaf/public;
# ドキュメントルート配下を以下の順番で検索する
try_files $uri/index.html $uri.html $uri @taskleaf;
# @appの場合は、以下の設定を読み込ませる
location @taskleaf {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://taskleaf; #upstreamで指定した名前で設定する
}
# エラーページの参照先を設定する
error_page 500 502 503 504 /500.html;
location = /500.html {
  root /home/ubuntu/taskleaf/public;
}

}

include /etc/nginx/conf.d/*.conf;

    # include /etc/nginx/sites-enabled/*;

}

mail {

See sample authentication script at:

http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript

auth_http localhost/auth.php;

pop3_capabilities "TOP" "USER";

imap_capabilities "IMAP4rev1" "UIDPLUS";

server {

listen localhost:110;

protocol pop3;

proxy on;

}

server {

listen localhost:143;

protocol imap;

proxy on;

}

}

- nginxと連携して起動準備
sudo nginx -t
sudo nginx
(もしsudo nginxでダメだったら↓の3つやる)
sudo chmod ugo+xrw /var/log/nginx/error.log
sudo chmod ugo+xrw /var/log/nginx/access.log
sudo chmod ugo+wrx /run/nginx.pid 
vim puma.rb

port ENV.fetch("PORT") { 3000 }

bind "unix://#{Rails.root}/tmp/sockets/puma.sock"


RAILS_ENV=production bin/rails db:migrate
RAILS_ENV=production bin/rails db:seed
- nginxと連携して起動、確認
bin/rails s -e production
tail -f /var/log/nginx/access.log