unicornは動いているのに、アプリの画面が表示されない。

投稿者: Anonymous

「nginx+unicorn+rails5.2.0」で、capistranoを使って、でサーバの構築を行いましたが、nginxの画面しか見えませんでした。一応、ゲストサーバーに入って、unicornの動作を確認しましたが、動いているようです。

[email protected]:/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」の結果

[email protected]:~$ 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」確認結果

[email protected]:~$ 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
[email protected]:~$ 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;
}
}

解決

“conf.d/default.conf” で定義された server と、”sites-available/default” で定義さた server がどちらも、80番ポートでリッスンされていることが問題ではないでしょうか?

試しに、”conf.d/default.conf” のリッスンポートを 8080 とかに変更し、 nginx を再起動すれば、 “sites-available/default” の server に 80番ポートでアクセスできるようになるのではないでしょうか?

回答者: user28902

Leave a Reply

Your email address will not be published. Required fields are marked *