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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

9111閲覧

Nginx WordPressの初期設定ページが表示されない

ruby_0ct

総合スコア57

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2017/09/15 07:48

編集2017/09/26 07:52

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さんのご回答は非常に勉強になりました。ありがとうございました。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/09/15 11: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 12:11

php-fpmは正常に起動してますか?php-fpmのログにエラーは出ていませんか?wordpressの前にphpinfoが表示されるかを試した方がいいかと思います
退会済みユーザー

退会済みユーザー

2017/09/24 07:25 編集

nginxはどこからインストールしてますか? また、インストール先が/var/www/wordpressならhttp://ドメイン名/wordpress/にはならないと思いますが違いますか?
guest

回答2

0

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) 追記

@wordpresstry_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; }

投稿2017/09/15 14:38

編集2017/09/24 06:10
TaichiYanagiya

総合スコア12146

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

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

TaichiYanagiya

2017/09/19 02:12

Wordpress のインストール場所は /var/www/html/wordpress と /var/www/wordpress のどちらでしょうか? それに合わせて location ~ \.php$ { } の root を設定ください。 location @wordpress { } の SCRIPT_FILENAME のパスも。 try_files については、私はわからないのですが、Wordpress の作法に合わせて設定ください。
guest

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さんのご回答は非常に勉強になりました。ありがとうございました。

投稿2017/09/26 07:54

ruby_0ct

総合スコア57

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問