티스토리 뷰

IT Story/리눅스

우분투에 Nginx + PHP 7 + MySQL 설치 방법(LEMP)

행복한소식까치 행복한소식까치 2017.07.15 07:30

 Nginx 이전에는 주로 Apache를 사용 했었습니다. 물론 지금도 Apache를 많이 사용합니다.

 Apache는 많은 기능을 포함하고 있어 대부분을 구성에 호환가능하게 사용할 수 있습니다.

 상대적으로 Nginx의 경우  꼭 필요한 기능만 구현하여 높은 성능을  낼 수 있다고 합니다.

 

LEMP (Linux + Nginx + Mysql + PHP) 설치 방법


제가 설치하는 환경은 리눅스 버전이 우분투 16.04LTS 입니다.  다른 리눅스도 비슷합니다.


 1.권한  획득

sudo su

 위 과정을 진행 안할 경우는 지금부터 나오는 명령어의 앞에 항상 sudo를 붙여서 사용하면 됩니다.

es) apt-get install mysql --> sudo apt-get install myql


 2.MySql  설치

 

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

아래 그림이 나오면 root  패스워드를 2번 입력하고  ok클릭

 

 3.Nginx 설치 

 Nginx의 경우 웹서버이기 때문에 Apache서버가 이미 설치된 경우 삭제하고 설치하는것이 충돌을 피 할 수 있습니다.

  1) 삭제방법 

//아파치 서탑

service apache2 stop

 

//아파치 삭제

apt-get remove apache2

 

2) 설치방법

//nginx 설치

apt-get -y install nginx

 

//nginx 시작

service nginx start

3) 웹브라우저에서 localhost 입력하여 젒속하여 아래와 같은 화면이 나오면 정상적으로 설치된 경우 입니다.

 4.PHP7 설치

  Nginx의 경우 PHP-FPM을 설치해야합니다. PHP-FPM은 PHP에 FastCGI Process Manager이 추가된것입니다.

 

 설치방법

apt-get -y install php7.0-fpm

 

 5.Nginx 환경설정 

vi /etc/nginx/nginx.conf

vi 에디터에 익숙하지 않은 유저는 메모장처럼 사용 가능한 gedit를 사용하여 익숙한 편집툴로 수정이가능합니다.

사용방법 : gedit /etc/nginx/nginx.conf

// 수정 할 부분

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

 

vi /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;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# 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;

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 php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

 

환경 설정이 끝나고 서비스를 리로드 합니다.

service nginx reload


Nignx를 재시작한 후  /etc/php/fpm/php.ini  열어 cgi.fix_pathinfo 설정값을 1에서 0 으로 변경합니다.

vi /etc/php/7.0/fpm/php.ini


[...]
; 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을 재시작 합니다.
 

service php7.0-fpm reload

설정완료 후 테스트 페이지를 만들어 접속 가능 여부를 확인 합니다.

vi /var/www/html/info.php


 

<?php
phpinfo();
?>

웹브라이저에서 http://localhost/info.php 로 접속해서 아래와 같은 화면이 나오면 정상적으로 설치가된것입니다.


 6. PHP7과 Mysql 연결 하기


  PHP 에서 Mysql을 지원하기위해서 일반적으로 php7.0-mysql package 를 설치합니다.
  관련 Package를 쉽게 찾기위해서 Search 명령어를 사용 하여 확인 할 수 있습니다.

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 설치 
:APCu는 PHP의 Opcache 모듈을 확장하는데 필요하다고 합니다.
예를 들면 위더프레스 같은 cache plugins 지원하는 소프트웨어를 좀더 안정적으로 지원하게 해준다고 합니다. 

apt-get -y install php-apcu

위명령어로 설치 후 PHP_FPM을 재시작 합니다.

service php7.0-fpm reload


그리고 Nginx 의 환경 설정을 아래와 같이 변경합니다.

vi /etc/nginx/site-available/default


[...]
        location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php7.0-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
} [...]

이제 마지막으로 nginx 을 재시작합니다.

service nginx reload


이것으로 Nginx LEMP 서버 설치가 완료 되었습니다.


다음 강좌는 설치된 LEMP서버에 그누보드(G5)를 올려 보도록 하겠습니다.

 

PS. 이유는 모르겠으나 vi 명령으로 수정시 readonly 오류가 발생하면서 수정이 안되는 경우가 있습니다.

     readonly 오류가 발생할경우 vi 를 nano로 변경하여 수정하면 정상적으로 수정이 됩니다.

댓글
댓글쓰기 폼