엔진엑스-php 연동(즉 아파치 대신 엔진엑스를 사용하기)




1.mysql 설치


ㄴ엔진엑스-php 연동이랑은 상관없이 mysql 설치




2.엔진엑스 설치


ㄴ아파치 설치하듯이 엔진엑스 설치, 컴파일 옵션은 지라같은데 검색해보면 몇개 나올듯 혹은 엔진엑스 설치돼있는 서버 수소문해서 옵션 고대로 해도 되고... 사실 옵션이 그닥~중요하진 않음 고객사에서 요청한 옵션이 없는이상


꼴리는대로 해주면 됨




3.php 설치(엔진엑스 연동하기 위해서 php-fpm을 추가해줘야함)


ㄴ우리가 apm 설치할때 사용하는 옵션을 사용 , 단 옵션중에 추가/삭제해야할 옵션이 있음


빼야할꺼는 "--with-apxs2=/opt/apache/bin/apxs"   당연히 아파치 연동이 아니기 때문에


추가할꺼는 --enable-fpm --with-fpm-user=daemon --wtih-fpm-group=daemon   (with-ftpm user/group 옵션은 엔진엑스가  어떤 유저/그룹으로 올라오는지 보고 해야함. 엔진엑스 실행시키고 ps -ef 로 확인)






4.php-fpm 실행


4-1. /opt/php/etc/ 들어가면 php-fpm 관련 설정파일 수정적용후


ㄴ mv php-fpm.conf.default php-fpm.conf




 php-ftpm 실행


 /opt/php/sbin]# ./php-fpm 








 /opt/php/sbin]# ./php-fpm 


[01-Aug-2017 11:59:41] WARNING: Nothing matches the include pattern '/opt/php/etc/php-fpm.d/*.conf' from /opt/php/etc/php-fpm.conf at line 125.


[01-Aug-2017 11:59:41] ERROR: No pool defined. at least one pool section must be specified in config file


[01-Aug-2017 11:59:41] ERROR: failed to post process the configuration


[01-Aug-2017 11:59:41] ERROR: FPM initialization failed




에러 발생시






읽어보면 pool이 없다.  pool section을 설정해라 뭐 이런말인데  (warning은 무시해도 되는 메세지인데 여기서는 무시하면 안됨. 아래 내용 한번 더 읽어보면 알겠지만 결국은 설정파일을 못찾아서 나오는 문제였으니까)




 /opt/php/etc]# pwd


/opt/php/etc


/opt/php/etc]# ll php-fpm.conf


-rw-r--r-- 1 root root 4430 2017-08-01 11:38 php-fpm.conf




위 파일이 php-fpm.conf 실행할때 참조되는 설정파일이고 파일 내용 제일 밑에보면 아래 내용 있다.




include=/opt/php/etc/php-fpm.d/*.conf 




들어가보면 




 /opt/php/etc/php-fpm.d]# ll


total 20


-rw-r--r-- 1 root root 18500 2017-08-01 11:38 www.conf.default




위에 내용처럼 설정파일이 없어서 에러가 난다. 




mv www.conf.default www.conf




php-fpm 실행


root     24891     1  0 12:46 ?        00:00:00 php-fpm: master process (/opt/php/etc/php-fpm.conf)


daemon   24892 24891  0 12:46 ?        00:00:00 php-fpm: pool www


daemon   24893 24891  0 12:46 ?        00:00:00 php-fpm: pool www




올라온거 확인




5.php/엔진엑스 연동


nginx.conf 수정


[root@q353-0921 ~]# vi /opt/nginx/conf/nginx.conf




        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;


        }




위 부분 주석 해제(원래 주석돼있음, 너는 location 을 주석 해제 안했었어)






그리고 nginx 재시작


killall -9 nginx (또는 /opt/nginx/sbin/nginx -s reload //요거는 아파치graceful 같은ㄱ0


ㄴ엔진엑스는 nginx stop start restart 가 없음 그래서 구글같은데서 nginx 실행 스크립트라고 치면 많이 나오는데 그거 넣어주면됨)






php 정상 연동확인을 위한 info.php 파일 생성후 브라우저에서 아이피/info.php 접속


엔진엑스의 기본 홈 디렉토리는 /opt/nginx/html


ㄴ엔진엑스 nginx.conf  ㅇ안에 보면 아래처럼 root html 이 있는데 이게 root 디렉토리는 html 로 설정


        location / {


            root   html;


            index  index.html index.htm;


        }


ㄴ엔진엑스 통합관리 들어왔으니까 아파치처럼 가상호스트 추가하고 그런것정도는 알아둬야할듯






브라우저 접속시 아래 에러 발생


File not found. 




에러로그 확인해보면


2017/08/01 13:14:35 [error] 26172#0: *34 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 123.140.249.62, server: localhost, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "175.126.232.152"




Primary script unknown" while reading response header from upstream 요게 키포인트 인듯하다.


프라이머리 스크립트를 알수없다 ? 뭐 그런뜻인데 잘 모르겠으니까 구글링 검색




https://www.lesstif.com/pages/viewpage.action?pageId=24444977 여기보면 해결법이 나온다.




#           fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;


            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;




주석돼있는 부분이 fastcgi_param 즉 fastcgi_파라미터 를 어디를 참조할꺼냐 ? 뭐 그런거같은데 기존에는 /script로  돼있다. 이걸 위와같이 바꾸면 ($document_root 라는 함수는 아마도 홈디렉토리인 html 디렉토리를 가르킬듯)




아이피/info.php 접속해보면 phpinfo페이지 잘 뜸

'job > linux' 카테고리의 다른 글

히스토리, 명령어 저장등 script  (0) 2018.08.31
centos 6 xtables 설치시 에러  (0) 2018.08.31
vi 명령어 옵션  (0) 2018.08.31
libphp5.so: undefined symbol: unixd_config  (0) 2018.08.31
iptables 차단 정책 로그 쌓기  (0) 2018.08.31

+ Recent posts