본문 바로가기
  • We are looking for banner advertisers Please refer to the email below
HTML

개발 첫 단계 홈페이지 만들기 1탄 - 윈도우10 Nginx + php 연동

by 크론크롱 2020. 10. 15.
반응형

웹 서버중 대표적인 소프트웨어로, 아파치서버, 엔진X 서버 들어는보셨을겁니다

실제 현시점에서 가장 점유율이 높은 웹서버는 Apache 서버로 가장 높은 비율을 차지하지만

아파치의 가장큰 단점으로 클라이언트에서 요청하나당 스레드 하나 처리하는 형태로 구성되어있어

클라이언트가 많으면 많을수록 많은만큼의 스레드가 생성이되고, 그만큼 cpu 자원이 많이 사용됩니다

많은 쓰레드가 사용되므로 자원이 많이 사용되고, 이에 부합한 성능을 준비하려면 만만치않은 서버비용이 지출됩니다

 

제가 이번포스팅에서 다룰 내용은 첫 시작하는 나만의 서비스를 만드는데에 있어, 대게의 아이디어가 많은 트래픽을 가지고 운영되는 서비스를 생각하고있기때문에 NginX를 선택하였습니다

 

NginX 의 큰 장점은 비동기 이벤트 기반으로 처리되는 Event-driven 처리기반의 구조를 가지고있어 다중의 클라이언트 접속도 Event-driven을 통해 비 동식 처리방식으로 먼저처리되는것부터 처리할수있도록 로직이 구성되어있습니다

적은 쓰레드가 발생되며 쓰레드당 할당되는 메모리는 적게 사용되는 구성으로 이뤄져있습니다

 

따라서 혼자 또는 소규모 또는 중소기업에서 NginX를 많이 채택하여 사용하고있습니다

 

이번포스팅에서는 윈도우10 운영체제에서 nginx 와 php 를 연동하는방법에대해서 포스팅하고자합니다

순서는 아래와같습니다

 

1 - NginX 설치
2 - PHP 설치
3 - NginX 설정 (NginX to PHP 연동설정)
4 - PHP 설정 (PHP to NginX 연동설정)
5 - 서비스 실행
6 - PHP 연동 테스트

 

 

 

1 - NginX 설치 

 

NginX는 아래의 사이트주소에서 다운받을수 있습니다.

 

 

nginx.org/en/download.html

 

nginx: download

 

nginx.org

 

제가 작성한 포스팅일자와 현재 글을 보고계신분들의 버전차이가 다소 있겠지만 저는 안정성이 있는 메인라인 버전을 다운받도록하겠습니다

 

알집파일 형태로 구성되어있으며 알집을 풀어주시면 아래와같은 프로그램 및 파일이 확인됩니다

 

 

 

2 - PHP 설치 

 

PHP는 아래의 사이트주소에서 다운받을수 있습니다.

 

 

windows.php.net/download

 

PHP For Windows: Binaries and sources Releases

PHP 7.2 (7.2.34) Download source code [27.23MB] Download tests package (phpt) [14.34MB] VC15 x64 Non Thread Safe (2020-Oct-01 13:06:04) Zip [24.91MB] sha256: 3c673eab656e26fd6bc3ad27fe71169ad888b04e21d63d3c6b3151d5ed216563 Debug Pack [23.16MB] sha256: b109

windows.php.net

 

위의 화면에 접속하게되면

 

운영체제의 비트와, Non Thread Safe 버전과, Thread Safe 버전을 선택할 수 있는데

 

NginX 와 PHP는 서로 통신을 FastCGI방식으로 연결 할것임으로

Non Thread Safe버전으로 다운로드를 합니다.

 

 

Fast CGI란?

웹서버와 상호 작용 프로그램과의 통신하기 위한 일종의 바이너리 프로토콜 입니다

CGI는 클라이언트에서의 요청 하나에 하나의 프로세스를 만들어냅니다

이는 프로세스를 생성하고 삭제하는과정에서 많은 부하가 발생하고, 또 부하가 생기는만큼

당연히 느려지게됩니다 이를 개선하기위해 등장한건이 Fast CGI이고,

요청이 생길때마다 프로세스가 만들어지는것이 아닌, 이미 만들어진 프로세스가 계속 동작하여 클라이언트의

요청을 계속해서 처리하는형태로 부하가 줄어든 하나의 방식을 말합니다.

 

제 운영체제의 환경은 윈도우10에 64비트이므로, 위의 버전을 선택했습니다,

선택하게되면

 

 

