質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Ruby on Rails

    7231questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • nginx

    836questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • VPS

    345questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

nginxで(111: Connection refused)エラーがでます。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 7,407

s.k

score 247

前提・実現したいこと

nginxを正しく設定してrailsアプリをunicorn経由で表示したいです。

発生している問題・エラーメッセージ

【ブラウザ】

502 Bad Gateway

【エラーログ】

2017/02/07 00:52:16 [error] 7050#7050: *9 connect() to unix:/var/run/unicorn/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: anime-report, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/unicorn/unicorn.sock:/", host: "xxx.xx.xxx.xx"

ポート番号がいけないのでしょうか。。。

該当のソースコード

【config/unicorn.rb】

worker_processes 2
working_directory "/home/anime/app/anime-report"

listen "/var/run/unicorn/unicorn.sock"
pid "/var/run/unicorn/unicorn.pid"

preload_app true

【/etc/nginx/nginx.conf】

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

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

【/etc/nginx/conf.d/sample.conf】

upstream unicorn-unix-domain-socket {
    server unix:/var/run/unicorn/unicorn.sock fail_timeout=0;
}

upstream unicorn-tcp {
    server xxx.xx.xxx.xx;
}

server {
    listen 80;
    server_name anime-report;

    root /home/anime/app/anime-report/public;

    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
            proxy_pass http://unicorn-unix-domain-socket;
    }
 }

ご経験ある方、ご指摘お願いします。

追加

【INETに変更後】

