All category에 해당하는 글 51

Nginx, PHP, Mariadb in Ubuntu 14.04 (kor)

Study-programing/linux-server|2015. 2. 22. 19:55

How to install Nginx, PHP, Mariadb in Ubuntu 14.04

이 문서는 Nginx 와 PHP5, Mariadb 를 Ubuntu 14.04 에서 사용하기 위해 작성하였다.
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04 를 참고하였다.


Install

Step 1 : Update apt-get

sudo apt-get update

이는 최신의 프로그램을 다운 받기 위한 업데이트 과정이다.

Step 2 : Install Nginx

sudo apt-get install nginx

Step 3 : Install mariadb

mariadb 와 mysql 은 엔드유저 입장에서는 동일한 동작을 한다고 생각해도 된다.

하지만, 일부 내부 동작과 라이센스가 다르기 때문에 mariadb를 사용하도록 한다.

sudo apt-get install mariadb-server

설치 중 입력을 요구하는 비밀번호는 database root 계정의 비밀번호가 되므로, 잊지 않도록 한다.

Step 4 : Install PHP

PHP 는 PHP5 로 작업하도록 한다. 또한, Nginx 와 Fast CGI 연동을 위해, php5-fpm (php FastCGI Process Manager) 를 설치하도록 한다.

sudo apt-get install php5-fpm

설치 이후, mariadb 와 연동을 위한 모듈을 설치하도록 한다.

sudo apt-get install php5-mysql

Setting

Step 1 : config PHP

우선, /etc/php5/fpm 폴더의 하위에 php-fpm 관련 설정들이 들어있다.

먼저 php.ini 의 내용을 수정하여 보안 취약점을 막도록 하자.

sudo vim /etc/php5/fpm/php.ini

다음, cgi.fix_pathinfo가 있는 라인을 찾아서 아래와 같이 수정해준다.(약 768라인)

cgi.fix_pathinfo=0

해당 값이 1 일 경우, http://localhost/ bad.hack/aa.php 과 같이 비정상 적인 호출을 할 수 있다.(bad.hack 를 서버에서 읽게 된다.)

다음으로, ./pool.d/www.conf 의 내용을 수정하여, 소켓을 설정하도록 한다.

sudo vim /etc/php5/fpm/pool.d/www.conf

다음, listen = 이 있는 라인을 찾아서, 아래와 같이 수정해준다,(약 33라인)

listen = /var/run/php5-fpm.sock

이는, Nginx와 php가 같은 서버에서 돌아갈 때 사용되는 내부 소켓이다.

이후, php-fpm 을 재시작 해주도록 한다.

sudo service php5-fpm restart

Step 2 : config Nginx

nginx 는 /etc/nginx 폴더 하위에 설정들이 들어있다.

이 중, sites-available 폴더에 가능한 설정들을 넣어놓고, 그 중 사용할 설정을 sites-enabled에서 링크를 걸어 사용한다.

기본 설정은 sites-enabled/default 이다.

따라서 해당 파일을 열어 설정을 수정하도록 한다.

sudo vim /etc/nginx/sites-enabled/default

해당 파일 중 server { listen 80;… } 부분의 내용을 일부 수정하여야 한다.

이는 80번 포트로 들어오는 입력에 대한 내용을 설정한다.

  1. 우선 index 라인에 index.php 를 추가한다.
  2. server_name 을 접속할 도메인 혹은 ip로 바꾸어주도록 한다.
  3. 아래 내용을 추가해 주도록 한다.(기존 주석으로 묶인 내용이 있다면, 적절히 주석을 풀어주어도 된다.)

    pass the PHP scripts to FastCGI server listening on the php-fpm socket

     location ~ \.php$ {
             try_files $uri =404;
             fastcgi_pass unix:/var/run/php5-fpm.sock;
             fastcgi_index index.php;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include fastcgi_params;
     }
    

이는, .php 로 끝나는 주소에 대하여 fcgi로 동작하도록 해준다.

이후, nginx를 재시작 해주도록 한다.

sudo service nginx restart

재시작이 실패했을 경우, 설정파일 오류일 경우가 많으므로 살펴보도록 한다.

Testing

이전의 /etc/nginx/sites-enabled/default 파일 중 server { listen 80;… } 안에 있는 root 에서 가르키는 폴더가, web root 폴더이다.

따라서 해당 폴더 (/usr/share/nginx/html) 에 실행하기 원하는 파일을 생성하면 접근 가능하다.

test.php 란 이름으로 아래와 같이 작성해 주도록 한다.

<?php
phpinfo();
?>

이후, http://uri/test.php

로 접근시 php설정 정보에 대한 페이지가 보인다면 성공이다.

댓글()