웹 서버중 대표적인 소프트웨어로, 아파치서버, 엔진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는 아래의 사이트주소에서 다운받을수 있습니다.
제가 작성한 포스팅일자와 현재 글을 보고계신분들의 버전차이가 다소 있겠지만 저는 안정성이 있는 메인라인 버전을 다운받도록하겠습니다
알집파일 형태로 구성되어있으며 알집을 풀어주시면 아래와같은 프로그램 및 파일이 확인됩니다
2 - PHP 설치
PHP는 아래의 사이트주소에서 다운받을수 있습니다.
위의 화면에 접속하게되면
운영체제의 비트와, 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
위의 주소에서 비트에맞게 설치하시면됩니다
바로 다운로드받기
> 설치
> 설치완료
그리고 다시 실행해봅니다.
위와같이 확인된다면, 정상적으로 작동되고있는거고, 위 화면을끄면 서비스가 종료되니 켜두도록하겠습니다
6 - PHP 연동 테스트
이제 정상적으로 실행이 되는지 확인해보기위해, php 파일을 만들어 로컬에서 구동해보도록합시다.
메모장을열어
<?php phpinfo(); ?>
위의 내용을 입력후, NginX 루트경로에서의 phpinfo.php 파일을 저장하도록합니다
이제 로컬호스트에서 동작하는지 보기위해,
위의 localhost에서
localhost/phpinfo.php 를 입력하여 확인합니다
'HTML' 카테고리의 다른 글
[자바스크립트] 경고창을 띄운후 링크페이지 이동 시키기 (0) | 2020.11.13 |
---|---|
홈페이지/쇼핑몰 홈페이지 파비콘 웹페이지 대표 아이콘 만들기 (1) | 2020.11.12 |
도메인 구매 부터 등록까지 [홈페이지/쇼핑몰 구축] (0) | 2020.03.25 |
[HTML] 쇼핑몰 상품 이미지 대량 다운받기 (feat.JavaScript)_서버이관 (브라우저 캐시이용) (2) | 2019.11.29 |
로컬 DNS 서비스 강제변경 host 파일 수정 (0) | 2019.11.28 |
댓글