본문 바로가기
OS/Nginx

[Linux] 윈도우(Window) WSL CentOS 7 Nginx + PHP 연동

by 8ugust 2022. 1. 9.

1. Nginx 설치 (이전 포스팅 참고)

 

[Linux] 윈도우(Window) WSL CentOS 7에 Nginx 설치

1. Nginx 외부 저장소 추가 yum 저장소(Repository)에는 Nginx가 없기 때문에 별도로 외부 저장소를 추가해줘야만 한다. 다음의 명령어를 차례대로 입력하자 sudo su - cd /etc/yum.repos.d/ vi nginx.repo 첫 번..

8ugust-dev.tistory.com

 

 


2. PHP 설치

 yum은 리눅스(Linux)에 설치할 수 있는 패키지들이 보관되어 있는 저장소(Repository)이다. 덕분에 우리는 yum install 명령어를 통해 편하게 패키지를 다운받을 수 있다. 물론 모든 패키지가 전부 yum에 보관되어 있는 것은 아니다. yum에 없는 패키지들이 다른 저장소에 있을 수 있기 때문이다.

 

 당연히 PHP 및 PHP-FPM을 설치기 위해 저장소를 이용할 것이다. 다만 이번에는 yum 저장소가 아닌 remi 라는 저장소를 이용할 것이다. 그리고 이 remi 저장소는 epel 저장소에 의존성을 띄고 있다. 따라서 epel 저장소를 우선적으로 활성화 시켜야만 한다. 다음의 명령어를 차례대로 입력하자.

 

yum -y install epel-release yum-utils

yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm 

 

첫 번째는 EPEL 저장소(Repository)를 설치하는 명령어이고

두 번째는 REMI 저장소(Repository)를 설치하는 명령어이다.

차례대로 두 저장소를 활성화 시켰다면, 다음은 PHP를 설치해야한다. 우리가 사용할 PHP 버전은 7.3 이며, 원하는 버전에 따라 숫자만 바꿔서 아래의 명령어를 수행하면 된다.

 

sudo yum-config-manager --enable remi-php73

sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd

 

첫 번째는 php 7.3 버전의 Remi 저장소를 활성화 시키는 명령어이고

두 번째는 php 및 php에 사용할 모듈을 동시에 설치하는 명령어이다.

php 설치가 완료됐다면   php -v   명령어를 통해 설치 여부를 확인해보자.

 

 

 


3. PHP-FPM 설치

 PHP-FPM이란 PHP FastCGI Process Manager의 약자로, 웹서버의 요청을 받아 해당 파일을 HTML로 변환해서 보여주는 기능을 의미한다. index.php라는 파일이 있을 때, FPM이 없다면 그저 해당 파일을 다운받거나 혹은 소스를 그대로 보여주는 화면이 노출되지만, FPM을 사용하면 해당 파일이 HTML로 변환하여 보여지게 되는 것이다.

 

 Apache의 경우 FPM이 자체적으로 내장되어 있어 해당 모듈을 설치할 필요가 없지만, Nginx의 경우 그렇지 않기 때문에 PHP-FPM 모듈을 별도로 설치해서 연동을 해줘야만 한다. 다음 명령어를 통해 PHP-FPM 모듈을 설치하자.

 

yum -y install php-fpm

 

 설치는 매우 간단하다. 하지만 실제로 PHP-FPM을 사용하기 위해선 Nginx와 연동을 해줘야만 하기 때문에 PHP-FPM의 설정을 Nginx와 연동하기 적합하도록 변경해줄 필요가 있다. 다음 명령어를 통해 PHP-FPM의 설정 파일을 열어보자.

 

vi /etc/php-fpm.d/www.conf

 

 Nginx와 연동하기 위해 PHP-FPM의 설정 중 5가지의 설정을 변경해야한다. CLI를 처음 접해보는 개발자라면 변경해야하는 설정이 어디있는지 찾기 어려울 수 있는데, 이 때 명령어 모드에서   /   버튼을 누르고 찾을 검색어를 입력하면 해당 검색어를 문서 내에서 찾아볼 수 있다. 다음 찾기는   n   버튼 이고, 이전 찾기는   shift + n   버튼이다.

 

user = nginx

group = nginx

listen.owner = nginx

listen.group = nginx

listen = 127.0.0.1:9000

 

 주석(;) 이 걸려있다면 주석을 해제해주고, 해당 값을 위와 같이 변경해주면 된다.

 처음 설정을 하면서 다른 블로그를 많이 참조했는데, 해당 과정에서 굉장히 많은 시간을 빼앗겼다. 그 이유는 다름아닌 listen의 값 때문이었다. PHP-FPM을 설정할 때 TCP/IP 소켓 방식Unix 소켓 방식이 있는데, 보통 Unix 소켓 방식이 조금 더 빠르기 때문에, listen의 값을 Unix 소켓에 알맞게 /run/php-fpm/www.sock 와 같은 값으로 지정해준다고 했다.

 

 하지만 WSL에선 저렇게 설정할 경우 timeout 에러가 발생한다. 태생적으로 WSL에선 Unix 소켓 방식으로 설정이 불가능하다고 한다. 따라서 강제로 TCP/IP 소켓 방식을 사용해야 하기 때문에 listen의 값을 127.0.0.1:9000 또는 localhost:9000 값으로 설정해줘야만 한다.

 

설정이 완료되었다면 PHP-FPM을 실행해보자.

 

systemctl start php-fpm

systemctl status php-fpm

 

 마지막으로 Nginx의 설정 파일을 열어 PHP와 연동할 수 있도록 변경해줘야 한다.

 다음의 명령어를 통해 Nginx.conf 파일을 열어보자.

 

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

 

 우리가 수정해야 할 부분은 빨간색 네모박스 안의 내용이다. index.php를 추가해주고, 아래 네모박스의 주석을 해제한 뒤, root 경로를 변경하고 pass 값을 바꿔준 뒤, param의 값을 $document_root로 변경해주면 된다. 그렇게 되면 PHP-FPM의 연동은 끝이난다. 설정을 적용하려면 Nginx 재구동이 필요하다. 

 

systemctl restart nginx

 

 


4. 설치 확인

 Nginx와 PHP 및 PHP-FPM이 제대로 설치되어 Active되고 있는지 확인하기 위해선 PHP 내장함수인 phpinfo() 를 이용해보면 된다. 한 번 만들어놓으면 나중에 서버에 문제가 생길 때 마다 확인을 위해 가끔 열어보게 될 파일이니 이 참에 만들어 두는 것이 좋다. 다음의 명령어를 실행해보자.

 

vi /usr/share/nginx/html/phpinfo.php

<?php phpinfo(); ?>

 

첫 번째는 nginx의 root 경로에 phpinfo.php 파일을 여는 vi 편집기 명령어이고

두 번재는 phpinfo.php 파일 내부에 적을 내용이다. 전부 기재했으면   wq   를 통해 저장한 뒤, 크롬에 127.0.0.1:9000/phpinfo.php 또는 localhost/phpinfo.php 를 입력해보면 된다.

 

위 화면이 나오면 성공.

 

 

 

'OS > Nginx' 카테고리의 다른 글

[Linux] 윈도우(Window) WSL CentOS 7에 Nginx 설치  (0) 2022.01.08

댓글