서버 설치 · 6 min read · Oct 31, 2025

Ubuntu 16.04 LTS에 PHP 7 (PHP-FPM) 및 MySQL 5.7과 함께 Lighttpd 설치하기

Lighttpd는 속도에 민감한 환경을 위해 설계된 안전하고 빠르며 표준을 준수하는 웹 서버입니다. 이 튜토리얼에서는 PHP 7 지원(PHP-FPM을 통해) 및 MySQL 5.7과 함께 Ubuntu 16.04 서버에 Lighttpd를 설치하는 방법을 보여줍니다. PHP-FPM(FastCGI Process Manager)은 모든 크기의 사이트, 특히 더 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다. 이 튜토리얼에서는 Lighttpd의 spawn-fcgi 대신 PHP-FPM을 사용합니다.

1 사전 참고

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

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

sudo -s

2 MySQL 5.7 설치하기

먼저, 다음과 같이 MySQL을 설치합니다:

apt-get -y install mysql-server mysql-client

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

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

MySQL 비밀번호 입력하기.

설치 프로그램이 MySQL 루트 비밀번호를 설정했지만, 보안 MySQL 설치를 위해 변경해야 할 몇 가지 추가 설정이 있습니다. 이는 mysql_secure_installation 명령으로 수행할 수 있습니다.

mysql_secure_installation

명령은 대화식입니다:

