본문으로 바로가기

[Ubuntu] 우분투 NGINX - PHP - MySQL

category 리눅스/Ubuntu 2013.09.20 00:30

NGINX(엔진엑스)를 PHP와 연동하기 위해서는 PHP-FPM(PHP FastCGI Process Manager)를 이용해야 합니다. PHP-FPM은 PHP 5.4RC부터는 PHP에 기본 내장되어 있고 그 이전 버전에서는 따로 설치를 해야 합니다.

MySQL 설치

sudo apt-get install mysql-server mysql-client

PHP-FPM 설치

우분투 12.04에서 php를 apt-get을 이용해 설치를 진행한다면 php 5.3.10 버전(2013/09/15 기준)이 설치된다.

PHP-FPM이 포함되어 있지 않은 버전이니 이를 설치해야 한다.


php-fpm 설치시 의존성으로 php5가 설치된다.

sudo apt-get install php5-fpm

php5 모듈 설치

sudo apt-get install php5-cli php5-mcrypt php5-gd

php-fpm 과 mysql 연동

sudo apt-get install php5-mysql

NGINX 과 PHP-FPM 연결

엔진엑스의 설정파일에서 server { 부분의 location / {의 root 디렉토리설정을 server { 쪽으로 이동시켜 전역적인 설정으로 만들어주고 php설정을 변경한다.

sudo vi /usr/local/nginx/conf/nginx.conf

  server {
    listen    80;
    server_name localhost;
    root html;
  }

  location ~ \.php$ {
    # 접근 속도가 빠르게 유닉스 소켓으로 변경
    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-fpm의 설정파일도 유닉스 소켓으로 변경

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

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

보안설정

보안과 관련하여 [ 링크 ]

아래 내용 추가하자

sudo vi /usr/local/nginx/conf/fastcgi_params

  fastcgi_split_path_info ^(.+\.php)(/.*)$;
  fastcgi_param  PATH_INFO          $fastcgi_path_info if_not_empty;
  fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

서비스 재시작

sudo service php5-fpm restart
sudo service nginx restart



댓글을 달아 주세요

  1. 김개발 2015.09.10 11:31 신고

    정보 감사합니다. 덕분에 설치 잘 했습니다.
    설치 하다가 오류가 있어서 확인차 댓글 남깁니다.

    nginx.conf 파일의 내용중 location directive 가 server directive 안으로 내포해야 하는 것 같습니다.
    재시작이 실패해서 nginx -t 로 확인 해보니

    nginx: [emerg] "location" directive is not allowed here in

    라고 메세지가 뜹니다. 확인 부탁드립니다.
    감사합니다.

    • BlogIcon 흉내쟁이 2015.09.10 11:31 신고

      저도 nginx를 맛보기로 테스트하고 구동성공시킨 후론 손을대고 있진 않습니다. 과거의 설정에선 문제가 없었더라도 최근엔 어찌변화됬는지 공부가 필요한 부분입니다. 도움 드릴수 없는점 양해부탁드립니다

티스토리 툴바