Debian 8에서 PHP(PHP-FPM) 및 MariaDB(LEMP)로 Nginx 설치
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- 데비안 7(Wheezy)
이 페이지에서
- 서문
- 시스템 업데이트
- MariaDB 설치(MySQL 드롭인 교체)
- Nginx 설치
- PHP 설치
- nginx 구성
- PHP에서 MySQL/MariaDB 지원 받기
- PHP-FPM에서 TCP 연결 사용(선택 사항)\n
- 가상 머신 이미지
- SSH 로그인
- MariaDB 로그인
이 튜토리얼에서는 Debian 8에 Nginx 웹 서버를 설치하는 방법을 보여줍니다. PHP-FPM) MySQL 드롭인 대체품으로 MariaDB를 설치합니다. 이 설정은 종종 LEMP=Linux + nginx(\engine x\로 발음) + MySQL + PHP) .
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 루트 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다. 이 비밀번호는 [이메일 보호] 사용자에게 유효하므로 나중에 MariaDB 루트 비밀번호를 수동으로 지정할 필요가 없습니다.
MariaDB "root" 사용자의 새 비밀번호: <-- yourrootsqlpassword
MariaDB "root" 사용자의 비밀번호 반복: <-- yourrootsqlpasswordNginx 설치
Nginx는 다음과 같이 설치할 수 있는 Debian Jessie용 패키지로 제공됩니다.
apt-get -y install nginx
나중에 Nginx를 시작합니다.
systemctl start nginx.service
웹 서버 IP 주소 또는 호스트 이름을 브라우저에 입력하면(예: http://192.168.1.100) 다음 페이지가 표시됩니다.
Debian 8의 기본 nginx 문서 루트는 /var/www/html입니다.
PHP 설치
다음과 같이 설치하는 PHP-FPM(PHP-FPM(FastCGI Process Manager)은 모든 규모의 사이트, 특히 더 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다)을 통해 nginx에서 PHP5를 작동시킬 수 있습니다.
apt-get -y install php5-fpm
PHP-FPM은 소켓 /var/run/php5-fpm.sock에서 FastCGI 서버를 실행하는 데몬 프로세스(systemd 단위 파일 php5-fpm.service 포함)입니다.
nginx 구성
nginx 구성은 지금 여는 /etc/nginx/nginx.conf에 있습니다.
nano /etc/nginx/nginx.conf
구성은 이해하기 쉽습니다(자세한 내용은 여기에서 확인할 수 있습니다: http://wiki.nginx.org/NginxFullExample2).
먼저 keepalive_timeout을 2초와 같은 합리적인 값으로 설정합니다.
[...] keepalive_timeout 2; [...]
가상 호스트는 서버 {} 컨테이너에 정의됩니다. 기본 가상 호스트는 /etc/nginx/sites-available/default 파일에 정의되어 있습니다. 다음과 같이 수정할 수 있습니다.
nano /etc/nginx/sites-available/default
[...] server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]서버 이름 _; 이것을 기본 포괄 가상 호스트로 만듭니다(물론 여기에 www.example.com과 같은 호스트 이름을 지정할 수도 있습니다).
인덱스 라인에 index.php를 추가했습니다. 루트 /var/www/html; 문서 루트가 /var/www/html 디렉토리임을 의미합니다.
PHP에서 중요한 부분은 위치 ~ \\.php${} 스탠자입니다. 활성화하려면 위와 같이 주석을 해제하십시오.
이제 파일을 저장하고 Nginx를 다시 로드합니다.
systemctl reload nginx.service
다음 열기 /etc/php5/fpm/php.ini...
nano /etc/php5/fpm/php.ini
... 그리고 cgi.fix_pathinfo=0을 설정합니다:
[...] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; 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
<?php phpinfo(); ?>
이제 브라우저에서 해당 파일을 호출합니다(예: http://192.168.1.100/info.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 opcache를 확장하는 PHP 중간 코드를 캐싱하고 최적화하기 위한 무료 개방형 PHP opcode 캐셔입니다. 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 모듈을 포함하여 많은 새 모듈을 찾을 수 있습니다.
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 = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...]
이렇게 하면 PHP-FPM이 IP 127.0.0.1(localhost)의 포트 9000에서 수신 대기하게 됩니다. 시스템에서 사용하지 않는 포트를 사용하고 있는지 확인하십시오.
그런 다음 PHP-FPM을 다시 로드합니다.
systemctl reload php5-fpm.service
다음으로 Nginx 구성과 모든 가상 호스트를 살펴보고 fastcgi_pass unix:/var/run/php5-fpm.sock 행을 변경합니다. to fastcgi_pass 127.0.0.1:9000;, 예. 이와 같이:
nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With 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마리아DB 로그인
사용자 이름: root
비밀번호: howtoforge최초 부팅 후 암호를 변경하십시오.
VM은 정적 IP 192.168.1.100에 대해 구성되며 IP는 /etc/network/interfaces 파일에서 변경할 수 있습니다.
연결
- nginx: http://nginx.net/
- nginx 위키: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- 데비안: http://www.debian.org/