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)
とパーミッションエラーが出てしまい、ここで詰まっている状況です。
- 参考サイト
http://kawatama.net/web/1352
【解決】追記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さんのご回答は非常に勉強になりました。ありがとうございました。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
fastcgi_pass の 2つの設定がそれぞれ TCP とソケットファイルになっていますが、php-fpm 側の設定(/etc/php-fpm.d/www.conf) の listen と合わせる必要があります。
Nginx のエラーログを見ると、おそらく php-fpm 側で listen = /var/run/php-fpm/php-fpm.sock
になっていて、fastcgi_pass 127.0.0.1:9000;
と合っていないのだと思います。
(2017/09/17 00:21) 追記
@wordpress
は try_files
から参照されるものだと思いますが、質問文の設定には見当たらないので、わかりません。
通常の .php は location ~ \.php$
の方で処理されます。
fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress$document_root$fastcgi_script_name;
これだと、$document_root が以下のように置き換えられてしまうと思います。
fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress/var/www/html$fastcgi_script_name;
Wordpress を /var/www/html/wordpress/ に配置したのであれば、以下のようにしてみてください。
location ~ \.php$ {
root /var/www/html/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
(2017/09/24 15:10) 追記
WordPressのインストール場所は、/var/www/wordpressです。
location ~ \.php$ {
root /var/www/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
check解決した方法
0
【解決】2017/9/26 16:53
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さんのご回答は非常に勉強になりました。ありがとうございました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.38%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
退会済みユーザー
2017/09/15 20:11
WordPressのインストールの際、通常wp-config.phpが無い場合/wp-admin/setup-config.phpにリダイレクトしてwp-config.phpを作り、その後/wp-admin/install.phpに移動します。wp-config.phpは設定ファイルなのでブラウザでアクセスしても無意味ですが… とりあえずどの時点でのエラーなのかいまいち分かりません。あと、余計なお世話かもしれませんが、なぜ古いバージョンのPHPを使うのでしょうか?
scsi
2017/09/15 21:11
php-fpmは正常に起動してますか?php-fpmのログにエラーは出ていませんか?wordpressの前にphpinfoが表示されるかを試した方がいいかと思います
退会済みユーザー
2017/09/24 16:12 編集
nginxはどこからインストールしてますか?
また、インストール先が/var/www/wordpressならhttp://ドメイン名/wordpress/にはならないと思いますが違いますか?