본문으로 바로가기

nginx php fast cgi 오류 멈춤

category Server/NginX 2017. 10. 18. 15:49
반응형

윈도우 8.1 에 nginx php mariadb


NGXMP http://nginx.kr 현재 문 닫힘. 언제 열어줄까요. 국내 유일의 패키지형 개발자 토토루님 사이트인데 얼마전부터 막혔네요. 

nginx 버전은 1.13까지였나.. 

운영하는데 실로 많은 도움을 받은 곳입니다. XE 운영하는데 딱좋았습니다.


외국의 Nginx php mariadb(혹은 mysql) 패키지는 많이 있는데 설정이 복잡해보이고, 잡다하게 많습니다. 그리고 뭔가 국내 XE하고는 좀 매칭하기가 어렵고,

워드프레스 등 외국 것들에 잘 맞춤되어보입니다.  그래서 GUI가 잘만들어져있어서 개별로 작동 On off를 하기에 좋은 점도 있습니다.

wingx, WTServer, WPN-XM,Wnmp 등 종류도 다양하며 php 5.x, 7.x 등 포함을 하고있다.



1. Nginx 웹서버 멈춤 해결 - Fast-Cgi Restart


토토루님 ngxmp를 운영하면서 항상 문제된게 이 서버가 자주 뻗는다는 거였다, 어찌보면 치명적이다.


기존에는 http://3jini.tistory.com/41 내용을 보면 알듯이

fcgi.exe인가,, 이거를 하나의 서비스로 올려준게 있었는데



V20 이 되면서 보니 PHP 자체 서비스로 되어있고, Fast-cgi 서비스는 따로 없다.


그러나,,


NET STOP PHP

NET START PHP


이것만으로 Fast-cgi 가 재시작되지 않는 문제가 발생하는 경우가 종종 있고 이로 인해 결국 여기서 계속된 hang이 생긴다. 뻗은듯이 접속이 안된다는 말이다.


V20이상의 NGXAMP에는 이 Fast-cgi를 재시작해주는 프로그램이 있다.


배치파일에 있는 것과 같이 php-fastcgi-stop.exe 와 php-fastcgi-start.exe 이 두개의 파일이다.


나는 D:\NGXMP 가 설치되어있으므로 경로는 다음과 같이 해서 배치파일로 만들고, 작업스케줄에 5분 혹은 15분 정도 간격으로 주면될듯하다.


지금은 이것을 해준후로 뻗은 적이 없다. 2주.

nginx나 php 서비스는 문제가 없으므로 딱 이것만 리프레시 해주는 방법을 취하자.

그러면 윈도우에서 그럭저럭 운영하는데 문제는 없어보인다.


REM Fast-cgi restart

start /wait D:\NGXMP\PHP-FastCGI-Stop.exe

start /wait D:\NGXMP\PHP-FastCGI-Start.exe

taskkill.exe /f /im conhost.exe


conhost.exe 프로세스 죽이는 명령은 그냥 작업관리자에서 보면 쓸데없이 이게 fast-cgi.exe개수만큼 생겨먹어있다. 백그라운드콘솔인데, 프로세스 죽여도 문제는 없어보인다. 



V20(2017년 현재의 버전은 V21이다)의 NGXMP를 설치하면 윈도우 서비스에 4가지가 올라오는데 다음과 같다.


Memcashed는 메모리에 캐시를 올려서 접속속도를 올려주는 역할을 한다고 안다.


nginx먹통이 되는것은 이 php-fcgi 부분때문.




2. 서비스 전체를 중지 시키고 시작하기

NGXMP 를 설치하면 친절하게 아이콘으로 만들어두셨다.

Start.exe 와 Stop.exe 이다.


하지만 개별로 하고자 한다면

각 서비스의 시작과 중지는 NET명령으로 가능하므로 


REM Nginx 웹서비스중지

NET STOP nginx

NET STOP NGXMP_MYSQL

NET STOP NGXMP-Memcached

NET STOP PHP

start /wait D:\NGXMP\PHP-FastCGI-Stop.exe


이렇게 할 수있고, STOP 대신 START를 주면 시작을 할 수있다.


여기서 NET STOP nginx 가 잘 안먹힌다. 서비스 중지가 잘 안된다는 뜻이다.

따라서 프로세스를 죽이는 방법을 사용하였다.


그래서 전체적으로 nginx 웹서비스 중지 및 시작 전체 명령은 다음과 같이 주면된다.


@echo off

taskkill.exe /f /im nginx.exe

NET STOP NGXMP_MYSQL

NET STOP NGXMP-Memcached

NET STOP PHP

start /wait D:\NGXMP\PHP-FastCGI-Stop.exe


NET START nginx

NET START NGXMP_MYSQL

NET START NGXMP-Memcached

NET START PHP

start /wait D:\NGXMP\PHP-FastCGI-Start.exe


배치파일로 올려둔다.

D:\NGXMP\ 경로만 본인이 설치한 경로로 수정해서 쓰면 된다.


Fast-Cgi 재시작


Fast_CGI_RESTART.CMD



Ngxmp 모든 서비스 재시작

Nginx_Restart.CMD


반응형