HHVM을 PHP-FPM으로 대체

HHVM을 PHP-FPM으로 대체

HHVM을 메인으로, PHP-FPM을 백업으로 사용하여 nginx에서 PHP 애플리케이션을 실행하고 있습니다.

이것은 PHP 처리에 관한 nginx 구성입니다.

  location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;
    error_page 500 501 502 503 = @fallback;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    127.0.0.1:9000;
  }

  location @fallback {

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    unix:/var/run/php5-fpm.sock;

  }

구성을 테스트하기 위해 hhvm 서비스를 중지했습니다. 일반적으로 이 서비스는 요청을 PHP-FPM에 전달하고 200을 반환해야 하지만 다음과 같이 502 오류가 발생합니다.

12296#0: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.34.235, server: stylep3.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host:localhost

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

hhvm이 nginx의 기본 vhost 파일에 hhvm.conf를 포함한다는 것을 발견했습니다.

이는 요청을 처리하고 오류를 보내는 것입니다.

구성을 다음으로 수정했습니다.

upstream php_backend {
  server 127.0.0.1:9000;
  server unix:/var/run/php5-fpm.sock backup;
}


server {
#
# other conf...
#

 location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    php_backend;
  }

}

그리고 줄을 제거했습니다

include hhvm.conf

가상 호스트 파일에서.

문제가 해결되었습니다!

관련 정보