본문 바로가기

워드프레스 cPanel 서버에서 PHP-FPM 활성화가 안될 때 확인할 설정

잡가이버 2025. 10. 12.
728x90
반응형

cPanel VPS에서 느린 워드프레스, Apache와 PHP-FPM 설정으로 개선하기

워드프레스를 블루호스트 VPS에서 운영하다 보면, 처음엔 괜찮았던 사이트 속도가 어느 순간부터 느려지는 걸 체감하게 된다. 특히 플러그인이 많아지거나 트래픽이 늘어나면 PHP 처리 속도가 병목 현상을 일으켜 전체적인 페이지 로딩 속도에 영향을 주기 시작한다. 단순히 캐시 플러그인 하나로 해결할 수 있는 문제가 아닌 경우도 많다.

나 역시 블루호스트 VPS에서 워드프레스를 운영 중인데, 사이트 응답 속도가 심각하게 느려져 직접 서버 설정을 손봐야 했다. WHM에서 Apache 구성 항목을 살펴보니, PHP 핸들러로 선택 가능한 옵션은 suphp, cgi, none뿐이었고, 고성능으로 알려진 PHP-FPM(FastCGI Process Manager)은 아예 비활성화 상태였다.

워드프레스 cPanel 서버에서 PHP-FPM 활성화가 안될 때 확인할 설정

결론부터 말하자면, 단순히 ea-phpXX-php-fpm 패키지를 설치하는 것만으로는 FPM이 작동하지 않는다. Apache 모듈과 핸들러 연결, 그리고 적절한 MPM 설정이 모두 갖춰져 있어야 FPM이 제대로 활성화된다.

FPM을 활성화하려면 mod_proxy_fcgi가 설치되어 있어야 하고, Apache는 mpm_worker 또는 mpm_event 방식으로 구동되어야 한다. 성능과 안정성 면에서 mpm_event가 권장되기 때문에, EasyApache4에서 mod_mpm_event를 수동 설치한 후 설정을 반영하는 절차가 필요했다.

우선 해당 과정을 단계별로 정리해두었고, PHP 핸들러 구성에서 FPM을 적용하는 실질적인 방법을 공유한다.

⚠️ 설치 시 기존의 mod_mpm_worker는 자동 제거되는데 이는 정상적인 동작이다.

cPanel 환경에서 PHP-FPM을 설정하려 했는데, 분명 ea-php83-php-fpm 패키지도 설치했고 proxy_fcgi_module도 로드되어 있는데 rebuild_phpconf --available 명령에서 fpm이 보이지 않는 경우가 있다. 이럴 땐 단순히 모듈 설치만으로는 해결되지 않는다.

PHP-FPM 활성화가 정상적으로 되지 않는 대표적인 증상은 다음과 같다.

  • ea-php83-php-fpm은 설치되어 있고 httpd -M에 proxy_fcgi_module이 표시됨
  • /usr/local/cpanel/scripts/php_fpm_config --rebuild 실행 후에도 변화 없음
  • rebuild_phpconf --available 실행 시 여전히 cgi, suphp, none만 출력됨

이 문제는 대부분 핸들러 설정 파일(php.conf.yaml)이 누락되었거나 정상 생성되지 않았기 때문이다.

1. 문제 진단 및 증상 확인

/usr/local/cpanel/bin/rebuild_phpconf --available

만약 출력 결과에 fpm이 없으면 문제가 있는 것. 아래 명령으로 php-fpm 패키지와 모듈이 설치되었는지 다시 확인해본다.

yum list installed | grep ea-php83-php-fpm
httpd -M | grep proxy_fcgi

2. /etc/cpanel/ea4/php.conf.yaml 파일 확인

이 파일은 Apache가 어떤 PHP 버전에 어떤 핸들러(fpm, cgi, suphp)를 쓸지 정의하는 설정이다. 그런데 다음처럼 표시된다면 문제가 확실하다.

cat /etc/cpanel/ea4/php.conf.yaml
# 출력: No such file or directory

즉, 존재하지 않는 상태이므로 Apache는 fpm이란 옵션 자체를 인식할 수 없다.

3. php.conf.yaml 수동 생성

이 파일이 없으면 수동으로 만들어야 한다. 아래 명령어로 에디터를 열어 직접 생성한다.

vi /etc/cpanel/ea4/php.conf.yaml

내용은 다음과 같이 작성한다.

---
default: ea-php83
ea-php83:
  handler: "fpm"
ea-php84:
  handler: "suphp"
ea-php82:
  handler: "suphp"
ea-php81:
  handler: "suphp"
ea-php80:
  handler: "suphp"

작성 후 저장하고 종료한다.

4. 설정 재빌드 및 Apache 재시작

