NGINX + php-fpm 연동

Yeeees, I can!·2022년 9월 13일
0
post-thumbnail

이번엔 nginx와 php를 연동해보고자 합니다.

구성정보
OS : Centos 7 (docker)
nginx : yum패키지로 설치
php : 소스컴파일 진행(ver 8.1.10)

nginx는 패키지 설치이므로, 설치 과정은 본문에선 작성하지 않습니다.

php는 fpm활성화해야 하므로, 컴파일 옵션에 fpm활성화를 추가합니다.

'./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 연동

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##
}

웹 호출 테스트

profile
그동안 경험 및 공부하면서 얻은 지식을 써놓은 블로그입니다~

0개의 댓글