서버 설치 · 4 min read · Dec 30, 2025
Debian Lenny에서 PHP5 및 MySQL 지원으로 Nginx 설치하기
Debian Lenny에서 PHP5 및 MySQL 지원으로 Nginx 설치하기
버전 1.0
저자: Falko Timme
Nginx(발음: “엔진 엑스”)는 무료이며 오픈 소스인 고성능 HTTP 서버입니다. Nginx는 안정성, 풍부한 기능 세트, 간단한 구성 및 낮은 자원 소비로 알려져 있습니다. 이 튜토리얼에서는 PHP5 지원(빠른 CGI를 통해) 및 MySQL 지원과 함께 Debian Lenny 서버에 Nginx를 설치하는 방법을 보여줍니다.
이것이 당신에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100을 사용합니다. 이러한 설정은 여러분의 환경에 따라 다를 수 있으므로 적절한 곳에서 교체해야 합니다.
2 MySQL 5.0 설치하기
MySQL을 설치하기 위해 다음 명령어를 실행합니다.
aptitude install mysql-server mysql-clientMySQL root 사용자에 대한 비밀번호를 제공하라는 메시지가 표시됩니다. 이 비밀번호는 사용자 root@localhost와 [email protected]에 유효하므로 나중에 MySQL root 비밀번호를 수동으로 지정할 필요가 없습니다:
MySQL “root” 사용자에 대한 새 비밀번호: <– yourrootsqlpassword
MySQL “root” 사용자에 대한 비밀번호 반복: <– yourrootsqlpassword
3 Nginx 설치하기
Nginx는 Debian Lenny용 패키지로 제공되며, 다음과 같이 설치할 수 있습니다:
aptitude install nginx그 후 nginx를 시작합니다:
/etc/init.d/nginx start웹 서버의 IP 주소 또는 호스트 이름을 브라우저에 입력합니다(예: http://192.168.0.100). 그러면 nginx 환영 페이지가 표시됩니다:

4 PHP5 설치하기
FastCGI를 통해 nginx에서 PHP5를 작동시킬 수 있습니다. 다행히도 Debian Lenny는 FastCGI가 활성화된 PHP5 패키지를 제공하며, 이를 다음과 같이 설치합니다(여기에는 MySQL을 PHP 스크립트에서 사용하려면 필요한 php5-mysql과 같은 몇 가지 PHP5 모듈이 포함됩니다):
aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl그런 다음 /etc/php5/cgi/php.ini를 열고 파일 끝에 cgi.fix_pathinfo = 1을 추가합니다:
vi /etc/php5/cgi/php.ini| [...] cgi.fix_pathinfo = 1 |
Debian Lenny에는 독립형 FastCGI 데몬 패키지가 없으므로 lighttpd의 spawn-fcgi 프로그램을 사용합니다. lighttpd를 다음과 같이 설치합니다:
aptitude install lighttpd포트 80이 이미 사용 중이기 때문에 lighttpd를 시작할 수 없다는 오류 메시지가 표시됩니다:
Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use
failed!nginx가 이미 포트 80에서 수신 대기하고 있기 때문에 이렇게 되어야 합니다. 다음 명령어를 실행합니다:
update-rc.d -f lighttpd remove이렇게 하면 lighttpd가 부팅 시 시작되지 않습니다.
우리는 FastCGI 프로세스를 시작하는 데 사용할 수 있는 /usr/bin/spawn-fcgi라는 패키지에 포함된 프로그램 하나만 필요하기 때문에 lighttpd를 설치했습니다. 다음을 확인해 보세요:
spawn-fcgi --helpPHP FastCGI 데몬을 localhost의 포트 9000에서 www-data 사용자 및 그룹으로 실행하려면 다음 명령어를 실행합니다:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid물론 시스템을 부팅할 때마다 이 명령어를 수동으로 입력하고 싶지는 않으므로, 시스템이 부팅 시 자동으로 명령어를 실행하도록 하려면 /etc/rc.local을 엽니다…
vi /etc/rc.local… 그리고 파일 끝(종료 라인 앞)에 명령어를 추가합니다:
| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |
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는 /etc/nginx/sites-available/default 파일에 정의되어 있으며, 다음과 같이 수정합니다:
vi /etc/nginx/sites-available/default| [...] server { listen 80; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #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 /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |
servername ;는 이것을 기본 catchall vhost로 만듭니다(물론 www.example.com과 같은 호스트 이름을 여기에서 지정할 수도 있습니다).
location / 부분에서 index.php를 인덱스 라인에 추가했습니다. root /var/www/nginx-default;는 문서 루트가 /var/www/nginx-default 디렉토리임을 의미합니다.
PHP에 중요한 부분은 location ~ .php$ {} 구문입니다. 이를 활성화하려면 주석을 제거하세요. fastcgi_param 라인을 fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;로 변경해야 합니다(여기서 /var/www/nginx-default를 여러분의 vhost의 문서 루트로 교체하세요). 그렇지 않으면 PHP 인터프리터가 브라우저에서 호출한 PHP 스크립트를 찾지 못합니다.
include와 fastcgi_params; 사이에 공백이 몇 개 있는지 확인하세요. 기본 파일에서는 이것이 하나의 단어로 작성되어 있는데, 이는 버그입니다.
이제 파일을 저장하고 nginx를 재시작합니다:
/etc/init.d/nginx restart이제 문서 루트 /var/www/nginx-default에 다음 PHP 파일을 생성합니다:
vi /var/www/nginx-default/info.php| |
이제 브라우저에서 해당 파일을 호출합니다(예: http://192.168.0.100/info.php):

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

6 링크
- nginx: http://nginx.net/
- nginx 위키: http://wiki.codemongers.com/Main
- PHP: http://www.php.net
- MySQL: http://www.mysql.com
- Debian: http://www.debian.org/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.