위와같이 확인됩니다

Zip 파일을 눌러 다운받아줍니다.

 

 

위와같이 파일이 확인된다면 정상설치가된겁니다.

 

 

3 - NginX 설정 (NginX to PHP 연동설정) 

준비물들을 다 다운받았다면 먼저 NginX에서 설정부분을 수정하여 php연동을 진행하도록하겠습니다

 

 

coconfiguration (구성) 의 약자로 conf 폴더 내 

 

nginx.conf 파일을 메모장으로 열어 수정을 진행합니다

 

 

--35줄

    server {

        listen       80;

        server_name  localhost;



        #charset koi8-r;



        #access_log  logs/host.access.log  main;



        location / {

            root   html;

            index  index.html index.htm;

        }



        #error_page  404              /404.html;



        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

45번째줄의 

 

index  index.html index.htm;

 

index  index.html index.htm index.php;

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;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

 

 

--63번줄

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

위의 내용에서 FastCGI 부분의 주석을 제거합니다

 

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

그리고, 위의 SCRIPT_FILENAME 다음에 /scripts 부분을 nginx 의 루트경로로 변경해줍니다.

 

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  "php다운받은경로"$fastcgi_script_name;
            include        fastcgi_params;
        }

위의부분입니다.

 

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  C:\Users\Desktop\web_service\nginx-1.19.3\php-7.4.12-nts-Win32-vc15-x64$fastcgi_script_name;
            include        fastcgi.conf;
        }

 

저의 경우에는 바탕화면에 web_service라는 폴더 안에 위치하기때문에 위와같이 됩니다.

 

 

            include        fastcgi_params;
        }

그리고 include 부분에 fastcgi_params; 를 fastcgi.conf; 로 변경하면끝입니다.

 

            include        fastcgi.conf;
        }

 

 

4 - PHP 설정 (PHP to NginX 연동설정) 

다음은 PHP설정입니다.

PHP 파일경로로 이동합니다

 

위의파일에서 

 

php.ini-development

php.ini-production

둘중의 파일을 php.ini로 변경합니다

 

용도에 맞는 파일을 php.ini로 변경한뒤에,

해당파일을 마찬가지로 메모장에서 열어 수정을 진행합니다

 

그리고, 757번줄의

 

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"

위의 구문을

 

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "ext"

위의 구문으로 변경합니다.

 

자 이제 설치와 설정은 끝났으니 서비스를 실행하도록합니다.

 

 

5 - 서비스 실행 

자 이제 설치와 설정은 끝났으니 서비스를 실행하도록합니다.

NginX를 먼저 실행하도록하겠습니다

 

위의 프로그램을 실행한 뒤,

 

인터넷창에 localhost라고 입력했을때,

 

위와같은 화면이 나온다면, NginX는 정상적으로 실행되고있다고 볼수있습니다.

 

자 다음, php의 경우 

cmd 도스창으로 이동합니다

 

창을띄운뒤,

 

cd php파일이 있는 경로입력

 

cd C:\Users\Desktop\web_service\php-7.4.11-Win32-vc15-x64

 

그리고,

 

php-cgi -d 127.0.0.1:9000

위의 명령어를 입력하여 php 서비스를 실행하여줍니다.

 

 

Microsoft visual c++이 설치되어있는경우라면 상관없지만

설치되어있지않는경우라면

 

위와같은 화면이 확인됩니다

 

간단합니다, 해당 바이너리 파일이없으니 코드실행이 불가하다는내용이라

 

support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

 

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

Cookies are disabled Please enable cookies and refresh the page

support.microsoft.com

 

위의 주소에서 비트에맞게 설치하시면됩니다

 

바로 다운로드받기

 

32비트

64비트

 

 

> 설치

 

> 설치완료

 

그리고 다시 실행해봅니다.

 

위와같이 확인된다면, 정상적으로 작동되고있는거고, 위 화면을끄면 서비스가 종료되니 켜두도록하겠습니다

 

 

6 - PHP 연동 테스트

이제 정상적으로 실행이 되는지 확인해보기위해, php 파일을 만들어 로컬에서 구동해보도록합시다.

 

메모장을열어

 

<?php phpinfo(); ?>

 

위의 내용을 입력후, NginX 루트경로에서의 phpinfo.php 파일을 저장하도록합니다

 

이제 로컬호스트에서 동작하는지 보기위해,

 

위의 localhost에서 

localhost/phpinfo.php 를 입력하여 확인합니다

 

 

 

 

반응형

댓글