PHP-FPM 풀(www.conf) 설정을 구성하는 방법
PHP-FPM은 FastCGI 기반의 PHP 프로세스 관리 도구로, 웹 서버와 PHP를 분리하여 웹 서버의 성능을 향상시킬 수 있습니다. www.conf는 PHP-FPM의 설정 파일 중 하나로 PHP-FPM 워커 프로세스의 동작 방식을 제어합니다.
1. PHP-FPM 풀(www.conf) 설정 파일 위치
www.conf 파일이 어디에 있는지 확인해야 합니다. 대개 PHP-FPM 설치 시 www.conf 파일은 /etc/php-fpm.d/ 디렉토리에 위치합니다.
2. PHP-FPM 풀(www.conf) 설정 파일 복사
www.conf 파일은 기본적으로 존재하지 않으며 php-fpm.conf 파일을 복사하여 생성해야 합니다.
cp /etc/php-fpm.d/www.conf.default /etc/php-fpm.d/www.conf
3. 풀 설정 파일 기본 구성
풀 설정 파일에서 사용할 수 있는 주요 설정 값입니다.
vim /etc/php-fpm.d/www.conf
[my-pool] ; 풀 이름, unique해야 함
user = www-data ; PHP-FPM이 사용할 사용자
group = www-data ; PHP-FPM이 사용할 그룹
listen = /run/php/php8.1-fpm-my-pool.sock ; 이 풀에서 사용할 소켓(혹은 TCP 포트)
listen.owner = www-data ; 소켓 파일의 소유자
listen.group = www-data ; 소켓 파일의 그룹
listen.mode = 0660 ; 소켓 파일의 권한 설정
pm = dynamic ; 프로세스 관리 모드 (static, dynamic, ondemand 중 선택)
pm.max_children = 50 ; 최대 PHP-FPM 프로세스 수
pm.start_servers = 5 ; 초기로 시작할 프로세스 수 (dynamic일 때만 유효)
pm.min_spare_servers = 5 ; 최소 유휴 프로세스 수 (dynamic일 때만 유효)
pm.max_spare_servers = 10 ; 최대 유휴 프로세스 수 (dynamic일 때만 유효)
; 요청당 리소스 제한 설정
pm.max_requests = 500 ; 각 PHP-FPM 프로세스가 처리할 최대 요청 수 (0일 경우 무제한)
; 상태 및 로그 설정
access.log = /var/log/php-fpm/my-pool.access.log ; 액세스 로그
slowlog = /var/log/php-fpm/my-pool.slow.log ; 느린 요청 로그
request_slowlog_timeout = 5s ; 느린 요청을 기록할 시간 (초 단위)
;pm.status_path = /status
; PHP 설정 오버라이드
php_admin_value[memory_limit] = 128M ; 풀에 대한 PHP 메모리 제한
php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M
4. 주요 설정 항목 설명
[my-pool] : 풀의 이름으로 각 풀은 고유한 이름을 가져야 합니다.
user / group : 해당 풀에서 실행되는 PHP-FPM 프로세스가 사용할 사용자와 그룹입니다.
listen : 해당 풀에서 사용할 소켓 경로 또는 TCP 포트를 지정합니다. 예를 들어, listen = 127.0.0.1:9001은 특정 포트로 요청을 받을 수 있게 합니다.
pm : 프로세스 관리 모드로 다음 중 하나를 설정할 수 있습니다.
- static : 고정된 수의 프로세스만 실행.
- dynamic : 필요에 따라 프로세스가 동적으로 생성/제거됩니다.
- ondemand : 요청이 있을 때만 프로세스가 생성됩니다.
pm.max_children : 최대 프로세스 수로 동시에 처리할 수 있는 최대 요청 수를 제한합니다.
pm.start_servers, pm.min_spare_servers, pm.max_spare_servers : 프로세스 관리가 dynamic일 때 사용되는 파라미터로 풀의 성능을 조정하는 데 사용됩니다.
pm.max_requests: 각 PHP-FPM 프로세스가 처리할 최대 요청 수를 지정하며, 이 수에 도달하면 해당 프로세스는 종료되고 새 프로세스가 생성됩니다. 메모리 누수를 방지하는 데 유용합니다.
slowlog : 지정된 시간 내에 완료되지 않은 요청을 기록할 로그 파일로 성능 문제를 파악하는 데 사용됩니다.
5. PHP-FPM 재시작
PHP-FPM을 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart php7.4-fpm
PHP-FPM 상태 확인
sudo systemctl status php7.4-fpm
www.conf 파일에서 설정할 수 있는 값은 다음과 같습니다.
- user와 group: PHP-FPM 워커 프로세스가 실행될 때 사용될 유저와 그룹을 설정합니다. 일반적으로 웹 서버의 유저와 그룹과 동일하게 설정합니다.
- listen: PHP-FPM 워커 프로세스와 웹 서버가 통신하는 방법을 설정합니다. 가장 일반적인 방법은 소켓 파일을 사용하는 것입니다. listen 값은 다음과 같이 설정할 수 있습니다.
- 소켓 파일: /run/php/php7.4-fpm.sock
- TCP/IP 소켓: 127.0.0.1:9000
- pm.max_children: PHP-FPM 워커 프로세스의 최대 개수를 설정합니다. 이 값은 서버의 하드웨어 스펙과 PHP 애플리케이션의 특성에 따라 결정됩니다.
- pm.start_servers: PHP-FPM 워커 프로세스의 초기 시작 개수를 설정합니다.
- pm.min_spare_servers: PHP-FPM 워커 프로세스의 최소 유지 개수를 설정합니다. 서버의 부하가 낮을 때 유지할 프로세스 개수입니다.
- pm.max_spare_servers: PHP-FPM 워커 프로세스의 최대 유지 개수를 설정합니다. 서버의 부하가 높을 때 유지할 프로세스 개수입니다.
- pm.max_requests: PHP-FPM 워커 프로세스가 처리할 최대 요청 수를 설정합니다. 이 값은 워커 프로세스의 메모리 누수를 방지하기 위해 사용됩니다.
- pm.status_path: PHP-FPM의 상태를 확인하기 위한 URL을 설정합니다. 이 설정은 보안상의 이유로 주석 처리되어 있을 수 있습니다.
위와 같이 www.conf 파일에서 설정할 수 있는 값들은 PHP-FPM 워커 프로세스의 동작 방식을 제어하는 데 필수적입니다. 따라서, 적절한 값을 설정하여 서버의 성능을 최적화하는 것이 중요합니다.
참고URL
- PHP-FPM 최신(php-fpm 8.1) 버전 설치하기 : https://scbyun.com/1206
- PHP-FPM 최신(php-fpm 7.4) 버전 설치하기 : https://scbyun.com/1080
- nginx php-fpm 연동 : https://scbyun.com/1175
'리눅스' 카테고리의 다른 글
ip 명령어 (0) | 2023.03.03 |
---|---|
[draft] Redis 스탠드얼론(Standalone), 센티널(Sentinel), 클러스터(Cluster) 구성 방법 (0) | 2023.03.03 |
[리눅스] Let's Encrypt(certbot) SSL 인증서를 발급하는 방법 (0) | 2023.03.02 |
[리눅스] MySQL replication을 이용한 고가용성 및 장애복구 솔루션(MMM, MHA) (0) | 2023.03.01 |
MySQL 리플리케이션(mysql replication) 설정 방법 (0) | 2023.03.01 |