서버 설정 · 3 min read · Feb 04, 2026

Fedora 14에서 MySQL 지원과 함께 PHP5 (및 PHP-FPM)로 Nginx 설치하기 - 페이지 2

4 PHP5 설치하기

Nginx에서 PHP5를 PHP-FPM을 통해 작동시킬 수 있습니다 (PHP-FPM (FastCGI Process Manager)은 모든 규모의 사이트, 특히 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다). 공식 Fedora 14 저장소에는 php-fpm 패키지가 없지만, 다행히 Remi 저장소에서 해당 패키지를 제공합니다.

Remi 저장소를 활성화하려면 다음을 실행하세요:

rpm -ivh http://rpms.famillecollet.com/remi-release-14.rpm

다음으로 /etc/yum.repos.d/remi.repo를 엽니다…

vi /etc/yum.repos.d/remi.repo

… 그리고 [remi] 섹션에서 enabled를 1로, gpgcheck를 0으로 변경합니다 ( [remi-test] 섹션은 활성화하지 마세요!):

| [remi] name=Les RPM de remi pour Fedora $releasever - $basearch #baseurl=http://rpms.famillecollet.com/fedora/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/remi/mirror enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Fedora $releasever - $basearch #baseurl=http://rpms.famillecollet.com/fedora/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority |

이제 php-fpm과 php-cli, MySQL을 PHP 스크립트에서 사용하려면 필요한 php-mysql과 같은 PHP5 모듈을 함께 설치할 수 있습니다:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

그런 다음 /etc/php.ini를 열고 cgi.fix_pathinfo=1 줄의 주석을 제거합니다:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo는 CGI에 대해 *실제* PATH_INFO/PATH_TRANSLATED 지원을 제공합니다. PHP의 ; 이전 동작은 PATH_TRANSLATED를 SCRIPT_FILENAME으로 설정하고 PATH_INFO가 무엇인지 이해하지 못하는 것이었습니다. PATH_INFO에 대한 자세한 정보는 cgi 사양을 참조하세요. 이를 1로 설정하면 PHP CGI가 사양에 맞게 경로를 수정합니다. 0으로 설정하면 PHP가 이전과 같이 동작합니다. 기본값은 1입니다. 스크립트를 수정하여 PATH_TRANSLATED 대신 SCRIPT_FILENAME을 사용해야 합니다. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

다음으로 php-fpm의 시스템 시작 링크를 생성하고 시작합니다:

chkconfig --levels 235 php-fpm on  
/etc/init.d/php-fpm start

PHP-FPM은 포트 9000에서 FastCGI 서버를 실행하는 데몬 프로세스입니다 (init 스크립트 /etc/init.d/php-fpm).

5 Nginx 구성하기

Nginx 구성은 /etc/nginx/nginx.conf에 있으며, 지금 열어보겠습니다:

vi /etc/nginx/nginx.conf

구성은 이해하기 쉽습니다 (여기에서 더 많은 정보를 배울 수 있습니다: http://wiki.codemongers.com/NginxFullExample 및 여기: http://wiki.codemongers.com/NginxFullExample2)

먼저 (선택 사항) 작업 프로세스 수를 늘리고 keepalive_timeout을 합리적인 값으로 설정할 수 있습니다:

| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |

가상 호스트는 server {} 컨테이너에서 정의됩니다. 기본 vhost를 다음과 같이 수정해 보겠습니다:

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # 서버 오류 페이지를 정적 페이지 /50x.html로 리디렉션 # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 127.0.0.1:80에서 수신 대기하는 Apache로 PHP 스크립스를 프록시합니다. # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # 127.0.0.1:9000에서 수신 대기하는 FastCGI 서버로 PHP 스크립스를 전달합니다. # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # Apache의 문서 루트와 nginx의 문서 루트가 일치하는 경우 .htaccess 파일에 대한 접근을 거부합니다. # location ~ /\.ht { deny all; } } [...] |

servername ;는 이것을 기본 catchall vhost로 만듭니다 (물론 www.example.com과 같은 호스트 이름을 지정할 수도 있습니다).

location / 부분에서 index.php를 index 줄에 추가했습니다. root /usr/share/nginx/html;는 문서 루트가 /usr/share/nginx/html 디렉토리임을 의미합니다.

PHP에 중요한 부분은 location ~ .php$ {} 구문입니다. 이를 활성화하려면 주석을 제거하세요. root 줄을 웹 사이트의 문서 루트로 변경하세요 (예: root /usr/share/nginx/html;). fastcgi_param 줄을 fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;로 변경해야 합니다. 그렇지 않으면 PHP 인터프리터가 브라우저에서 호출하는 PHP 스크립트를 찾지 못합니다.

이제 파일을 저장하고 nginx를 재시작하세요:

/etc/init.d/nginx restart

이제 문서 루트 /usr/share/nginx/html에 다음 PHP 파일을 생성합니다…

vi /usr/share/nginx/html/info.php

| |

이제 브라우저에서 해당 파일을 호출합니다 (예: http://192.168.0.100/info.php):

보시다시피, PHP5가 작동하고 있으며, Server API 줄에 표시된 대로 FPM/FastCGI를 통해 작동하고 있습니다. 아래로 스크롤하면 MySQL 모듈을 포함하여 PHP5에서 이미 활성화된 모든 모듈을 볼 수 있습니다:

6 링크

저자 소개

Falko Timme는 Timme Hosting(초고속 nginx 웹 호스팅)의 소유자입니다. 그는 HowtoForge의 주요 유지 관리자(2005년부터)이며 ISPConfig의 핵심 개발자 중 한 명(2000년부터)입니다. 그는 또한 O’Reilly의 “Linux System Administration” 책에 기여했습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.