2017/02/07 10:48:29 [error] 7984#7984: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 126.129.108.242, server: anime-report, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "xxx.xx.xxx.xx"
[anime@tk2-241-30026 etc]$ service nginx configtest
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2017/02/07 11:12:32 [warn] 8111#8111: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2017/02/07 11:12:32 [emerg] 8111#8111: open() "/var/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
[anime@tk2-241-30026 etc]$ ps aux | grep nginx
root      8080  0.0  0.0  45096  1044 ?        Ss   10:57   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     8081  0.0  0.1  45492  2124 ?        S    10:57   0:00 nginx: worker process
anime     8115  0.0  0.0 103328   868 pts/0    S+   11:16   0:00 grep nginx
[anime@tk2-241-30026 etc]$ sudo tcpdump -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:48:01.461745 IP 157.119.234.13 > 160.16.198.30: ICMP echo request, id 23721, seq 2846, length 64
11:48:01.461908 IP 160.16.198.30 > 157.119.234.13: ICMP echo reply, id 23721, seq 2846, length 64
11:48:03.591478 IP 139.5.110.36 > 160.16.198.30: ICMP echo request, id 23756, seq 631, length 64
11:48:03.591622 IP 160.16.198.30 > 139.5.110.36: ICMP echo reply, id 23756, seq 631, length 64
11:48:05.294145 IP 157.119.234.13 > 160.16.198.30: ICMP echo request, 
[anime@tk2-241-30026 ~]$ ls -l /var/
合計 76
drwxr-xr-x.  2 root root 4096 126 19:09 2016 account
drwxr-xr-x. 10 root root 4096  119 23:09 2017 cache
drwxr-xr-x.  2 root root 4096 1119 00:19 2016 crash
drwxr-xr-x.  2 root root 4096 1122 21:29 2013 cvs
drwxr-xr-x.  3 root root 4096 126 19:09 2016 db
drwxr-xr-x.  3 root root 4096 126 19:09 2016 empty
drwxr-xr-x.  2 root root 4096  923 20:50 2011 games
drwxr-xr-x. 27 root root 4096  27 03:02 2017 lib
drwxr-xr-x.  2 root root 4096  923 20:50 2011 local
drwxrwxr-x.  5 root lock 4096  27 03:02 2017 lock
drwxr-xr-x.  9 root root 4096  25 04:51 2017 log
lrwxrwxrwx.  1 root root   10  118 23:08 2017 mail -> spool/mail
drwxr-xr-x.  2 root root 4096  923 20:50 2011 nis
drwxr-xr-x.  2 root root 4096  923 20:50 2011 opt
drwxr-xr-x.  2 root root 4096  923 20:50 2011 preserve
drwxr-xr-x. 20 root root 4096  27 10:57 2017 run
drwxr-xr-x. 11 root root 4096 126 19:09 2016 spool
drwxrwxrwt.  5 root root 4096  27 12:08 2017 tmp
drwxr-xr-x   6 root root 4096  119 11:25 2017 www
drwxr-xr-x.  2 root root 4096  923 20:50 2011 yp
[anime@tk2-241-30026 ~]$ ls -l /var/run/
合計 108
drwxr-xr-x. 2 root      root      4096  511 06:09 2016 ConsoleKit
drwxr-xr-x. 2 root      root      4096  512 05:43 2016 abrt
-rw-r--r--  1 root      root         5  128 12:53 2017 acpid.pid
srw-rw-rw-  1 root      root         0  128 12:53 2017 acpid.socket
-rw-r--r--  1 root      root         5  128 12:53 2017 atd.pid
drwxr-xr-x. 2 root      root      4096  511 08:18 2016 console
----------  1 root      root         0  128 12:53 2017 cron.reboot
-rw-r--r--  1 root      root         5  128 12:53 2017 crond.pid
drwxr-xr-x. 2 root      root      4096  422 19:52 2015 dbus
drwxr-xr-x. 2 root      root      4096  128 12:53 2017 fail2ban
drwxr-xr-x. 2 root      root      4096  511 08:18 2016 faillock
drwx------. 2 haldaemon haldaemon 4096 1015 19:49 2014 hald
drwx--x---  2 root      apache    4096  21 21:34 2017 httpd
-rw-r--r--  1 root      root         5  128 12:53 2017 irqbalance.pid
drwx------. 2 root      root      4096  824 03:37 2016 lvm
drwx------. 2 root      root      4096  713 00:43 2016 mdadm
drwxr-xr-x  2 mysql     mysql     4096  128 12:53 2017 mysqld
drwxrwxr-x. 2 root      root      4096  713 01:40 2016 netreport
-rw-r--r--  1 root      root         5  27 10:57 2017 nginx.pid
-rw-r--r--  1 root      root         4  128 12:53 2017 ntpd.pid
drwxr-xr-x. 2 root      root      4096  812 02:59 2014 plymouth
drwxr-xr-x. 4 root      root      4096 126 19:09 2016 pm-utils
drwxr-xr-x. 2 root      root      4096  325 19:24 2015 saslauthd
drwxr-xr-x. 2 root      root      4096  511 08:18 2016 sepermit
drwxr-xr-x. 2 root      root      4096  511 07:59 2016 setrans
-rw-r--r--  1 root      root         6  22 09:53 2017 sshd.pid
-rw-------  1 root      root         5  128 12:53 2017 syslogd.pid
drwxrwxrwx  2 root      root      4096  26 21:39 2017 unicorn
-rw-rw-r--  1 root      utmp      2688  27 10:42 2017 utmp
[anime@tk2-241-30026 ~]$ ls -l /var/run/unicorn/
合計 4
-rw-r--r-- 1 anime anime 5  26 21:39 2017 unicorn.pid
srwxrwxrwx 1 anime anime 0  26 21:39 2017 unicorn.sock
[anime@tk2-241-30026 log]$ cat unicorn-stderr.log
I, [2017-02-06T15:49:11.050366 #2363]  INFO -- : Refreshing Gem list
DEPRECATION WARNING: `config.serve_static_files` is deprecated and will be removed in Rails 5.1.
Please use `config.public_file_server.enabled = false` instead.
 (called from block in <top (required)> at /home/anime/var/www/anime-report/config/environments/production.rb:25)
I, [2017-02-06T15:49:12.997127 #2363]  INFO -- : listening on addr=/home/anime/var/www/anime-report/tmp/sockets/unicorn.sock fd=8
I, [2017-02-06T15:49:12.997561 #2363]  INFO -- : worker=0 spawning...
I, [2017-02-06T15:49:13.002448 #2363]  INFO -- : worker=1 spawning...
I, [2017-02-06T15:49:13.005643 #2363]  INFO -- : master process ready
I, [2017-02-06T15:49:13.300405 #2369]  INFO -- : worker=1 ready
I, [2017-02-06T15:49:13.353984 #2366]  INFO -- : worker=0 ready
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

/var/run/unicorn/unicorn.sockはrails_appを起動しているユーザー、Nginxを起動しているユーザーが読み書き可能となっていますか?
ls -l /var/run/unicorn/unicorn.sockの結果を教えてください。

私見ですが、UNIXドメインソケットでの利用はトラブルが多いので、INETドメインソケットを利用しています。
INETドメインソケットに変更されてみては如何でしょうか。

  • config/unicorn.rb
listen 3000
  • /etc/nginx/conf.d/sample.conf
upstream unicorn-tcp {
    server 127.0.0.1:3000;
}

...

    location / {
            proxy_pass http://unicorn-tcp;
    }

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/07 10:44

    [anime@tk2-241-30026 ~]$ ls -l /var/run/unicorn/unicorn.sock
    srwxrwxrwx 1 anime anime 0 2月 6 21:39 2017 /var/run/unicorn/unicorn.sock


    [root@tk2-241-30026 ~]# ls -l /var/run/unicorn/unicorn.sock
    srwxrwxrwx 1 anime anime 0 2月 6 21:39 2017 /var/run/unicorn/unicorn.sock

    このように返ってきました!
    INETを今から試してみます!

    キャンセル

  • 2017/02/07 10:51

    INETを試したんですが、特にエラーに変化はありませんでした!

    キャンセル

  • 2017/02/07 10:54

    この場合、権限はanimeではなくnginxの方がいいのですかね??

    キャンセル

  • 2017/02/07 12:00

    UNIXドメインソケットは権限がrwxrwxrwxなので問題ありません。

    また、以下ディレクトリが全てnginxユーザーが参照できれば問題ありません。
    /var/
    /var/run/
    /var/run/unicorn/

    キャンセル

  • 2017/02/07 12:01

    INETドメインに変更した後、次のコマンドを実行するとどうなりますか?
    curl -i http://127.0.0.1:3000/
    Nginxを挟まずに直接Rails appのEndpointを叩いてみましょう。

    キャンセル

  • 2017/02/07 12:10

    [anime@tk2-241-30026 ~]$ curl -i http://127.0.0.1:3000/
    curl: (7) couldn't connect to host

    [root@tk2-241-30026 ~]# curl -i http://127.0.0.1:3000/
    curl: (7) couldn't connect to host


    こうなりました。
    違っていれば指摘お願します(*_*;

    キャンセル

  • 2017/02/07 12:12

    Rails appが起動していないようです。Rails appのログはどうなっていますか?

    キャンセル

  • 2017/02/07 12:14

    unicornのログでしょうか?

    [anime@tk2-241-30026 ~]$ ps -ef | grep unicorn | grep -v grep
    anime 2363 1 0 Feb06 ? 00:00:07 unicorn_rails master -c config/unicorn.rb -E production -D
    anime 2366 2363 0 Feb06 ? 00:00:08 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
    anime 2369 2363 0 Feb06 ? 00:00:08 unicorn_rails worker[1] -c config/unicorn.rb -E production -D

    キャンセル

  • 2017/02/07 12:19

    残っていませんでした。。。

    [anime@tk2-241-30026 log]$ cat production.log
    [anime@tk2-241-30026 log]$

    キャンセル

  • 2017/02/07 13:41

    cat unicorn-stderr.logにログが残っていました。
    追加で載せました。

    キャンセル

  • 2017/02/07 17:53

    [root@tk2-241-30026 ~]# lsof -i tcp:80
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    nginx 9787 root 6u IPv4 383010 0t0 TCP *:http (LISTEN)
    nginx 9788 nginx 3u IPv4 383189 0t0 TCP tk2-241-30026.vs.sakura.ne.jp:http->95.10.227.2.dynamic.ttnet.com.tr:21148 (ESTABLISHED)
    nginx 9788 nginx 6u IPv4 383010 0t0 TCP *:http (LISTEN)

    もし関係ありましたら…

    キャンセル

  • 2017/02/07 23:08

    Listen addressが/home/anime/var/www/anime-report/tmp/sockets/unicorn.sockになっていますね。
    こちらを指定すればいけると思います。
    既に解決したようで良かったです。

    キャンセル

check解決した方法

0

unicornを起動しているアプリとnginxの設定をしているアプリが違っていました。

アプリをいくつもcloneしており、混雑している中で作業をしていました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails

    7231questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • nginx

    836questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • VPS

    345questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。