서버 설치 · 4 min read · Dec 27, 2025

Ubuntu 12.04 LTS에 PHP5(및 PHP-FPM) 및 MySQL 지원(LAMP)으로 Nginx 설치하기

Nginx (“engine x”로 발음됨)는 무료, 오픈 소스, 고성능 HTTP 서버입니다. Nginx는 안정성, 풍부한 기능 세트, 간단한 구성 및 낮은 리소스 소비로 유명합니다. 이 튜토리얼에서는 PHP5 지원( PHP-FPM을 통해) 및 MySQL 지원이 포함된 Ubuntu 12.04 LTS 서버에 Nginx를 설치하는 방법을 보여줍니다 (LEMP = Linux + nginx (“ e ngine x”로 발음됨) + MySQL + PHP).

이것이 당신에게 작동할 것이라는 보장은 하지 않습니다!

1 사전 참고

이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100을 사용합니다. 이러한 설정은 귀하에게 다를 수 있으므로 적절한 곳에서 교체해야 합니다.

저는 이 튜토리얼의 모든 단계를 루트 권한으로 실행하고 있으므로 루트로 로그인했는지 확인하십시오:

sudo su

2 MySQL 5 설치하기

MySQL을 설치하기 위해 다음을 실행합니다:

 apt-get install mysql-server mysql-client 

MySQL 루트 사용자에 대한 비밀번호를 제공하라는 메시지가 표시됩니다. 이 비밀번호는 root@localhost 사용자와 [email protected] 모두에 대해 유효하므로 나중에 MySQL 루트 비밀번호를 수동으로 지정할 필요가 없습니다:

MySQL “root” 사용자에 대한 새 비밀번호: <– yourrootsqlpassword
MySQL “root” 사용자에 대한 비밀번호를 반복하십시오: <– yourrootsqlpassword

3 Nginx 설치하기

Nginx는 Ubuntu 12.04용 패키지로 제공되며, 다음과 같이 설치할 수 있습니다:

 apt-get install nginx

그 후 nginx를 시작합니다:

 /etc/init.d/nginx start

브라우저에 웹 서버의 IP 주소 또는 호스트 이름을 입력합니다(예: http://192.168.0.100) 그러면 다음 페이지가 표시됩니다:

Ubuntu 12.04의 기본 nginx 문서 루트는 /usr/share/nginx/www입니다.

4 PHP5 설치하기

PHP-FPM을 통해 nginx에서 PHP5를 작동시킬 수 있습니다(PHP-FPM(FastCGI Process Manager)은 모든 크기의 사이트, 특히 더 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현) 다음과 같이 설치합니다:

 apt-get install php5-fpm

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

5 nginx 구성하기

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

 vi /etc/nginx/nginx.conf

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

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

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

가상 호스트는 server {} 컨테이너에서 정의됩니다. 기본 vhost는 /etc/nginx/sites-available/default 파일에 정의되어 있습니다. 다음과 같이 수정해 보겠습니다:

 vi /etc/nginx/sites-available/default

| [...] server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; deny all; } # Only for nginx-naxsi : process denied requests #location /RequestDenied { # For example, return an error code #return 418; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |

두 listen 줄의 주석을 제거하여 nginx가 포트 80 IPv4 IPv6에서 수신 대기하도록 합니다.

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

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

PHP에 중요한 부분은 location ~ .php$ {} 구문입니다. 이를 활성화하려면 주석을 제거하십시오. 0일 공격을 방지하기 위해 try_files $uri =404; 줄을 추가했습니다(자세한 내용은 http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHPhttp://forum.nginx.org/read.php?2,88845,page=3을 참조하십시오). 대안으로 try_files $uri =404; 줄을 사용하고 싶지 않다면 /etc/php5/fpm/php.ini에서 cgi.fix_pathinfo = 0;을 설정할 수 있습니다(그 후 PHP-FPM을 다시 로드하는 것을 잊지 마십시오).

이제 파일을 저장하고 nginx를 다시 로드합니다:

/etc/init.d/nginx reload

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

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

| |

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

보시다시피, PHP5가 작동하고 있으며, FPM/FastCGI를 통해 작동하고 있습니다. 서버 API 줄에 표시됩니다. 아래로 스크롤하면 PHP5에서 이미 활성화된 모든 모듈을 볼 수 있습니다. MySQL은 거기에 나열되어 있지 않으므로 PHP5에서 MySQL 지원이 아직 없습니다.

6 PHP5에서 MySQL 지원 받기

PHP에서 MySQL 지원을 받으려면 php5-mysql 패키지를 설치할 수 있습니다. 애플리케이션에 필요할 수 있는 다른 PHP5 모듈도 설치하는 것이 좋습니다. 다음과 같이 사용 가능한 PHP5 모듈을 검색할 수 있습니다:

apt-cache search php5

필요한 모듈을 선택하고 다음과 같이 설치합니다:

 apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Xcache는 PHP 중간 코드를 캐싱하고 최적화하기 위한 무료 오픈 PHP opcode 캐셔입니다. eAccelerator 및 APC와 같은 다른 PHP opcode 캐셔와 유사합니다. PHP 페이지 속도를 높이기 위해 이러한 것 중 하나를 설치하는 것이 강력히 권장됩니다.

Xcache는 다음과 같이 설치할 수 있습니다:

apt-get install php5-xcache

이제 PHP-FPM을 다시 로드합니다:

/etc/init.d/php5-fpm reload

이제 브라우저에서 http://192.168.0.100/info.php를 다시 로드하고 모듈 섹션으로 다시 스크롤합니다. 이제 MySQL 모듈을 포함하여 많은 새로운 모듈을 찾아야 합니다:

7 PHP-FPM을 Unix 소켓 사용하도록 설정하기

기본적으로 PHP-FPM은 127.0.0.1의 포트 9000에서 수신 대기합니다. TCP 오버헤드를 피하기 위해 PHP-FPM이 Unix 소켓을 사용하도록 설정하는 것도 가능합니다. 이렇게 하려면 /etc/php5/fpm/pool.d/www.conf를 엽니다…

vi /etc/php5/fpm/pool.d/www.conf

… 그리고 listen 줄을 다음과 같이 설정합니다:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

그런 다음 PHP-FPM을 다시 로드합니다:

/etc/init.d/php5-fpm reload

다음으로 nginx 구성 및 모든 vhost를 통해 fastcgi_pass 127.0.0.1:9000; 줄을 fastcgi_pass unix:/tmp/php5-fpm.sock;로 변경합니다. 예를 들어 다음과 같이:

vi /etc/nginx/sites-available/default

| [...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |

마지막으로 nginx를 다시 로드합니다:

/etc/init.d/nginx reload

8 CGI/Perl 스크립트

nginx로 CGI/Perl 스크립트를 제공하려면 이 튜토리얼을 읽어보십시오: Debian Squeeze/Ubuntu 11.04에서 Nginx로 CGI 스크립트 제공하기

권장 방법은 fcgiwrap을 사용하는 것입니다(4장).

9 링크

저자 소개

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

Share: X/Twitter LinkedIn

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

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