엔진엑스-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 |