본문 바로가기

퍼블릭 클라우드

Amazon EC2 t4g.small 인스턴스에서 Nginx와 PHP-FPM을 연동하여 테스트 페이지를 설정하는 방법

728x90

Amazon EC2 t4g.small 인스턴스에서 Nginx와 PHP-FPM을 연동하여 테스트 페이지를 설정하는 방법

1. Nginx 및 PHP-FPM 설치

2. PHP-FPM 구성 파일 수정

sudo mkdir /var/log/php-fpm

php-fpm.conf 파일 설정

sudo vim /etc/php/8.1/fpm/php-fpm.conf
[global]
pid = /var/run/php/php-fpm.pid
error_log = /var/log/php-fpm/error.log
include = /etc/php/8.1/fpm/pool.d/*.conf

www.conf 파일 설정

sudo vim /etc/php/8.1/fpm/pool.d/www.conf
[www]
user = www-data
group = www-data

listen = /var/run/php/php-fpm.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

slowlog = /var/log/php-fpm/www-slow.log

pm.status_path = /status

ping.path = /ping

access.log = /var/log/php-fpm/access.log

access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/sessions
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

PHP-FPM 구문 검사

php-fpm8.1 -t
$ php-fpm8.1 -t
[04-Nov-2023 17:16:54] NOTICE: configuration file /etc/php/8.1/fpm/php-fpm.conf test is successful

PHP-FPM 서비스 재기동

sudo systemctl restart php8.1-fpm
728x90

3. Nginx 구성 파일 수정

nginx.conf 파일 설정

sudo vim /etc/nginx/nginx.conf

(또는) sed 명령어로 설정 변경합니다.

sed -i "s/user  nginx;/user  www-data;/g" /etc/nginx/nginx.conf

default.conf 파일 설정

sudo vim /etc/nginx/conf.d/default.conf

(또는) cat 명령어로 설정 변경합니다.

cat <<'EOF' > /etc/nginx/conf.d/default.conf
### nginx default.conf
server {
    listen 80;
    server_name _;
    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    access_log  /var/log/nginx/default.access.log  main;

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
    	try_files $uri $uri/ /index.php?$query_string;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        #root           html;
        #fastcgi_pass   127.0.0.1:9000;
	    fastcgi_pass   unix:/var/run/php/php-fpm.sock;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
	    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}

    location /nginx_status {
    	# Nginx status 페이지 설정
    	stub_status;
    	access_log off;
    	allow 127.0.0.1;
    	allow 192.168.56.0/24;
    	deny all;
    }

    location ~ ^/(ping|status)$ {
    	# PHP-FPM ping 및 status 페이지 설정
    	fastcgi_pass unix:/var/run/php/php-fpm.sock;
    	include fastcgi_params;
    	access_log off;
    	allow 127.0.0.1;
    	allow 192.168.56.0/24;
    	deny all;
    }
}
EOF

fastcgi_params 파일 설정

sudo vim /etc/nginx/fastcgi_params

(또는) cat 명령어로 설정 변경합니다.

cat <<'EOF' >> /etc/nginx/fastcgi_params

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
fastcgi_param  PATH_INFO          $fastcgi_path_info;
EOF

Nginx 구문 검사

nginx -t
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginx 서비스 재기동

sudo systemctl restart nginx

Nginx 상태 페이지

curl http://127.0.0.1/nginx_status

PHP-FPM PING 테스트

curl http://127.0.0.1/ping

PHP-FPM 상태 페이지

curl http://127.0.0.1/status

PHP INFO 페이지 생성

sudo echo '<?php phpinfo();' > /usr/share/nginx/html/test.php

PHP INFO 페이지 테스트

curl http://127.0.0.1/test.php

 

웹 브라우저에서 테스트

http://127.0.0.1/test.php

이 페이지는 PHP-FPM과 Nginx가 올바르게 연동되었는지 확인하는 데 사용됩니다.

 

Nginx와 PHP-FPM을 연동하고 기본 테스트 페이지를 설정할 수 있습니다.

 

728x90