unicornは動いているのに、アプリの画面が表示されない。
「nginx+unicorn+rails5.2.0」で、capistranoを使って、でサーバの構築を行いましたが、nginxの画面しか見えませんでした。一応、ゲストサーバーに入って、unicornの動作を確認しましたが、動いているようです。
ops@ubuntu-14:/var/www/awesome-events/current$ ps aux | grep unicorn
ops 3355 0.0 7.8 266192 80176 ? Sl 22:05 0:02 unicorn master -c config/unicorn.rb -E none -D
ops 3374 0.0 7.4 267220 75544 ? Sl 22:05 0:00 unicorn worker[0] -c config/unicorn.rb -E none -D
ops 3376 0.0 7.4 267220 75540 ? Sl 22:05 0:00 unicorn worker[1] -c config/unicorn.rb -E none -D
ops 3523 0.0 0.0 11744 924 pts/0 S+ 22:56 0:00 grep --color=auto unicorn
そこで、エラーログ(log/unicorn-stderr)の確認を行ったところ、下記のようなメッセージがありました。しかし、どこで、エラーが出ているのか分かりません。どこで、エラーが出ているのか教えて頂けませんでしょうか?また、他にもエラー原因が分かる方法があれば教えて頂けると助かります。(log/unicorn-stdoutでは、何も表示されていませんでした。)
I, [2018-06-10T22:05:34.389710 #3337] INFO -- : Refreshing Gem list
I, [2018-06-10T22:05:36.394854 #3337] INFO -- : listening on addr=127.0.0.1:3000 fd=8
I, [2018-06-10T22:05:36.399762 #3337] INFO -- : master process ready
I, [2018-06-10T22:05:36.400916 #3341] INFO -- : worker=0 ready
I, [2018-06-10T22:05:36.404272 #3344] INFO -- : worker=1 ready
I, [2018-06-10T22:05:36.438856 #3355] INFO -- : executing ["/var/www/awesome-events/shared/bundle/ruby/2.5.0/bin/unicorn", "-c", "config/unicorn.rb", "-E", "none", "-D", {8=>#}] (in /var/www/awesome-events/releases/20180610220523)
I, [2018-06-10T22:05:36.439046 #3355] INFO -- : forked child re-executing...
I, [2018-06-10T22:05:36.692161 #3355] INFO -- : inherited addr=127.0.0.1:3000 fd=8
I, [2018-06-10T22:05:36.692392 #3355] INFO -- : Refreshing Gem list
I, [2018-06-10T22:05:38.419510 #3355] INFO -- : master process ready
I, [2018-06-10T22:05:38.422386 #3374] INFO -- : worker=0 ready
I, [2018-06-10T22:05:38.425321 #3376] INFO -- : worker=1 ready
I, [2018-06-10T22:05:38.518200 #3337] INFO -- : reaped # worker=0
I, [2018-06-10T22:05:38.518296 #3337] INFO -- : reaped # worker=1
I, [2018-06-10T22:05:38.518337 #3337] INFO -- : master complete
大雑把に言うと、以下のとおり構築しました。
(コードは、必要でしたでしょうか?ファイルが大量ににありすぎるので。。。とりあえず、この様な感じで構築しています。)
⑴「vagrant」でboxをアップし、「chef」でサーバーの構成を行う。
この時、オペレータユーザを作成して、nodeとしてサーバー情報を追加しまし、プロビジョニングしました。もちろん、nginxのレシピもセットしました。
⑵railsアプリにunicornを追加し、staging環境をセットしました。
※「RAILS_ENV=staging rake db:setup」⇨「rails s -e staging」を実行したところ、staging環境の画面がブラウザに立ち上がりました。
⑶capistranoを下記のとおり設定し、デプロイしました。
github経由でアプリファイルを仮想サーバに移し、railsに必要な処理を走らせたのち、unicornを再起動するように設定してしました。
⑷「localhost:8080」をブラウザに入力したところ、nginxの画面しか確認出来ません。
※vagrantfileで、「config.vm.network :forwarded_port, guest: 80, host:8080」とした。
ちなみに、nginxの画面は確認できるし、エラーログを見たところ、unicornとnginxもつながっている??ようにみえるので、以下の点が気になっていますが、どこを確認すればいいのか分からない状態です。
①画面への出力が逆になっている。(エラーでないログが、stderr_logに表示されるため)
②unicornとrailsの接続がうまく行っていない。または、railsが動いていない?
(正直、unicornとrailsがどのように関わっているのか理解していない。ただ、unicorn.rbファイルをconfigフォルダの下にいれてあればつながると思っています。)
nginx_setting.rb(site-cookbooksのtemplates)
⇨/etc/nginx/sites-available/default
※node["rails_book_cookbook"]["server_name"]=vagrant.local
server {
listen 80;
server_name node["rails_book_cookbook"]["server_name"];
access_log /var/log/nginx/node["rails_book_cookbook"]["server_name"].access.log;
root /var/www/awesome-events/current/public;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:3000;
break;
}
}
}
nginx.conf
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset_types text/css text/plain text/vnd.wap.wml application/javascript application/json application/rss+xml application/xml;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_requests 100;
keepalive_timeout 65;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_vary off;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/rss+xml application/atom+xml image/svg+xml text/javascript application/javascript application/json text/mathml;
gzip_min_length 1000;
gzip_disable "MSIE [1-6]\.";
variables_hash_max_size 1024;
variables_hash_bucket_size 64;
server_names_hash_bucket_size 64;
types_hash_max_size 2048;
types_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
sites-available/default
server {
listen 80;
server_name vagrant.local;
access_log /var/log/nginx/vagrant.local.access.log;
location / {
root /var/www/awesome-events/current/public;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:3000;
break;
}
}
}
「ls -al /etc/nginx/sites-available/default」の結果
ops@ubuntu-14:~$ ls -al /etc/nginx/sites-enabled
total 8
drwxr-xr-x 2 root root 4096 Jun 28 09:16 .
drwxr-xr-x 7 root root 4096 Jun 30 03:36 ..
lrwxrwxrwx 1 root root 34 Jun 28 09:16 000-default -> /etc/nginx/sites-available/default
awesome-events/current/public」確認結果
ps@ubuntu-14:~$ ls -l /var/www/awesome-events/current
lrwxrwxrwx 1 ops ops 47 Jul 1 03:56 /var/www/awesome-events/current -> /var/www/awesome-events/releases/20180701035403
ops@ubuntu-14:~$ ls -l /var/www/awesome-events/current/public
total 16
-rw-rw-r-- 1 ops ops 1722 Jun 26 11:07 404.html
-rw-rw-r-- 1 ops ops 1705 Jun 26 11:07 422.html
-rw-rw-r-- 1 ops ops 1635 Jun 26 11:07 500.html
-rw-rw-r-- 1 ops ops 0 Jun 26 11:07 apple-touch-icon.png
-rw-rw-r-- 1 ops ops 0 Jun 26 11:07 apple-touch-icon-precomposed.png
lrwxrwxrwx 1 ops ops 44 Jul 1 03:54 assets -> /var/www/awesome-events/shared/public/assets
-rw-rw-r-- 1 ops ops 0 Jun 26 11:07 favicon.ico
-rw-rw-r-- 1 ops ops 98 Jun 26 11:07 robots.txt
/var/log/nginx/vagrant.local.access.log
10.0.2.2 - - [01/Jul/2018:03:59:55 +0000] "GET / HTTP/1.1" 403 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15"
sites-available/defaultの修正(tyr_filesディレクティブ)
server {
listen 80;
server_name vagrant.local;
access_log /var/log/nginx/vagrant.local.access.log;
root /var/www/awesome-events/current/public;
location / {
try_files $uri $uri/ @app;
}
location @app {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}