いつもお世話になっております。
PHP-FPM+Nginxで動作していたWebアプリケーションを、HHVM(FastCGIモード)+Nginxで動作するよう環境設定を行っております。
一通り環境設定が終了し、試しにWebアプリへアクセスしてみたのですが、Nginx側で502エラーが返り上手く動作しません。
NginxやHHVMにはあまり詳しくなく、どこを修正すればいいのかよく分かっていない状態です。
こちらで設定した内容や、具体的な事象を以下に記載しますので、お手数ですがアドバイスを頂けると幸いです。やや広い問題かと思いますので、「xxあたりを調べれば良いのではないか」「xxにあるログファイルを見れば良いのではないか」などを教えて頂くだけでも大変助かります。
サーバの環境
- Ubuntu 16.04(64bit)
- Nginx 1.10.3
- HHVM 3.21.0
現象
- HHVM(FastCGI、daemonモード)とNginxで環境構築したWebサーバにアクセスすると、502エラーが返ります。
/var/log/nginx
以下のエラーログファイルには、以下のようなエラーログが記録されます(他に有益そうな情報は見当たりませんでした)。
2017/08/25 18:39:31 [error] 1635#1635: *36 connect() failed (111: Connection refused) while connecting to upstream, client: 118.238.254.78, server: (サーバ名), request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "(サーバ名)"
- HHVMのエラーは、
/var/log/hhvm/error.log
に出力するよう設定したのですが、こちらは空ファイルが生成されるのみで、エラー内容は記載されておりませんでした。 - また、
service --status-all
コマンドでサービスの起動状態を確認すると、HHVMが起動していないようでした(コマンドでの起動時に、特にエラーは出力されず)。
設定した内容
- サーバ上で動作しているPHP-FPMを、以下コマンドで停止しました。
sudo service php5.6-fpm stop
- /etc/nginx以下の設定ファイルにおける、各ブロック内のFastCGIに関するパラメータを、以下のように修正しました。
# 以下のソケットファイルを見に行くよう修正しました。 fastcgi_pass unix:/var/run/hhvm/sock; # その他のディレクティブは変更なしです。 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$script; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_NAME $name;
- /etc/hhvm/server.iniファイルを以下のように編集しました。
... hhvm.server.file_socket = /var/run/hhvm/sock hhvm.server.type = fastcgi hhvm.server.default_document = index.php hhvm.log.use_log_file = true hhvm.log.file = /var/log/hhvm/error.log hhvm.repo.central.path = /var/cache/hhvm/hhvm.hhbc ...
- 以下のコマンドで、Nginxを再起動しました。
nginx -s reload
- 以下のコマンドで、HHVMをdaemonモードで起動しました。
hhvm --mode daemon -u (ユーザ名) -d hhvm.server.type=fastcgi -d hhvm.server.file_socket=/var/run/hhvm/sock -d pid=/var/run/hhvm/pid