[PHP 설정 가이드] PHP-FPM 완벽 설정 방법

2025. 1. 28. 14:53·운영체제 (OS)/리눅스 (Linux)

[PHP 설정 가이드] PHP-FPM 완벽 설정 방법

PHP-FPM(FastCGI Process Manager)은 PHP 기반 웹 애플리케이션의 성능을 극대화하는 중요한 도구입니다. 특히 Nginx와 함께 사용할 때 동적 콘텐츠를 처리하는 데 필수적인 역할을 합니다. 이번 글에서는 PHP-FPM 설정 파일의 주요 항목을 하나씩 살펴보고, 성능 최적화 및 문제 해결 방법까지 상세히 설명합니다.

 

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

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. 설정 저장 및 적용

  1. 파일 저장: Ctrl + O → Enter
  2. 파일 닫기: Ctrl + X
  3. 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. 설정 저장 및 적용

  1. 파일 저장: Ctrl + O → Enter
  2. 파일 닫기: Ctrl + X
  3. 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
'운영체제 (OS)/리눅스 (Linux)' 카테고리의 다른 글
  • 우분투에서 FTP 서버 설정하기: vsftpd 설치부터 Nginx 가상 호스팅까지
  • 우분투에서 PHP 설치 및 Apache 연동 방법 완벽 가이드
  • 우분투에서 MySQL/MariaDB 완벽 설치 및 설정 가이드
  • 우분투 PHP 설치 및 Nginx 연동 가이드
체리모찌
체리모찌
inknotes 님의 블로그 입니다.
  • 체리모찌
    모먼트로그
    체리모찌
    • 분류 전체보기 (32)
      • 일상 이야기 (6)
        • 영화 리뷰 (2)
        • 드라마 리뷰 (4)
      • 운영체제 (OS) (14)
        • 윈도우 (Windows) (1)
        • 리눅스 (Linux) (13)
      • 파이썬 (Python) (9)
      • 정보나눔 (3)
  • 최근 글

  • 최근 댓글

  • 인기 글

  • 태그

    스터디그룹리뷰
    nginx
    서버최적화
    개발
    웹서버
    스터디드라마
    김호민
    python
    우분투
    웹툰원작
    황민현
    코딩
    중증외상센터리뷰
    파이썬
    파이썬 기초
    눅스서버
    서버관리
    웹사이트속도개선
    nginx캐싱
    스터디그룹4화
    스터디그룹3화
    청춘드라마
    프로그래밍
    스터디그룹
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
체리모찌
[PHP 설정 가이드] PHP-FPM 완벽 설정 방법
상단으로

티스토리툴바