핸들러 설정 반영을 위해 아래 명령을 순차적으로 입력한다.

/usr/local/cpanel/scripts/php_fpm_config --rebuild
/usr/local/cpanel/bin/rebuild_phpconf --default=ea-php83 --ea-php83=fpm --ea-php84=suphp
/scripts/restartsrv_httpd

이후 다시 확인해보자.

/usr/local/cpanel/bin/rebuild_phpconf --available
/usr/local/cpanel/bin/rebuild_phpconf --current

이제 ea-php83: fpm 형식으로 표시되어야 정상이다.

PHP-FPM은 단순히 패키지 설치와 서비스 실행만으로 작동하는 구조가 아니다. Apache와의 연동을 위해 별도로 php.conf.yaml 파일을 통한 핸들러 지정이 필요하다. cPanel 환경에서는 이 파일이 자동으로 생성되지 않는 경우가 종종 있기 때문에, 위 과정처럼 수동 설정이 필요할 수 있다.

이처럼 php-fpm 활성화가 안되는 문제가 있다면, 단순히 서비스 설치에만 집중하지 말고 핸들러 설정 파일이 제대로 연결되어 있는지 꼭 확인해보는 것이 핵심이다.

반응형

FAQ

PHP-FPM을 적용했는데 속도가 크게 개선되지 않는다면?

PHP-FPM만으로 성능이 개선되지 않는 경우, 다음 항목들을 점검해야 합니다.

  • MariaDB/MySQL slow query
  • WP-Cron 비활성화
  • object cache (Redis, Memcached) 미적용
  • 이미지 lazy load 미적용
    단순히 PHP 처리속도 외에도 I/O 병목, 데이터베이스 병목, 테마 및 JS 로딩이 병목이 되는 경우가 많습니다.

PHP-FPM에서 도메인별로 개별 설정이 가능한가요?

가능합니다. 각 도메인마다 /opt/cpanel/ea-phpXX/root/etc/php-fpm.d/도메인.conf에서 pool 설정이 가능하며,
pm.max_children, pm.max_requests 등을 도메인 별 트래픽에 맞춰 조정할 수 있습니다.

suphp와 php-fpm의 가장 큰 차이는?

  • suphp는 요청마다 PHP 프로세스를 생성/종료하기 때문에 CPU와 I/O 부하가 큽니다.
  • php-fpm은 풀 방식으로 유지되므로 훨씬 빠르며, 다중 요청 처리에 유리합니다.

php-fpm을 활성화했는데 still suphp로 설정돼 있는 이유는?

  • EasyApache4에서 php-fpm이 설치돼 있어도 rebuild_phpconf 명령어가 적용되지 않거나
  • ea-phpXX-php-fpm만 설치되고 Apache handler 설정이 누락됐을 경우 자동 전환되지 않습니다.
  • mod_proxy_fcgi와 mod_mpm_event가 함께 활성화돼 있어야 합니다.

FPM 적용 후 워드프레스에서 에러가 발생하는 경우는?

  • .htaccess에서 php_flag, php_value를 사용하는 경우 php-fpm에서는 에러가 발생할 수 있습니다. 이를 제거하거나 php.ini 또는 .user.ini로 대체해야 합니다.
  • memory_limit, upload_max_filesize 등을 php-fpm 풀 설정에 추가해야 적용됩니다.

php-fpm 상태 확인 시 socket 오류가 나는 이유는?

  • pool 구성에 문제가 있거나
  • php-fpm.yaml이 유실되었거나
  • ea-phpXX-php-fpm 서비스가 비정상일 수 있습니다.

이 경우 /usr/local/cpanel/scripts/php_fpm_config --rebuild로 재구성합니다.

php-fpm을 특정 버전만 사용하고 싶을 때는?

다음 명령어로 특정 PHP 버전에만 fpm을 적용하고 나머지는 suphp 등으로 설정할 수 있습니다.

/usr/local/cpanel/bin/rebuild_phpconf \
--default=ea-php83 \
--ea-php83=fpm \
--ea-php84=suphp

LiteSpeed에서도 php-fpm 설정이 필요한가요?

LiteSpeed는 자체적으로 LSAPI를 사용하므로 php-fpm을 사용하지 않습니다. 이 경우 mod_lsapi가 성능적으로 더 효율적이며, php-fpm과의 병용은 불필요합니다.

설정 후 phpinfo()에서 확인할 수 있는 FPM 관련 항목은?

phpinfo() 출력에서 Server API가 FPM/FastCGI로 표시되면 적용 완료된 것입니다. 또한 Loaded Configuration File 경로를 통해 적용된 php.ini 경로도 확인할 수 있습니다.

728x90
반응형
그리드형

댓글