[PHP 설정 가이드] PHP-FPM 완벽 설정 방법
PHP-FPM(FastCGI Process Manager)은 PHP 기반 웹 애플리케이션의 성능을 극대화하는 중요한 도구입니다. 특히 Nginx와 함께 사용할 때 동적 콘텐츠를 처리하는 데 필수적인 역할을 합니다. 이번 글에서는 PHP-FPM 설정 파일의 주요 항목을 하나씩 살펴보고, 성능 최적화 및 문제 해결 방법까지 상세히 설명합니다.
1. PHP-FPM 설정 파일 위치
PHP-FPM 설정은 두 가지 주요 파일로 구성됩니다:
1️⃣ php.ini
- PHP의 전반적인 동작을 제어하는 설정 파일입니다.
- 위치: /etc/php/8.2/fpm/php.ini (PHP 버전에 따라 경로가 다를 수 있음)
2️⃣ www.conf
- PHP-FPM 풀(pool) 설정 파일로, 프로세스 관리 및 소켓 설정을 다룹니다.
- 위치: /etc/php/8.2/fpm/pool.d/www.conf
2. php.ini 설정 방법
php.ini 파일은 PHP의 전반적인 동작을 제어합니다. 파일 업로드 크기, 실행 시간 제한, 메모리 사용량 등 다양한 설정을 수정할 수 있습니다.
2.1. php.ini 파일 열기
sudo nano /etc/php/8.2/fpm/php.ini
2.2. 주요 설정 항목
다음은 실무에서 자주 사용하는 설정 항목들입니다.
✅ 파일 업로드 크기 제한
웹 애플리케이션에서 업로드 가능한 파일 크기를 설정합니다.
upload_max_filesize = 64M
post_max_size = 64M
✅ 스크립트 실행 시간 제한
PHP 스크립트의 실행 시간을 제한하여 무한 실행을 방지합니다.
max_execution_time = 300
max_input_time = 300
✅ 메모리 사용량 제한
PHP 스크립트가 사용할 수 있는 최대 메모리 크기를 설정합니다.
memory_limit = 256M
✅ 기본 시간대 설정
서버의 표준 시간대를 설정합니다.
date.timezone = Asia/Seoul
2.3. 설정 저장 및 적용
- 파일 저장: Ctrl + O → Enter
- 파일 닫기: Ctrl + X
- PHP-FPM 서비스 재시작:
sudo systemctl restart php8.2-fpm
3. www.conf 설정 방법
PHP-FPM은 풀(pool)이라는 단위로 워커 프로세스를 관리합니다. 풀 설정은 www.conf 파일에서 이루어지며, 이 파일에서 프로세스 관리, 소켓 설정, 로그 등을 세부적으로 설정할 수 있습니다.
3.1. www.conf 파일 열기
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
3.2. 주요 설정 항목
아래는 www.conf 파일의 핵심 설정 항목들입니다.
✅ 풀 이름
풀 이름은 고유해야 하며 기본적으로 www로 설정되어 있습니다.
[www]
✅ 사용자와 그룹
PHP-FPM 프로세스를 실행할 사용자와 그룹을 설정합니다.
user = www-data
group = www-data
✅ 리스닝 소켓
Nginx와 PHP-FPM 간 통신 방식을 설정합니다. 기본적으로 Unix 소켓을 사용합니다.
listen = /run/php/php8.2-fpm.sock
✅ 프로세스 관리
PHP-FPM 프로세스의 생성 및 관리를 설정합니다.
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
- pm: 프로세스 관리 방식(dynamic, static 중 선택).
- pm.max_children: 최대 프로세스 수.
- pm.start_servers: 초기 프로세스 수.
- pm.min_spare_servers: 최소 대기 프로세스 수.
- pm.max_spare_servers: 최대 대기 프로세스 수.
✅ 요청 제한
PHP-FPM이 처리할 요청 수를 제한합니다.
pm.max_requests = 500
✅ 로그 설정
PHP-FPM의 로그 파일 경로를 지정합니다.
access.log = /var/log/php8.2-fpm/access.log
error_log = /var/log/php8.2-fpm/error.log
3.3. 설정 저장 및 적용
- 파일 저장: Ctrl + O → Enter
- 파일 닫기: Ctrl + X
- PHP-FPM 서비스 재시작:
sudo systemctl restart php8.2-fpm
4. PHP-FPM 상태 확인 및 디버깅
PHP-FPM 설정 후, 서비스 상태를 확인하고 로그를 점검하는 것이 중요합니다.
4.1. PHP-FPM 서비스 상태 확인
PHP-FPM 서비스가 정상적으로 실행 중인지 확인합니다.
sudo systemctl status php8.2-fpm
출력 예시:
● php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-01-28 10:00:00 UTC; 5min ago
4.2. PHP-FPM 로그 확인
PHP-FPM의 에러 로그와 액세스 로그를 확인하여 문제를 진단합니다.
sudo tail -f /var/log/php8.2-fpm/error.log
sudo tail -f /var/log/php8.2-fpm/access.log
5. PHP-FPM 성능 최적화
PHP-FPM의 성능을 최적화하려면 서버 메모리와 애플리케이션 특성에 맞게 설정을 조정해야 합니다.
5.1. pm.max_children 계산
pm.max_children 값을 계산하려면 아래 공식을 참고하세요:
pm.max_children = (총 메모리 - 다른 서비스 사용 메모리) / PHP 프로세스당 메모리 사용량
예:
- 총 메모리: 2GB
- Nginx 사용 메모리: 500MB
- PHP 프로세스당 메모리: 30MB
pm.max_children = (2000MB - 500MB) / 30MB ≈ 50
5.2. Opcache 활성화
PHP 성능을 향상시키려면 Opcache를 활성화하세요.
php.ini 파일에서 아래 항목을 설정합니다:
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 1
'운영체제 (OS) > 리눅스 (Linux)' 카테고리의 다른 글
우분투에서 FTP 서버 설정하기: vsftpd 설치부터 Nginx 가상 호스팅까지 (0) | 2025.01.29 |
---|---|
우분투에서 PHP 설치 및 Apache 연동 방법 완벽 가이드 (1) | 2025.01.28 |
우분투에서 MySQL/MariaDB 완벽 설치 및 설정 가이드 (1) | 2025.01.28 |
우분투 PHP 설치 및 Nginx 연동 가이드 (1) | 2025.01.27 |
Ubuntu에서 Apache 설치 및 설정하기 (1) | 2025.01.27 |