Nginx, PHP, Mariadb in Ubuntu 14.04 (kor)
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번 포트로 들어오는 입력에 대한 내용을 설정한다.
- 우선 index 라인에 index.php 를 추가한다.
- server_name 을 접속할 도메인 혹은 ip로 바꾸어주도록 한다.
아래 내용을 추가해 주도록 한다.(기존 주석으로 묶인 내용이 있다면, 적절히 주석을 풀어주어도 된다.)
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();
?>
로 접근시 php설정 정보에 대한 페이지가 보인다면 성공이다.
'Study-programing > linux-server' 카테고리의 다른 글
mac 에서 npm install -g 시 오류 "no such file or directory, chmod" (0) | 2016.12.08 |
---|---|
NUMA 환경에서 프로세스 코디네이터 발표 자료. (0) | 2016.07.05 |