가이드
운영 가이드 06. Nginx + PHP-FPM 웹서버 구성
Ubuntu 24.04에서 Nginx와 PHP 8.3 FPM을 설치하고, 사이트별 server block과 PHP 처리 규칙을 연결하는 기본 운영 구성을 정리했습니다.
Nginx + PHP-FPM은 정적 파일 처리와 reverse proxy 구성이 유연하고, 최근 PHP 서비스 운영에서 가장 자주 쓰는 조합입니다.
Ubuntu 24.04 기준으로 PHP 8.3 FPM과 함께 사이트별 설정을 분리하는 방식이 가장 관리하기 편합니다.
Apache와 포트 충돌 먼저 확인
Apache를 쓰지 않을 서버라면 먼저 멈춰 두어야 Nginx가 80번과 443번 포트를 정상 점유합니다.
sudo systemctl status apache2
sudo systemctl stop apache2
sudo systemctl disable apache2Nginx와 PHP-FPM 설치
sudo apt update
sudo apt install -y \
nginx \
php-fpm \
php8.3-fpm \
php8.3-cli \
php8.3-common \
php8.3-mysql \
php8.3-mbstring \
php8.3-xml \
php8.3-curl \
php8.3-zip \
php8.3-gd \
php8.3-bcmath \
php8.3-intlsudo systemctl enable --now nginx php8.3-fpm
sudo systemctl status nginx
sudo systemctl status php8.3-fpm기본 사이트 설정 예시
아래 예시는 `/var/www/html/site/public` 을 웹 루트로 쓰는 전형적인 PHP 프로젝트 기준입니다.
sudo nano /etc/nginx/sites-available/site.confserver {
listen 80;
server_name example.com www.example.com;
root /var/www/html/site/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf
sudo nginx -t
sudo systemctl reload nginxPHP 동작 확인
echo '<?php phpinfo();' | sudo tee /var/www/html/site/public/info.php
curl -I http://127.0.0.1/info.php
sudo rm /var/www/html/site/public/info.php운영 중 자주 보는 명령
sudo nginx -t
sudo ss -tulpn | egrep ':80|:443'
journalctl -u nginx -n 50 --no-pager
journalctl -u php8.3-fpm -n 50 --no-pager마무리 메모
Nginx가 정상이라면 다음으로는 MariaDB 계정 분리와 phpMyAdmin 연결, HTTPS 적용 순서로 넘어가면 됩니다.
실제 도메인이 붙기 전에는 `curl -I`와 `nginx -t` 검증 습관만 잘 들여도 장애를 많이 줄일 수 있습니다.