
VPSでCentOS7にWordPressをインストールしたのですが、ブラウザ上で行う初期設定ページ(ドメイン/wordpress/wp-config.phpとindex.phpの両方)が「502 (Bad Gateway)」とのエラーで、
Nginxのエラーページ(An error occurred.)が表示され、初期設定ページが表示されない状況です。
おそらく、php-fpmの設定が原因だと思うのですが、調べてもサイトによってまちまちでその通り行ってもうまくいきません。
クライアントがアクセスした際のNginxエラーログ
[error] 20450#20450: *1 connect() failed (111: Connection refused) while connecting to upstream, client: クライアントのIPアドレス, server: ドメイン名, request: "GET /wordpress/wp-config.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "ドメイン名"
/etc/nginx/nginx.confのserver{}内には以下の内容を記述しました。
location ~ .php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/wordpress$document_root$fastcgi_script_name; include fastcgi_params; } location @wordpress { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/wordpress/index.php; include fastcgi_params; }
/etc/php.iniでメモリー変更も行いました。
memory_limit = 128Mから256Mに変更
ただ、以下の/etc/php-fpm.d/www.confは十分だと思ったので、メモリーの変更はしていません。
pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 ;pm.max_requests = 500
ちなみに、VPSはConohaのメモリ512MBプランを利用しています。
doss攻撃の影響もあるというサイトもあったので、アクセスログを確認をしましたが、その可能性は全くありませんでした。
バージョンは以下の通りです。
- php-fpm:PHP 5.4.16 (fpm-fcgi) (built: Nov 6 2016 00:30:57)
- php:PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02)
Nginxは始めたばかりで曖昧な部分もあるため、教えていただけると幸いです。
よろしくお願いします。
###追記1 2017/09/16 20:42
ay03さん
ご回答ありがとうございます。
/wp-admin/install.phpの部分は曖昧でした。勉強になります。
見直してみると、確かにどの時点のエラーかわかりにくかったですね。すみません。
クライアントがサイトへアクセスした際に吐かれるエラーです。
php5である理由は特にありませんが、インストールした際に5だったのでそのまま使っていました。
今回を機会に7へアップデートを行いました!
3nekoさん
ご回答ありがとうございます。
php-fpmは正常に起動しています。phpinfoも正常に表示されます。
php-fpmのログを確認しましたが、エラーは出ていませんでした。
TaichiYanagiyaさん
ご回答ありがとうございます。
おっしゃる通り、php-fpm側(/etc/php-fpm.d/www.conf)が /var/run/php-fpm/php-fpm.sock
になっていたので、
/etc/nginx/nginx.conf のfastcgi_passと合わせ、 127.0.0.1:9000;
に修正しました。
しかし、http://ドメイン名/wordpress/wp-admin/install.phpにアクセスすると、404でファイルが見つからないとエラーとなってしまいます。
ディレクトリを確認するとファイルはあるのですが、ブラウザ上だと見つからないようで、何が原因でしょうか?
rootは/var/www/htmlなんですが、上記に書いたfastcgi_paramが間違えていたため、
location ~ .php$を
fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress$document_root$fastcgi_script_name;
に修正し、location @wordpressを
fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress/index.php;
に修正したのですが、同じエラーでうまくいきませんでした。
クライアントがアクセスした際のNginxエラーログ
[error]32126#32126: *10 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: クライアントのIPアドレス, server: ドメイン名, request: "GET /wordpress/wp-admin/install.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "ドメイン名"
###追記2 2017/09/19 00:00
ご回答ありがとうございます。
「@wordpress は try_files から参照されるもの」この部分がイマイチわかっていないのですが、try_files
はパーマリンクに対応するための記述で、書き方としては location ~ .php$ {}
の上部部分に
try_files $uri $uri/ /index.php?q=$uri&$args;
というふうに記述する認識で問題ないでしょうか。
$document_rootに関しての設定は納得です。
/etc/nginx/nginx.confはこのように設定しました。
try_files $uri $uri/ /index.php?q=$uri&$args; location ~ .php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location @wordpress { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/wordpress/index.php; include fastcgi_params; }
しかし、File not foundで繋がりません。
nginxのエラーは以前と一緒です。
###追記3 2017/09/24 13:49
TaichiYanagiyaさん
WordPressのインストール場所は、/var/www/wordpressです。
ひとまず、/etc/nginx/nginx.confの設定のしなおしを行いました。
location ~ .php$ { try_files $uri @wordpress; root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location @wordpress { fastcgi_index index.php; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/wordpress/index.php; include fastcgi_params; }
そうすると、502(Bat gateway)になり、nginxのエラーは以下の通りにエラー表示が変わりました。
connect() to unix:/var/run/php-fpm/php-fpm.sock failed (2: No such file or directory)
下記のサイトと同じパターンだったので、参考にしてやってみましたが、「試したことその3」にある/etc/php-fpm.d/www.confの編集を行っても、
connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied)
とパーミッションエラーが出てしまい、ここで詰まっている状況です。
- 参考サイト
###【解決】追記4 2017/9/26 16:49
TaichiYanagiyaさんとay03さん
ay03さんのご指摘で気づいたのですが、結論から言いますと、locationのrootをこれまで /var/www/html
としていましたが、 /var/www/wordpress
に設定する必要があり、ここが原因だったことがわかりました。
今回、自作したWebページにブログのページ部分だけをWordPressで管理したくて導入・設定を行っていたのですが、うまくいかず、こちらに質問を投稿しました。
私の認識としましては、ブログページ部分のみに導入されれば良いので、locationのroot設定は /var/www/html
で何ら問題ないという前提で質問したのですが、ay03さんのご指摘で「論理的に考えて確かにそうだな」と思い、色々試してみた結果、locationのrootにたどり着きここが原因だと発覚しました。
ただこのままだと、すべてのページがWordPressの支配下に置かれるので、それを避けるべく調べていたところnignxのバーチャルホストで分けることで解決したので、すべての問題が丸く解決しました。
根本的なところですみません。
ay03さんありがとうございました。
また、TaichiYanagiyaさんのご回答は非常に勉強になりました。ありがとうございました。



回答2件
あなたの回答
tips
プレビュー