CentOS7 에서 Nginx + PHP5.6 + PHP-FPM + MariaDB 설치방법

Posted by 대혀니_
2016. 4. 23. 17:08 IT/Linux

CentOS7 에서 Nginx 를 설치하는 방법이다.


Nginx 그리고 Maradib PHP-FPM 등의 저장소는 기본 repo에 등록되어 있지 않다..


""혹시나 해서 쓰지만 처음 구축한다면 SELINUX가 영향을 끼쳐서 php에서 퍼미션이 안바뀌는등 문제가 있을수 있다. 만약 삽질하다가 안되면 한번 꺼보는걸 추천""


설치 과정


맨 먼저 yum update 로 repo 업데이트 해놓고 시작하자.


epel-release-7-*.noarch.rpm (필자는 1로 했었으나 계속 업데이트 되는듯.. 글 작성할때 당시에는 6이였다)

remi-release-7.rpm 두개가 필요하다.


rpm -Uvh http://mirror.premi.st/epel/7/x86_64/e/epel-release-7-*.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm


/etc/yum.repos.d/nginx.repo 에 파일을 하나 만들어서 다음과 같은 내용을 기입한다 (nginx 의 repo이다)

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=0

enabled=1



Nginx + php + php-fpm 설치


yum install nginx


yum --enablerepo=remi,remi-php56 install nginx php-fpm php-common


yum --enablerepo=remi,remi-php56 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongo php-pecl-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml


systemctl start nginx

systemctl enable nginx

systemctl start php-fpm

systemctl enable php-fpm


설치는 이렇게 진행하면된다. memached 등을 내가 작업할 당시에 memcached를 사용할 예정이였기 때문에 같이 설치했다.

만약 memcached를 사용할 예정이라면 yum install memcached 해서 사용하면 된다... 이글에서는 자세히 다루진 않겠다.


만약 일부 확장 모듈이 phpinfo.php를 작성해서 봤을때 불러와 있지 않으면 서버를 재부팅하면 된다 (재부팅 생각안하고 삽질하다가 재부팅시키니 잘인식...)



PHP-FPM 설정

PHP-FPM 은 PHP 의 CGI 모듈이다 요즘은 내장된 cgi보다 이거를 많이 쓰는듯하다 속도가 엄청 빨라서 그런듯.

Nginx 에는 php-fpm 를 연동하기 위해선 두가지 파일 수정을 거쳐야 한다.


vi /etc/php-fpm.d/www.conf 를 해서 파일 내용을 수정한다.

그리고 listen 부분을 listen = /var/run/php-fpm/php-fpm.sock 이렇게 변경한다.

(php-fpm을 타 서버와 공유하여 사용할것이 아니면 파일 방식으로 써야 훨씬 빠르고 더 많은 정보를 받을수 있다는듯.. 실제로 검색해서 확인해보니 엄청난 차이가 있었다. 기본값은 127.0.0.1:9000 으로 되어있었다.)

이후 systemctl restart php-fpm 해서 fpm 데몬을 재시작한다 (만약 제대로 되지 않을경우 해당 소켓 파일의 owner가 잘못되어 있을수도 있다)


그리고 나서 CentOS7 의 기본 Nginx 사이트 설정인 /etc/nginx/conf.d/default.conf 를 수정한다 (물론 default.conf 를 복사하여 타파일을 이용해도 된다..)


검색해보니 설정은 https://opentutorials.org/module/384/4332 이쪽을 참고해보는게 나을거 같다... (위에 동영상 말고 밑에 Nginx설정..)

어차피 nginx에서 단순하게 php 기반 웹서버를 열거라면 php-fpm 연동과 root 에다가 웹 디렉토리 경로만 잘적으면 잘 작동하기 때문에.. 


php-fpm 의 기본 주석을 해제하여 다음과 같이 작성한다.

location ~ \.php$ {

        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;

        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

}

그리고 Nginx 서비스를 restart or reload 한다.


이후 적당하게 Nginx 의 홈디렉토리 에다가 phpinfo.php 를 만들어서 테스트 해본다.


TIP : 만약에 php 에서 문제가 발생하면 nginx 로그파일에 내용이 남지가 않는다 로그파일에 내용을 남게하여 디버깅 하는 과정을 거치려면 /etc/php-fpm.d/www.conf 에서 catch_workers_output = yes 를 주석해제 해준다.

그리고 php-fpm 모듈을 재시작한다. (systemctl restart php-fpm)


MariaDB 설치

MariaDB는 Mysql에서 갈라서서 어쩌구 ~~  이걸 다적으면 해당 포스트는 산으로 갈수있다. 궁금하면 검색...

쨋든 MariaDB가 성능편에서 더 좋으며 mysql이랑 쓰는대는 별차이가 없으니 이걸 설치해준다.


yum install MariaDB-server MariaDB-client

systemctl start mariadb

mysql_secure_installation


해서 DB설정을 해준다. 마지막 라인의 명령은 자동으로 mariadb의 설정을 해주는 스크립트이다. mysql의 포크버젼이기때문에 똑같이 사용가능한듯..


그리고 위에서 php용 mysql 확장 모듈을 이미 설치했기때문에 까는 순간 이미 작동한다 phpmyadmin 은 개인의 성향에 따라 알아서 설치하길.