본문 바로가기
코딩해보니/PHP

PHP와 nginx 연동 - 윈도우(Windows) 환경

by 위시랜 2024. 7. 12.

PHP와 nginx 연동 - 윈도우(Windows) 환경
PHP와 nginx 연동 - 윈도우(Windows) 환경

PHP를 CLI 형태로 사용한다면 관계없겠지만, 대부분이 웹 애플리케이션, 다시 말해 웹 개발을 하기 위해 PHP를 사용하기 때문에 그러기 위해서는 PHP를 웹 서버와 연동해야 한다.

Apache(아파치)와 같은 웹 서버도 있지만 여기서는 '엔진엑스'라고 읽는 오픈 소스 웹 서버 nginx를 설치하고 PHP와 연동해 본다.​

 

1. Nginx 다운로드 및 설치

PHP를 설치할 때에도 공식 사이트에서 다운로드했다.

마찬가지로 nginx 공식 사이트 (https://nginx.org/en) 접속하거나 바로 아래의 다운로드 페이지에 접속한다. 

nginx 다운로드 목록 (24년 7월 기준)
nginx 다운로드 목록 (24년 7월 기준)

 

항상 그렇듯이 Stable version (안정 버전)을 다운로드한다.

다운로드한 Zip 압축 파일을 풀고, 원하는 위치로 이동 또는 복사한다.

nginx 압축 풀기 및 이동 또는 복사
nginx 압축 풀기 및 이동 또는 복사

 

나는 위 사진과 같이 C 드라이브에 nginx-1.26.1 디렉터리 이름으로 이동했다.

PHP와 마찬가지로 윈도우 환경에서 nginx 웹 서버를 설치하는 것은 끝났다. ㅎㅎ

 

2. Nginx 실행 및 확인

설치가 잘 되었는지 확인해 본다.

명령 프롬프트를 실행하고 설치된 경로로 이동해 nginx 명령어를 입력 후 엔터를 누르자.

nginx 웹 서버 실행
nginx 웹 서버 실행

최초 실행했다면 아마 아래와 같은 'Windows 보안' 창을 볼 수도 있을 것이다.

nginx 실행 시 Windows 보안 경고 창
nginx 실행 시 Windows 보안 경고 창

[허용] 버튼을 클릭하고 넘어간다. 그리고 앞서 실행한 명령 프롬프트 창도 닫자.

 

이게 뭐 실행된 건가... 싶다. 

작업 관리자를 열어서 확인해 보자.

nginx 웹 서버 실행 확인
nginx 웹 서버 실행 확인

프로세스가 실행 중인 것을 알 수 있다.

 

다음으로 브라우저를 열어 http://localhost라고 입력하고 접속해 보자.

nginx 웹 서버 실행 후 http://localhost 접속 확인
nginx 웹 서버 실행 후 http://localhost 접속 확인

위와 같은 화면이 나온다면 정상적으로 nginx 웹 서버가 실행 중인 것이다.

 

위 화면은 어디에 위치한 파일의 내용인가?

nginx 웹 서버의 기본 설정인 nginx 설치 디렉터리 아래에 html 디렉터리의 index.html 파일의 내용이다.

나는 C:\nginx-1.26.1에 설치했으니 C:\nginx-1.26.1\html\index.html 파일이 된다.

C:\nginx-1.26.1\html
C:\nginx-1.26.1\html

 

2. PHP와 Nginx 연동

nginx 웹 서버가 정상적으로 작동하는 것을 확인했으니 이제 nginx 웹 서버를 통해 PHP 프로그램이 잘 실행되도록 연동해 보자.​

 

nginx 설정 

nginx를 설치한 경로에 보면 conf 디렉터리가 있고 그 안에 nginx.conf 파일을 열어 수정한다.

nginx.conf 파일 내용에서 아래와 같이 server { } 내에 명시된 내용 중에 location / {} 항목에 index.php를 추가하자.

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm index.php;
        }

 

다음으로 주석 처리되어 있는 location ~ \.php$ {} 항목을 모두 주석을 지워준다.

그리고 fastcgi_param 부분에 /scripts$fastcgi_script_name 부분을 $document_root$fastcgi_script_name 라고 수정이 필요하다.

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

위 내용이 없다면 추가해 준다.

 

Nginx 서버 재시작

nginx 서버 설정 파일을 수정했으므로 서버를 재시작해 줘야 한다.

명령 프롬프트를 열어 nginx를 설치한 곳으로 이동 후 아래 명령을 실행하면 nginx 서버가 재시작된다.

nginx -s reload

실재 재시작한 화면은 아래와 같다.

nginx 서버 재시작
nginx 서버 재시작

 

PHP 실행

명령 프롬프트를 열어 PHP를 설치한 곳으로 이동 후 아래 명령을 실행한다.

php-cgi.exe -b "127.0.0.1:9000" -c php.ini

실재 실행한 화면은 아래와 같다.

php cgi 실행
php cgi 실행

다시 작업 관리자를 보면 다음과 같이 프로세스가 실행 중인 것을 확인할 수 있다.

작업 관리자 확인
작업 관리자 확인

 

PHP 연동 확인

nginx의 root 디렉터리인 C:\nginx-1.26.1\html 디렉터리에 index.php 파일을 만들어 보자.

C:\nginx-1.26.1\html 디렉터리에 index.php 파일
C:\nginx-1.26.1\html 디렉터리에 index.php 파일

위 코드를 작성 후 브라우저를 열어 

http://localhost/index.php 로 접속해 보자.

다음과 같은 화면을 확인할 수 있으면 정상적으로 연동된 것이다.

Nginx와 PHP 연동 확인
Nginx와 PHP 연동 확인

이러한 비슷한 방식으로 PHP는 웹 서버들과 연동된다.

아파치(Apache) 웹 서버와의 연동도 비슷한 과정을 거치는데 Nginx와 다르게 php-cgi를 따로 실행해 주지 않아도 된다는 점이 다를 수 있다.

 

윈도우 환경이라고 하지만 리눅스 환경도 맥락은 크게 다르지 않다.

 

- 끝 -



 

상기 상품 배너는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글