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

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

ただいまの
回答率

90.52%

  • Apache

    2070questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • nginx

    997questions

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

ApacheからNginxに移行する際に,php-fpmがつながりません。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,735

Jun5

score 2

ApacheからNginxに移行する際に,php-fpmがつながりません。
具体的には`
vi /var/log/nginx/error.logにてエラーコードを出力すると

[alert] 460#460: worker process 496 exited on signal 11と
[crit] 508#508: *26 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: unix:, server: , request: "GET / HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "ホスト名"
といったエラーコードが出力されます。

pagespeedというモジュールを導入する前は動いていたのですが,
動かなくなってしまいました。1週間ほど思考錯誤を繰り返しております。

①etc/nginx/nginx.confは以下の通り設定しており
user  nginx;

http {

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

②/etc/nginx/conf.d/default.confは以下のとおり設定しており。

 ドキュメントルート

root /var/www/xxxx/xxxxx;

 インデックスファイル指定等

index  index.php index.html index.htm;
proxy_cache_path  /var/cache/nginx keys_zone=czone:32m levels=1:2 inactive=3d max_size=256m;

proxy_cache czone;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_valid 200 404 1d;

 プロキシサーバ設定

server {
listen 80 default_server;

 ドットファイルへのアクセスを禁止、ログへの記録オフ

location ~ /\. {deny all; access_log off; log_not_found off; }

 robots.txt へのアクセスはログへの記録オフ

location = /robots.txt  { access_log off; log_not_found off; }

 favicon へのアクセスはログへの記録オフ

location = /favicon.ico { access_log off; log_not_found off; }
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
log_not_found off;
expires 10d; 
proxy_pass http://unix:/var/run/nginx.sock;
}

 初期値はキャッシュするにセット

set $do_not_cache 0;

 GET 時以外はキャッシュしない

if ($request_method != "GET") {
set $do_not_cache 1;
}

 クッキーから、コメント書き込み中、ログイン中、パスワード保護コンテンツはキャッシュしない

if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) {
set $do_not_cache 1;
}

 今まで組み立てたプロキシ設定でキャッシュを実行

location / {
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache_key "$scheme://$host$request_uri";
proxy_pass http://unix:/var/run/nginx.sock;
}
}

 ウェブサーバ設定

server {

 ポートを指定

listen unix:/var/run/nginx.sock;

 WordPress カスタム パーマネントリンク対応

try_files $uri $uri/ /index.php?q=$uri&$args;

 PHP-FPM 設定

location / {
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
location ~ \.php$ {
fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include        fastcgi_params;
}
}

③/etc/php-fpm.d/www.confにおいても権限,ユーザーを以下のとおり設定しております。
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

1週間ほど思考錯誤しているのですが,うまくつながりません。
どなたか詳しい方がいらっしゃいましたら、どうぞ宜しくお願いいたします。

なお,バージョン情報は以下のとおりです。
nginx version: nginx/1.10.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments:
--add-module=../../nginx_pagespeed2/ngx_pagespeed-release-1.9.32.3-beta
--prefix=/etc/nginx
--sbin-path=/usr/sbin/nginx
--modules-path=/usr/lib64/nginx/modules
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
--user=nginx --group=nginx
--with-file-aio
--with-threads
--with-ipv6
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-mail
--with-mail_ssl_module
--with-stream
--with-stream_ssl_module
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' 
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

/etc/php-fpm.confの内容(追記)

;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to PHP's install
; prefix.

; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
include=/etc/php-fpm.d/*.conf

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;

[global]
; Pid file
; Default Value: none
pid = /var/run/php-fpm/php-fpm.pid

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Default Value: /var/log/php-fpm.log
error_log = /var/log/php-fpm/error.log

; syslog_facility is used to specify what type of program is logging the
; message. This lets syslogd specify that messages from different facilities
; will be handled differently.
; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON)
; Default Value: daemon
;syslog.facility = daemon

; syslog_ident is prepended to every message. If you have multiple FPM
; instances running on the same server, you can change the default value
; which must suit common needs.
; Default Value: php-fpm
;syslog.ident = php-fpm
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
;log_level = notice

; If this number of child processes exit with SIGSEGV or SIGBUS within the time
; interval set by emergency_restart_interval then FPM will restart. A value
; of '0' means 'Off'.
; Default Value: 0
;emergency_restart_threshold = 0

; Interval of time used by emergency_restart_interval to determine when
; a graceful restart will be initiated.  This can be useful to work around
; accidental corruptions in an accelerator's shared memory.
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
;emergency_restart_interval = 0

; Time limit for child processes to wait for a reaction on signals from master.
; Available units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
;process_control_timeout = 0

; The maximum number of processes FPM will fork. This has been design to control
; the global number of processes when using dynamic PM within a lot of pools.
; Use it with caution.
; Note: A value of 0 indicates no limit
; Default Value: 0
;process.max = 128

; Specify the nice(2) priority to apply to the master process (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
;       - The pool process will inherit the master process priority
;         unless it specified otherwise
; Default Value: no set
;process.priority = -19

; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
daemonize = yes

; Set open file descriptor rlimit for the master process.
; Default Value: system defined value
;rlimit_files = 1024

; Set max core size rlimit for the master process.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0

; Specify the event mechanism FPM will use. The following is available:
; - select     (any POSIX os)
; - poll       (any POSIX os)
; - epoll      (linux >= 2.5.44)
; Default Value: not set (auto detection)
;events.mechanism = epoll

; When FPM is build with systemd integration, specify the interval,
; in second, between health report notification to systemd.
; Set to 0 to disable.
; Available Units: s(econds), m(inutes), h(ours)
; Default Unit: seconds
; Default value: 10
;systemd_interval = 10

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;

; Multiple pools of child processes may be started with different listening
; ports and different management options.  The name of the pool will be
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)

; See /etc/php-fpm.d/*.conf

ls -la /var/run/php-fpmの結果を追記しました。
ls -la /var/run/php-fpm
合計 8
drwxr-xr-x 2 root root 4096 3月 7 19:09 2017 .
drwxr-xr-x. 20 root root 4096 3月 7 19:18 2017 ..

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2017/03/08 08:58

    /etc/php-fpm.conf の設定を記載してもらえませんか。

    キャンセル

  • Jun5

    2017/03/08 11:54 編集

    お世話になっております。 /etc/php-fpm/.comfの内容になります。ポイントがわかりませんので,全て記載させて頂きます。

    キャンセル

回答 1

checkベストアンサー

+1

unix:/var/run/php-fpm/php-fpm.sock failed (2: No such file or directory) 

と出ていますが、このとき php-fpm は起動していて、このソケットは存在しているでしょうか?

もし、存在しているならば /var/run/php-fpm ディレクトリでは、nginx ユーザの検索権(xビット)はあるでしょうか?


コメントで以下の情報をいただきました。

ls -la /var/run/php-fpm
合計 8
drwxr-xr-x 2 root root 4096 37 19:09 2017 .
drwxr-xr-x. 20 root root 4096 37 19:18 2017 ..


php-fpm.sock ができてませんね。unix ドメインソケットは、サーバプロセスが起動時に作成し、サーバプロセスが落ちるとなくなるものです。つまり、このソケットが無いということは php-fpm のサーバプロセスが起動されていないかエラーでソケットを作成できなかったかのいずれかです。 ls -la の結果を見ると /var/run/php-fpm ディレクトリに nginx ユーザの書き込み権が無いので、エラーになっているのではないでしょうか。php-fpm のログを確認してみてください。おそらく、ソケットの作成に失敗しているので、

chown nginx:nginx /var/run/php-fpm

を実行後 php-fpm を再起動してみてください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/03/08 20:10

    ご回答大変ありがとうございます。
    取り急ぎ,ls -la/var/run/php-fpmの結果です。

    ls -la /var/run/php-fpm
    合計 8
    drwxr-xr-x 2 root root 4096 3月 7 19:09 2017 .
    drwxr-xr-x. 20 root root 4096 3月 7 19:18 2017 ..

    そもそも,php-fpmのソケットがなかったのかもしれません。
    なぜでしょう。難しいですね。。。

    キャンセル

  • 2017/03/08 21:02

    vim /etc/php-fpm.d/www.confの12行目
    ; Per pool prefix
    ; It only applies on the following directives:
    ; - 'slowlog'
    ; - 'listen' (unixsocket)

    ; - 'listen' (unixsocket)をlisten = /var/run/php-fpm/php-fpm.sock
    に書き換えればよいのでしょうか?でもphp-fpm.sockというのが元々ないのですよね?

    キャンセル

  • 2017/03/08 23:00

    念のため、確認です。
    > ③/etc/php-fpm.d/www.confにおいても権限,ユーザーを以下のとおり設定しております。
    > user = nginx
    > roup = nginx
    は group=nginx でないとだめだと思うのですが、コピペミスですよね?

    キャンセル

  • 2017/03/08 23:12

    あと、OSの種別・バージョンと php-fpm をどうやって起動しているかを教えて下さい。先程の回答で /var/run/php-fpm の user, group を chown すれば解決するかもと書きましたが、 /var/run はOSを再起動すると空っぽになります(Centos の場合)。したがって、誰かが mkdir しているはずなので、誰が mkdir しているか突き止めないと解決しないかもしれません。

    キャンセル

  • 2017/03/09 06:43

    ご丁寧にお返事ありがとうございます。勉強になり大変助かっております。
    さて,以下,ご質問への回答になります。

    ①roupはgroupの間違えでした。訂正いたしました。
    ②OSの種別について。
    cat /etc/redhat-release
    CentOS release 6.8 (Final)
    になります。
    ③php-fpmの起動の仕方
    /etc/init.d/php-fpm start
    にて起動しております。

    さて,ご教示頂いたとおり
    「chown nginx:nginx /var/run/php-fpm」にて,権限所有者を変更し
    ls -la /var/run/php-fpmにて確認したところ、以下のとおり,php-fpm.sockが出現いたしました。
    合計 12
    drwxr-xr-x 2 nginx nginx 4096 3月 9 06:23 2017 .
    drwxr-xr-x. 20 root root 4096 3月 9 06:23 2017 ..
    -rw-r--r-- 1 root root 5 3月 9 06:23 2017 php-fpm.pid
    srw-rw---- 1 nginx nginx 0 3月 9 06:23 2017 php-fpm.sock
    ありがとうございます。

    が,しかし,未だサイトが表示されない状況です。
    気になるエラーログとしては,

    ①[alert] 13577#13577: worker process 13663 exited on signal 11
    ②error] 13959#13959: *11 FastCGI sent in stderr: "PHP message: PHP Warning: session_start(): open(/var/lib/php/session/sess_cjca6g0s8i7lqlmt40n7kq1ds0, O_RDWR) failed: Permission denied (13) in /var/www/●●●●.com/●●●●/●●●●/●●●●/●●●●/●●●●/●●●●.php on line 1

    ①はnginx起動に伴うworker processなので,ほっておいても良いと理解しております。
    ②に関しましては,特定のphpがPermission denied (13)されてしまいます。
     chown -R nginx:nginx /var/www/●●●●.com/●●●_html/ にて所有権の変更,
    chown -R nginx:nginx /var/lib/php/session/にて sessionの所有権の変更を行っているのですが、、、

    キャンセル

  • 2017/03/09 06:46

    追記
    mkdirをしている誰かを突き止めるにはどの様にすればよいのでしょうか。

    キャンセル

  • 2017/03/09 08:55

    > open(/var/lib/php/session/sess_cjca6g0s8i7lqlmt40n7kq1ds0, O_RDWR) failed: Permission denied (13)

    selinux は enforcing ですか?その場合、一度 disable にして試してもらえませんか?

    キャンセル

  • 2017/03/09 11:28

    > /var/run はOSを再起動すると空っぽになります(Centos の場合)。
    これは、CentOS7 の場合でした。CentOS6 の場合は、再起動をこえて残りますので、一度 chown しておけば大丈夫です。mkdir しているのは、 /etc/init.d/php-fpm のスクリプトの中のようです。ディレクトリがなければ作るというコードになっているので、CentOS7 では問題になりそうですね。

    キャンセル

  • 2017/03/09 12:06

    お世話になっております。
    本当にご丁寧な回答ありがとうございます。
    SElinuxというモジュールを初めて知りました。
    さて,早速SElinuxの状態を調べてみたところ。

    # getenforce
    Disabled

    # sestatus
    SELinux status: disabled

    という,結果になりました。SElinuxについて,少々勉強をしてみます。
    取り急ぎのご回答まで。
    ありがとうございます。

    キャンセル

  • 2017/03/09 14:50

    > open(/var/lib/php/session/sess_cjca6g0s8i7lqlmt40n7kq1ds0, O_RDWR) failed: Permission denied (13)

    ぐぐると、chmod 777 /var/lib/php/session しろとか save_path を /tmp にしろとかでますね。プロセスの uid, gid (ps -o pid,user,group,args -C php-fpm,nginx で取得)とディレクトリの ls -la の結果を照合してみるとどうなりますでしょうか?

    キャンセル

  • 2017/03/09 20:02

    お世話になっております。
    お返事ありがとうございます。
    ①chmod -R 777 /var/lib/php/session/  
    「-R」をつけることにて,open(/var/lib/php/session/sess_cjca6g0s8i7lqlmt40n7kq1ds0, O_RDWR) failed: Permission denied (13)は消えました。
    ②ps -o pid,user,group,args -C php-fpm,nginxでは
    PID USER GROUP COMMAND
    13197 nginx nginx nginx: cache manager process
    の様になっております。
    ③残るは,
    [alert] 19716#19716: worker process 19718 exited on signal 11
    [alert] 19899#19899: worker process 19900 exited on signal 11
    [alert] 19899#19899: worker process 19902 exited on signal 11
    [alert] 19899#19899: worker process 19901 exited on signal 11
    が残っており,ページが表示されません。
    ググると同じ様な現象がでている様なので調べてみます。
    ありがとうございます。

    キャンセル

  • 2017/03/10 19:37

    nginx が割り込んでいます。これを解析するのはかなり難易度が高いです。nginx のデバッグ版をビルドして、そのログを調べる必要があります。それでわからなければ、 core dump を吐くように設定し、gdb でスタックトレースを解析し、nginx のソースコードをみて、割り込みの原因を追求するといった手順になります。
    https://www.nginx.com/resources/wiki/start/topics/tutorials/debugging/

    キャンセル

  • 2017/03/12 11:33

    ありがとうございます。
    一度,nginxをyum remove して再インストールしなおしました。
    ご丁寧にありがとうございました。
    なかなか、奥が深い世界ですね。
    勉強しなおします。

    キャンセル

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

  • Apache

    2070questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • nginx

    997questions

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