root@server1:~# mysql_secure_installation
MySQL 서버 배포 보안 설정 중.
사용자 root의 비밀번호를 입력하십시오: <-- MySQL 루트 비밀번호 입력
VALIDATE PASSWORD PLUGIN을 사용하여 비밀번호를 테스트하고 보안을 향상시킬 수 있습니다. 비밀번호의 강도를 확인하고 사용자가 충분히 안전한 비밀번호만 설정할 수 있도록 허용합니다. VALIDATE PASSWORD 플러그인을 설정하시겠습니까?
예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오: <-- 이 기능을 원하시면 y를 누르거나 그렇지 않으면 Enter를 누르십시오.  
기존 비밀번호를 사용합니다.  
루트 비밀번호를 변경하시겠습니까? ((예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오) : <-- Enter를 누르십시오
... 건너뜁니다.  
기본적으로 MySQL 설치에는 익명 사용자가 있으며, 누구나 사용자 계정을 생성하지 않고도 MySQL에 로그인할 수 있습니다. 이는 테스트 용도로만 의도되며 설치를 조금 더 원활하게 진행하기 위한 것입니다.  
생산 환경으로 이동하기 전에 이를 제거해야 합니다.
익명 사용자를 제거하시겠습니까? (예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오) : <-- y  
성공.

보통 루트는 'localhost'에서만 연결할 수 있어야 합니다. 이는 누군가가 네트워크에서 루트 비밀번호를 추측할 수 없도록 보장합니다.
원격에서 루트 로그인을 금지하시겠습니까? (예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오) : <-- y  
성공.
기본적으로 MySQL에는 누구나 접근할 수 있는 'test'라는 데이터베이스가 포함되어 있습니다. 이는 테스트 용도로만 의도되며, 생산 환경으로 이동하기 전에 제거해야 합니다.
테스트 데이터베이스 및 이에 대한 접근을 제거하시겠습니까? (예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오) : <-- y  
- 테스트 데이터베이스 삭제 중...  
성공.
- 테스트 데이터베이스에 대한 권한 제거 중...  
성공.
권한 테이블을 다시 로드하면 지금까지 수행된 모든 변경 사항이 즉시 적용됩니다.
권한 테이블을 지금 다시 로드하시겠습니까? (예를 원하시면 y|Y를 누르고, 아니오를 원하시면 다른 키를 누르십시오) : <-- y  
성공.
모두 완료되었습니다!

3 Lighttpd 설치하기

Lighttpd는 Ubuntu 패키지로 제공됩니다. 따라서 Ubuntu Xenial Xerus 패키지 리포지토리에서 apt를 사용하여 직접 설치할 수 있습니다:

apt-get -y install lighttpd

이제 브라우저를 http://192.168.1.100/로 이동하면 Lighttpd 자리 표시자 페이지가 표시됩니다:

Ubuntu Lighttpd 기본 페이지.

Lighttpd의 기본 문서 루트는 Ubuntu에서 /var/www/html이며, 구성 파일은 /etc/lighttpd/lighttpd.conf입니다. 추가 구성은 /etc/lighttpd/conf-available 디렉토리에 있는 파일에 저장되며, 이러한 구성은 lighttpd-enable-mod 명령으로 활성화할 수 있습니다. 이 명령은 /etc/lighttpd/conf-enabled 디렉토리에서 /etc/lighttpd/conf-available의 적절한 구성 파일로의 심볼릭 링크를 생성합니다. lighttpd-disable-mod 명령으로 구성을 비활성화할 수 있습니다.

4 PHP 7.0 설치하기

PHP-FPM을 통해 Lighttpd에서 PHP를 작동하게 할 수 있으며, 다음과 같이 설치합니다:

apt-get -y install php7.0-fpm php7.0

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

5 Lighttpd 및 PHP 7.0 구성하기

Lighttpd에서 PHP를 활성화하려면 /etc/php/7.0/fpm/php.ini를 수정하고 cgi.fix_pathinfo=1 줄의 주석을 제거해야 합니다:

nano /etc/php/7.0/fpm/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://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

Lighttpd의 PHP 구성 파일 /etc/lighttpd/conf-available/15-fastcgi-php.conf는 spawn-fcgi와 함께 사용하기에 적합하지만, 우리는 PHP-FPM을 사용하고자 하므로 파일의 백업(이름: 15-fastcgi-php.conf.bak)을 만들고 15-fastcgi-php.conf를 다음과 같이 수정합니다:

cd /etc/lighttpd/conf-available/  
cp 15-fastcgi-php.conf 15-fastcgi-php.conf.bak  
nano 15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## PHP용 FastCGI 서버 시작 (php7.0-cgi 패키지가 필요함)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php/php7.0-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

fastcgi 구성을 활성화하려면 다음 명령을 실행합니다:

lighttpd-enable-mod fastcgi  
lighttpd-enable-mod fastcgi-php

이렇게 하면 /etc/lighttpd/conf-enabled/10-fastcgi.conf가 /etc/lighttpd/conf-available/10-fastcgi.conf를 가리키고, /etc/lighttpd/conf-enabled/15-fastcgi-php.conf가 /etc/lighttpd/conf-available/15-fastcgi-php.conf를 가리키는 심볼릭 링크가 생성됩니다:

ls -l /etc/lighttpd/conf-enabled
root@server1:/etc/lighttpd/conf-available# ls -l /etc/lighttpd/conf-enabled  
total 0  
lrwxrwxrwx 1 root root 33 Apr 27 11:26 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf  
lrwxrwxrwx 1 root root 37 Apr 27 11:26 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf  
lrwxrwxrwx 1 root root 42 Apr 21 11:10 90-javascript-alias.conf -> ../conf-available/90-javascript-alias.conf  
root@server1:/etc/lighttpd/conf-available#

그런 다음 Lighttpd를 다시 로드합니다:

service lighttpd force-reload

참고: 로케일 오류가 발생하면 다음을 사용하여 오류를 제거할 수 있습니다:

apt-get -y install language-pack-en-base  
dpkg-reconfigure locales

6 PHP 7.0 테스트 / PHP 설치에 대한 세부 정보 얻기

기본 웹사이트의 문서 루트는 /var/www/html입니다. 이제 해당 디렉토리에 작은 PHP 파일(info.php)을 생성하고 브라우저에서 호출합니다. 이 파일은 설치된 PHP 버전과 같은 PHP 설치에 대한 유용한 세부 정보를 많이 표시합니다.

nano /var/www/html/info.php

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

Lighttpd에서의 PHP 정보.

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

7 PHP에서 MySQL 지원 받기

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

apt-cache search php7.0

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

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

APCu는 PHP 7과 함께 제공되는 PHP Opcache 모듈의 확장으로, APC 캐시를 지원하는 소프트웨어(예: Wordpress 캐시 플러그인)에 대한 호환성 기능을 추가합니다.

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

apt-get -y install php-apcu

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

service php7.0-fpm reload

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

8 phpMyAdmin

phpMyAdmin은 MySQL 데이터베이스를 관리할 수 있는 웹 인터페이스입니다. 설치하는 것이 좋습니다:

apt-get -y install phpmyadmin

다음과 같은 질문이 표시됩니다:

자동으로 재구성할 웹 서버: <-- lighttpd  
phpmyadmin을 dbconfig-common으로 구성하시겠습니까? <-- 예  
phpmyadmin의 MySQL 애플리케이션 비밀번호: <-- Enter를 누르십시오

다음과 같은 오류가 발생하면:

변경 사항을 활성화하려면 /etc/init.d/lighttpd force-reload를 실행하십시오  
dpkg: phpmyadmin 패키지 처리 중 오류 (--configure):  
서브 프로세스 설치 후 설치 스크립트가 오류 종료 상태 2를 반환했습니다  
E: 서브 프로세스 /usr/bin/dpkg가 오류 코드를 반환했습니다 (1)

다음 명령을 실행하십시오:

/etc/init.d/lighttpd force-reload  
apt-get -y install phpmyadmin

그 후 http://192.168.1.100/phpmyadmin/에서 phpMyAdmin에 접근할 수 있습니다:

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

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

nano /etc/php/7.0/fpm/pool.d/www.conf

… listen 줄을 다음과 같이 수정합니다:

[...]
;listen = /var/run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
[...]

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

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

service php7.0-fpm reload

그 다음 Lighttpd의 PHP 구성 파일 /etc/lighttpd/conf-available/15-fastcgi-php.conf를 열고 소켓 줄을 호스트 및 포트 줄로 교체합니다:

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## PHP용 FastCGI 서버 시작 (php7.0-cgi 패키지가 필요함)
fastcgi.server += ( ".php" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)

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

service lighttpd force-reload

10 링크

Share: X/Twitter LinkedIn

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

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