0. Nginx, php 연동의 전체적인 구조
https://server-talk.tistory.com/307
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
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
- 다음과 같이 변경해준다.
fastcgi 가 파일을 찾을 수 있도록 fastcgi_param 부분을 $document_root$fastcgi_script_name 으로 바꿔준 것이다.
여기까지 해주면, localhost:8080 에 접속했을 때, Nginx welcome 페이지가 아니라 내가 설정한 php 페이지를 볼 수 있다.
'기타' 카테고리의 다른 글
Mac OS PHP 기본 세팅 userdir 활성화 (0) | 2021.12.29 |
---|---|
Nginx, PHP 연동 (2) - code igniter 프로젝트 연결 (0) | 2021.12.23 |
코드이그나이터 튜토리얼 - 뉴스 아이템 만들기 (0) | 2021.12.22 |
코드이그나이터 튜토리얼 - 정적 페이지, 뉴스 섹션 (0) | 2021.12.21 |
코드이그나이터 설치부터 php spark serve까지 (0) | 2021.12.21 |
댓글