본문 바로가기
기타

Nginx, PHP 연동 (1) - PHP-FPM

2021. 12. 23.

0. Nginx, php 연동의 전체적인 구조

https://server-talk.tistory.com/307

 

WEB Server - NGINX PHP 5.2 연동하기 - CentOS 7

WEB Server - NGINX PHP 연동하기 - CentOS 7 이번 포스팅에서는 NGINX와 PHP 연동 관련으로 알아보겠습니다. 이전 글 : 서버와 클라이언트 그리고 HTTP - https://server-talk.tistory.com/291 WEB Server - NG..

server-talk.tistory.com

 

1. Nginx 설치

$brew install nginx

로 nginx를 설치하고,

$brew services start nginx

로 실행시킨다.

나 같은 경우 localhost:8080 으로 세팅이 되어있어서, localhost:8080 으로 접속하면 Nginx welcome 페이지가 떴다.

이 welcome 페이지가 띄워지는 공간을 내 프로젝트의 php 페이지로 바꾸는 작업을 할 것이다.

welcome 페이지가 어떤 원리로 localhost:8080 에서 보이게 되는 지를 이해하면, 어느 부분을 php 페이지로 바꿔줘야 할 지 느낌이 좀 잡힌다

2. PHP-FPM 설치

이걸 따로 설치해줘야 하는 줄 알고

brew tap homebrew/dupes 

이런 명령어들을 쳤었는데 다 안 돼서 애를 먹었다.

보니까 php 설치하면서 같이 설치되는 것 같다.

3. Nginx welcome 페이지가 어디에서 오는지 이해하기

- 설치 방법만 따라해도 설치에는 큰 문제가 없지만, 이 부분을 이해하면 좀더 nginx의 원리를 이해하면서 사용할 수 있다고 생각한다. nginx.conf 파일이 어떻게 구성되어 있고, 이 중에 어떤 부분을 바꿔주면(어떤 설정을 바꿔주면) 내가 원하는 페이지가 뜰 수 있을지 고민하는 단계였다.

nginx.conf 파일은 대체로 비슷한 곳에 위치하긴 하지만 로컬 환경마다 디렉토리 위치가 다르기 때문에 아래 명령어로 위치를 찾았다.

$ sudo find / -name nginx.conf

나 같은 경우,

/opt/homebrew/etc/nginx/nginx.conf

이 위치에 있었다.

(그냥 로컬 환경마다 다른가 싶었는데 찾아보니 특정 brew 이후부터는 /opt/homebrew/etc/nginx/ 로 고정되었다고 한다. nginx 설치하면 터미널에 이것저것 좌르륵 뜨는데 거기에 나온다고 한다. 항상 새로운 프로그램을 설치하면 잘 설치됐나 안 됐나만 확인했는데, 이제는 설치 과정에 무슨 말을 하나 관심을 갖고 한번 들여다볼 필요는 있겠다 싶었다.)

conf 파일을 열어보면 location 에 root 가 html 이라고 되어있다. root란, 우리가 localhost라고 입력했을 때 index.html을 찾는 위치인데, 여기서는 html 이라고만 되어 있다. 이 html은 상대경로 같은 것이라고 한다. 이 html 의 위치를 찾아보았다. 

nginx 파일이 실제로 존재하는 위치는 다음과 같다.

/opt/homebrew/Cellar/nginx/1.21.4

여기 있는 html을 클릭해보면, www 디렉토리로 넘어가고, 여기에 index.html이 있다.

/opt/homebrew/var/www/index.html

결국, root 의 html 이라는 것의 의미는,

localhost 로 접속하면 /opt/homebrew/var/www 디렉토리의 index.html 이 열린다는 것이고, 실제로 이 index.html 파일을 열어보면 그 안의 내용이 nginx welcome 페이지이다.

https://velog.io/@davelee/mac%EC%97%90-nginx-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

mac에 nginx 설치하기

우선 brew가 설치되어 있지 않다면 mac에 homebrew 설치하기를 참고해 먼저 homebrew를 설치하자.터미널 실행 후 brew services 를 실행해 nginx가 설치되어 있지 않음을 확인한다.설치는 brew install nginx 로 끝

velog.io

 

4. Nginx welcome 페이지 대신 index.php 를 띄우기

4-1. 아까 찾았던 index.html 이 있는 위치에 내가 띄우고자 하는 index.php 파일을 생성해준다. 내용은 php 소개 페이지가 나오도록 다음과 같이 넣어줬다.

<?php
phpinfo();
?>

 

4-2. index 파일에 index.php 를 가장 앞쪽에 추가해주기.

root 폴더가 같기 때문에 index 에 index.php 를 추가하기만 하면 index.html 이 먼저 열리게 돼서 변화가 없다.

그러므로 index.php를 우선시해서 열도록 index.php를 맨 앞에 추가해주었다.

여기까지만 해서 localhost:8080 에 접속해보면, FIle not found 라고 뜬다. 

nginx 가 index.php 파일을 인식해서 fastcgi 에게 해석해달라고 전달까지는 성공했는데,

fastcgi 가 그 파일을 찾지 못한 것이다. 그러므로 fastcgi 가 해당 파일을 잘 찾을 수 있도록 다시 한번 설정 파일을 수정해준다.

 

4-3. fastcgi_param 변경

- 변경 전 코드를 먼저 살펴보자.

- .php로 끝나는 파일에 대한 nginx의 처리를 담은 블럭이다.

- fastcgi_pass 127.0.0.1:9000;

이 부분의 의미는, Nginx가 php로 끝나는 파일을 받으면 localhost(127.0.0.1)의 9000번 포트로 내용을 해석해달라고 보낸다는 의미이다. 좀더 자세하게는, Nginx로 들어오는 FastCGI 요청은 IP 127.0.0.1 의 포트 9000을 수신하고 있는 PHP 프로세스 관리자에게 전달된다는 의미이다. 포트 9000은 단지 기본값이며 구성을 변경하여 수정할 수 있다.

- fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

스크립트 파일명은 /scripts 폴더 내의 동일한 이름에게 그대로 요청하고,

- include fastcgi_params;

나머지 설정은 fastcgi_params를 참고한다.

https://velog.io/@davelee/mac%EC%9D%98-nginx%EC%97%90-php-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0

 

mac의 nginx에 php 연동하기

이제 nginx를 통해 static한 페이지를 서비스 할 수 있게 되었다. (방법은 지난 글 두개 mac에 nginx 설치하기와 mac에 homebrew 설치하기 를 참고하자.) php 간단 개념 php는 프로그래밍 언어의 일종으로 동

velog.io

- 다음과 같이 변경해준다.

fastcgi 가 파일을 찾을 수 있도록 fastcgi_param 부분을 $document_root$fastcgi_script_name 으로 바꿔준 것이다.

 

여기까지 해주면, localhost:8080 에 접속했을 때, Nginx welcome 페이지가 아니라 내가 설정한 php 페이지를 볼 수 있다.

댓글