ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    Nginx+PHPで502 Bad Gatewayを解決する方法

    このエントリーを含むはてなブックマーク はてなブックマーク - Nginx+PHPで502 Bad Gatewayを解決する方法 あとで読む
    VirtualBox上に、CentOS6.3+Nginx1.2.6+PHP5.4.11で、テストサーバーを構築している。
    PHP関連の設定がうまくいかなくて、PHPスクリプトにアクセスすると、「502 Bad Gateway」というエラーメッセージが出る。

    原因は、PHP-FPMが、自動起動していないことだった。
    PHP-FPMを自動起動するように設定を変更したら、NginxがFastCGI経由でPHPスクリプトを正常に処理できるようになった。

    (参考)以下の解説の通りやったら、うまくいった!
    メモ 【php】php-fpmのインストール

    ・php5.4とnginxをインストールした後、php-fpmをインストールする。

    (1) インストール

    # yum --enablerepo=remi-test install php-fpm



    ・基本設定(php-fpm.conf)と各種設定がある(/etc/php-fpm.d/)
    ・サービスとして提供されている

    設定は、
    http://www.php.net/manual/ja/install.fpm.configuration.php
    を参考にする。

    サービスは、
    /etc/rc.d/init.d/php-fpm
    の中身を見てみる。
    引数には以下のものがある。

    start
    stop
    status
    restart
    reload
    force-reload
    condrestart
    try-restart

    →reloadは、設定ファイルの再読み込み。
    →apacheやnginxのモジュールとして動くわけではないので、HTTPサーバーを再起動しただけでは、PHP-FPMの設定変更が反映されないので注意!

    (2) 自動起動

    ・確認
    # chkconfig | grep php

    php-fpm 0:off 1:off 2:off 3:off 4:off 5:off 6:off



    ・下記コマンドで自動起動にする。
    # chkconfig php-fpm on

    # chkconfig | grep php

    php-fpm 0:off 1:off 2:on 3:off 4:off 5:on 6:off



    (3) 起動

    # service php-fpm start
    php-fpm を起動中: [ OK ]

    PHP-FPMがサービスとして起動すると、「502 Bad Gateway」が解消された。


    ●その他の設定変更
    その他、変更部分のメモ。

    /etc/php-fpm.d/www.conf

    ; RPM: apache Choosed to be able to access some dir as httpd
    user = nginx
    ; RPM: Keep a group allowed to write in log dir.
    group = nginx



    → userとgroupが「apache」になっていたので「nginx」に変更した。
    =自分のセットアップ方法では、Nginxを動かすのに、「nginx」というユーザーを追加していたので。


    ●チェック箇所
    サーバーのエラーをチェックするに際して、以下4点を確認しよう。

    (1) Nginx
    ・Nginxの設定ファイル
     → /usr/local/nginx/conf/nginx.conf
    ・Nginxの設定ファイルの文法チェック
     → # service nginx configtest
    ・Nginxの再起動
     → # service nginx restart
    ・Nginxのエラーログ
     → /usr/local/nginx/logs/error.log

    (2) iptables
    ・iptables(ファイアーウォール)の設定ファイル(IPv4用)
     → /etc/sysconfig/iptables
    ・iptables設定の確認方法
     → # iptables -L
    ・iptablesサービスの再起動。設定ファイルを修正したとき、再起動が必要。
     → # /etc/init.d/iptables restart

    (3) PHP
    ・PHPの設定ファイル
     → /etc/php.ini

    (4) PHP-FPM
    ・PHP-FPMの設定ファイル
     → /etc/php-fpm.conf
     → /etc/php-fpm.d/www.conf

    ポート9000番でFastCGIを使っているが、ファイアーウォールでは遮断していなかった。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/886-eb3f143c

    FC2Ad