Ubuntu Linux

Ubuntu, Install Nginx, PHP7.0, MySQL

Gwnduke's 2016. 5. 2. 04:55

Ubuntu14.04 Nginx, PHP7, MySQL 설치하기

Ubuntu14.04 환경에서 Nginx, PHP7, MySQL 을 연동하는 방법을 알아보겠습니다.

기존 apt-get 으로 위 프로그램들을 설치하면 낮은 버전이 설치되거나 설치가 안될 수 있습니다.

그래서 설치준비단계에서 저장소를 추가하고 본격적인 설치작업에 들어갑니다.


2016.05.02(월) 기준 이상없이 동작하는 설치방법입니다.

글 디자인을 못해서 보기가 성가시겠지만 ㅠㅠ 잘 작동하는 매뉴얼입니다.

고통없는 설치로 시작하세요~


설치 준비


Nginx 저장소 추가

$ sudo vi /etc/apt/sources.list

다음 두 라인을 추가한다.


deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx

deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx



Nginx 키추가

$ wget http://nginx.org/keys/nginx_signing.key

$ sudo apt-key add nginx_signing.key

$ sudo rm nginx_signing.key



PHP7 저장소 추가

$ add-apt-repository ppa:ondrej/php



본격적으로 설치해보자


먼저 저장소 최신화를 수행한다.

$ sudo apt-get update



Nginx 설치&확인

sudo -s
nginx=stable # use nginx=development for latest development version
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginx


$ nginx -v


인터넷브라우저 열어서 http://localhost 로 접속해보자

welcome to nginx 가 출력되면 정상적으로 설치된 것이다.



PHP-fpm 설치&확인

$ sudo apt-get install php7.0-fpm

$ php -v


$ sudo apt-get install php7.0-gd php7.0-curl php7.0-mbstring


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

date.timezone을 찾아서 주석을 제거하고 다음과 같이 수정

date.timezone = Asia/Seoul


$ sudo service php7.0-fpm restart 


MySQL 설치&확인
$ sudo apt-get install mysql-server

$ sudo service mysql status



MySQL - PHP 연동

$ sudo apt-get install php7.0-mysql




다음은 Nginx 설정. 기존 파일을 다음과 같이 작성하시면 됩니다.

$ sudo vi /etc/nginx/nginx.conf  --> www-data로 user 변경

/etc/nginx/nginx.conf

--------------------------------START-------------------------------------------


user  www-data;

worker_processes  1;


error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;


(... 생략 ...)

-----------------------------------END--------------------------------------------




$ sudo vi /etc/nginx/conf.d/default.conf


/etc/nginx/conf.d/default.conf

--------------------------------START-------------------------------------------

server {

    listen       80;

    server_name  localhost;

    root   /usr/share/nginx/html;

 

    location / {

        index  index.php index.html;

    }

 

    location ~ [^/]\.php(/|$) {

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

        if (!-f $document_root$fastcgi_script_name) {

            return 404;

        }

 

        fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        fastcgi_index index.php;

        include fastcgi_params;

    }

}

-----------------------------------END--------------------------------------------



/etc/nginx/fastcgi_params


----
----------------------------START-------------------------------------------

fastcgi_param   QUERY_STRING            $query_string;

fastcgi_param   REQUEST_METHOD          $request_method;

fastcgi_param   CONTENT_TYPE            $content_type;

fastcgi_param   CONTENT_LENGTH          $content_length;

 

fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;

fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;

fastcgi_param   PATH_INFO               $fastcgi_path_info;

fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;

fastcgi_param   REQUEST_URI             $request_uri;

fastcgi_param   DOCUMENT_URI            $document_uri;

fastcgi_param   DOCUMENT_ROOT           $document_root;

fastcgi_param   SERVER_PROTOCOL         $server_protocol;

 

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;

fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

 

fastcgi_param   REMOTE_ADDR             $remote_addr;

fastcgi_param   REMOTE_PORT             $remote_port;

fastcgi_param   SERVER_ADDR             $server_addr;

fastcgi_param   SERVER_PORT             $server_port;

fastcgi_param   SERVER_NAME             $server_name;

 

fastcgi_param   HTTPS                   $https;

 

# PHP only, required if PHP was built with --enable-force-cgi-redirect

fastcgi_param   REDIRECT_STATUS         200;

-----------------------------------END--------------------------------------------


$ sudo service nginx restart


$ cd /usr/share/nginx/html

$ sudo vi info.php


info.php

<?php 

phpinfo();


브라우저로 http://localhost/info.php 로 접속해 확인한다.



-------------------- 여기는 옵션사항입니다. -----------------------
@ 에러내용을 출력하고 싶다면...

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

display_errors = ON 
....

-----------------------------------END--------------------------------------------



@ PHP 파일 접근시, Notice: ....... 메시지로 고통받는다면...

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

--------------------------------START-------------------------------------------

(.... 생략)
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

(.... 생략) 

-----------------------------------END--------------------------------------------





MySQL UTF8 Charset 설정하기

$ sudo vi /etc/mysql/my.cnf 


[mysqld]

(... 중략 ...)

character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [mysqldump] (... 생략 ...)

데이터 베이스, 테이블 셋 바꾸기 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


참고자료: 

# 설치관련

http://nginx.org/en/linux_packages.html

https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04

http://dewdew.kr/87

https://opentutorials.org/module/384/4332

https://blog.lael.be/post/2600


# MySQL utf8mb4
http://kimpaper.blogspot.kr/2015/02/mysql-mariadb-utf8mb4.html
https://blog.lael.be/post/917
http://yookeun.github.io/database/2015/07/21/mysql-utf8mb4/