퍼블릭 클라우드
Amazon EC2 t4g.small 인스턴스에서 Nginx와 PHP-FPM을 연동하여 테스트 페이지를 설정하는 방법
변군이글루
2023. 11. 4. 17:57
반응형
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
반응형