서버 설치 · 5 min read · Jan 05, 2026

Debian 8에 Nginx와 PHP (PHP-FPM) 및 MariaDB (LEMP) 설치하기

이 튜토리얼에서는 Debian 8에 Nginx 웹 서버를 설치하는 방법을 보여줍니다. Nginx(발음: “엔진 엑스”)는 무료이며 오픈 소스인 고성능 HTTP 서버입니다. Nginx는 안정성, 풍부한 기능 세트, 간단한 구성 및 낮은 자원 소비로 유명합니다. 이 튜토리얼에서는 PHP 지원(Nginx와 PHP-FPM을 통해) 및 MySQL 대체로서의 MariaDB를 설치하는 방법을 보여줍니다. 이 설정은 종종 LEMP = Linux + nginx(발음: “engine x”) + MySQL + PHP)로 불립니다.

사전 참고

이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.1.100을 사용합니다. 이러한 설정은 귀하의 경우 다를 수 있으므로 적절한 곳에서 교체해야 합니다. Debian 8 서버가 있어야 하며, 저는 이 튜토리얼의 기본 시스템으로 Debian 최소 서버를 사용할 것입니다.

시스템 업데이트

Nginx 설정을 시작하기 전에 패키지 목록을 업데이트하고 보류 중인 업데이트를 설치하는 것이 좋습니다. 다음 명령어를 실행하여 보류 중인 업데이트를 설치합니다.

apt-get update  
apt-get upgrade -y

나중에 구성 파일을 편집하기 위해 nano 편집기를 사용할 것입니다. Nano는 다음 명령어로 설치할 수 있습니다:

apt-get -y install nano 

MariaDB 설치 (MySQL 대체로서)

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

apt-get -y install mariadb-server mariadb-client

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

MariaDB “root” 사용자에 대한 새 비밀번호: <– yourrootsqlpassword
MariaDB “root” 사용자에 대한 비밀번호를 반복 입력하세요: <– yourrootsqlpassword

MariaDB 루트 사용자 비밀번호 입력.

Nginx 설치

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

apt-get -y install nginx

그 후 Nginx를 시작합니다:

systemctl start nginx.service

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

Debian Nginx 시작 페이지.

Debian 8의 기본 nginx 문서 루트는 /var/www/html입니다.

PHP 설치

PHP5를 Nginx에서 PHP-FPM을 통해 작동하게 할 수 있습니다(PHP-FPM(FastCGI 프로세스 관리자)은 모든 크기의 사이트, 특히 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다). 다음과 같이 설치합니다:

apt-get -y install php5-fpm

PHP-FPM은 /var/run/php5-fpm.sock 소켓에서 FastCGI 서버를 실행하는 데몬 프로세스입니다.

Nginx 구성

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

nano /etc/nginx/nginx.conf

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

먼저 keepalive_timeout을 2초와 같은 합리적인 값으로 설정합니다:

[...]
    keepalive_timeout   2;
[...]

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

nano /etc/nginx/sites-available/default
[...]
server {  
 listen 80 default_server;  
 listen [::]:80 default_server;  
  
 # SSL 구성  
 #  
 # listen 443 ssl default_server;  
 # listen [::]:443 ssl default_server;  
 #  
 # ssl-cert 패키지에 의해 생성된 자체 서명 인증서  
 # 프로덕션 서버에서 사용하지 마세요!  
 #  
 # include snippets/snakeoil.conf;  
  
 root /var/www/html;  
  
 # PHP를 사용하는 경우 index.php를 목록에 추가하세요  
 index index.html index.htm index.nginx-debian.html index.php;  
  
 server_name _;  
  
 location / {  
 # 먼저 요청을 파일로 제공하려고 시도한 다음  
 # 디렉토리로 제공하고, 마지막으로 404를 표시합니다.  
 try_files $uri $uri/ =404;  
 }  
  
 # 127.0.0.1:9000에서 수신 대기하는 FastCGI 서버에 PHP 스크립스를 전달합니다  
 #  
 location ~ \.php$ {  
 include snippets/fastcgi-php.conf;  
   
 # # php5-cgi만 사용하는 경우:  
 # fastcgi_pass 127.0.0.1:9000;  
 # php5-fpm을 사용하는 경우:  
 fastcgi_pass unix:/var/run/php5-fpm.sock;  
 }  
  
 # Apache의 문서 루트가 nginx의 문서 루트와 일치하는 경우 .htaccess 파일에 대한 접근을 거부합니다  
 #  
 location ~ /\.ht {  
 deny all;  
 }  
}
[...]

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

