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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

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

nginx

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

Q&A

解決済

1回答

8790閲覧

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

Jun5

総合スコア10

Apache

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

nginx

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

0グッド

0クリップ

投稿2017/03/07 12:18

編集2017/03/08 21:18

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 ..

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/03/07 23:58

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

2017/03/08 02:59 編集

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

回答1

0

ベストアンサー

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 3月 7 19:09 2017 . drwxr-xr-x. 20 root root 4096 3月 7 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 09:08

編集2017/03/08 13:55
mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Jun5

2017/03/08 11: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のソケットがなかったのかもしれません。 なぜでしょう。難しいですね。。。
Jun5

2017/03/08 12: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というのが元々ないのですよね?
mit0223

2017/03/08 14:00

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

2017/03/08 14:12

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

2017/03/08 21: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の所有権の変更を行っているのですが、、、
Jun5

2017/03/08 21:46

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

2017/03/08 23:55

> open(/var/lib/php/session/sess_cjca6g0s8i7lqlmt40n7kq1ds0, O_RDWR) failed: Permission denied (13) selinux は enforcing ですか?その場合、一度 disable にして試してもらえませんか?
mit0223

2017/03/09 02:28

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

2017/03/09 03:06

お世話になっております。 本当にご丁寧な回答ありがとうございます。 SElinuxというモジュールを初めて知りました。 さて,早速SElinuxの状態を調べてみたところ。 # getenforce Disabled # sestatus SELinux status: disabled という,結果になりました。SElinuxについて,少々勉強をしてみます。 取り急ぎのご回答まで。 ありがとうございます。
mit0223

2017/03/09 05: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 の結果を照合してみるとどうなりますでしょうか?
Jun5

2017/03/09 11: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 が残っており,ページが表示されません。 ググると同じ様な現象がでている様なので調べてみます。 ありがとうございます。
mit0223

2017/03/10 10:37

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

2017/03/12 02:33

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問