이번엔 nginx와 php를 연동해보고자 합니다.
구성정보
OS : Centos 7 (docker)
nginx : yum패키지로 설치
php : 소스컴파일 진행(ver 8.1.10)
'./configure' \
'--prefix=/usr/local/php' \
'--enable-mysqlnd' \
'--with-mysqli=mysqlnd' \
'--with-pdo-mysql=mysqlnd' \
'--with-curl' \
'--enable-gd' \
'--with-webp' \
'--with-jpeg' \
'--enable-fpm' \
'--with-xpm' \
'--with-zlib' \
'--with-gdbm' \
'--with-openssl' \
'--with-bz2' \
'--enable-exif' \
'--enable-ftp' \
'--enable-sockets' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-soap' \
'--enable-mbstring' \
'--enable-bcmath' \
'--with-zip' \
'LIBZIP_CFLAGS=-I/usr/local/libzip192/include' 'LIBZIP_LIBS=-L/usr/local/libzip192/lib64 -lzip'
php 8.1 소스 설치 방법은 본 블로그에 있는 php 8.1 설치방법 참고.
설치가 완료되면, php-fpm실행 파일이 생성된다.[root@6045ffab2521 sbin]# ll /usr/local/php/sbin/php-fpm -rwxr-xr-x 1 root root 49205160 Sep 11 17:22 /usr/local/php/sbin/php-fpm [root@6045ffab2521 sbin]#
php-fpm.conf파일은 php 설치 경로 내부 etc안에 존재합니다.
해당 파일을 php-fpm.conf로 복사하여 사용하면 됩니다.
php-fpm.d/하위에 있는 www.conf.defult파일도 변경하여 사용.[root@6045ffab2521 php]# ls bin etc include lib php sbin var [root@6045ffab2521 php]# cd etc/ [root@6045ffab2521 etc]# ls php-fpm.conf.default php-fpm.d [root@6045ffab2521 etc]# cp -v php-fpm.conf.default php-fpm.conf 'php-fpm.conf.default' -> 'php-fpm.conf' [root@6045ffab2521 php-fpm.d]# ls www.conf.default [root@6045ffab2521 php-fpm.d]# mv www.conf.default www.conf
php-fpm을 구동.
[root@6045ffab2521 php-fpm.d]# /usr/local/php/sbin/php-fpm [root@6045ffab2521 php-fpm.d]# netstat -nlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 172604/php-fpm: mas tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 367/nginx: master p tcp6 0 0 :::80 :::* LISTEN 367/nginx: master p Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 86264222 1/init /run/systemd/private unix 2 [ ACC ] SEQPACKET LISTENING 86264239 1/init /run/udev/control unix 2 [ ACC ] STREAM LISTENING 86264240 1/init /run/systemd/journal/stdout unix 2 [ ACC ] STREAM LISTENING 86261512 1/init /run/dbus/system_bus_socket [root@6045ffab2521 php-fpm.d]#
구동하게되면, 9000포트로 php-fpm프로세스가 활성화 됩니다.
nginx 설정에 php파일 호출시, php-fpm으로 넘기게끔 설정해야한다.
기본 페이지
php-fpm 연동 설정
기본 nginx.conf 값에 다음 라인만 추가합니다.
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
##추가라인##BEGIN
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
##END##
}
웹 호출 테스트