index.php를 인덱스 줄에 추가했습니다. root /var/www/html;는 문서 루트가 /var/www/html 디렉토리임을 의미합니다.

PHP에 중요한 부분은 location ~ .php$ {} 구문입니다. 위와 같이 주석을 제거하여 활성화합니다.

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

systemctl reload nginx.service

다음으로 /etc/php5/fpm/php.ini를 엽니다…

nano /etc/php5/fpm/php.ini

… 그리고 cgi.fix_pathinfo=0으로 설정합니다:

[...]
; 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://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

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

systemctl reload php5-fpm.service

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

nano /var/www/html/info.php

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

PHP 정보.

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

PHP에서 MySQL / MariaDB 지원 받기

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

apt-cache search php5

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

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

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

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

apt-get install php5-apcu

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

systemctl reload php5-fpm.service

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

MySQL이 포함된 PHP 정보.

PHP-FPM을 TCP 연결로 사용하기 (선택 사항)

기본적으로 PHP-FPM은 /var/run/php5-fpm.sock 소켓에서 수신 대기합니다. PHP-FPM을 TCP 연결로 사용할 수도 있습니다. 이를 위해 /etc/php5/fpm/pool.d/www.conf를 엽니다…

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

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

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

이렇게 하면 PHP-FPM이 IP 127.0.0.1(로컬호스트)의 포트 9000에서 수신 대기하게 됩니다. 시스템에서 사용 중이지 않은 포트를 사용해야 합니다.

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

systemctl reload php5-fpm.service

다음으로 Nginx 구성과 모든 vhost를 살펴보고 fastcgi_pass unix:/var/run/php5-fpm.sock; 줄을 fastcgi_pass 127.0.0.1:9000;로 변경합니다. 예를 들어 다음과 같이:

nano /etc/nginx/sites-available/default
[...]  
 location ~ \.php$ {  
   include snippets/fastcgi-php.conf;  
  
   # # php5-cgi만 사용하는 경우:  
   # fastcgi_pass 127.0.0.1:9000;  
   # # php5-fpm을 사용하는 경우:  
   # fastcgi_pass unix:/var/run/php5-fpm.sock;  
   fastcgi_pass 127.0.0.1:9000;  
 }
[...]  

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

systemctl reload nginx.service

가상 머신 이미지

이 튜토리얼은 Howtoforge 구독자를 위한 OVA / OVF 형식의 사용 준비가 완료된 가상 머신으로 제공됩니다. VM 형식은 VMWare 및 Virtualbox와 호환되며, 아마도 이 형식을 가져올 수 있는 다른 도구와 호환됩니다. 다운로드 링크는 오른쪽 메뉴의 상단에 있습니다. 파일 이름을 클릭하여 다운로드를 시작하세요.

VM의 로그인 세부정보는 다음과 같습니다:

SSH 로그인

사용자 이름: root
비밀번호: howtoforge

MariaDB 로그인

사용자 이름: root
비밀번호: howtoforge

첫 부팅 후 비밀번호를 변경하세요.

VM은 정적 IP 192.168.1.100으로 구성되어 있으며, IP는 /etc/network/interfaces 파일에서 변경할 수 있습니다.

링크

Share: X/Twitter LinkedIn

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

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