유닉스 소켓 포스팅은
[Rocky] NGINX PHP 유닉스 소켓통신
보통 웹을 찍먹해보고 싶거나, 이 일을 시작한지 얼마 안된 주니어 분들은 아주 밑의 명령어들을 남발을 했을 것이라고 생각함# dnf install nginx mysql# dnf install php php-fpmnginx와 php 간에는 소켓 방식
hochelin.co.kr
개념을 잘 모른다면 잡고가는게 맞는것같다
이어서 하면
이제 프로세스에서 php-fpm을 다 죽이자
일단 현재 php가 살아있는지 확인
# ps aux | grep php-fpm
php-fpm을 죽일건데,
PID로 kill을 해도되고, killall로 프로세스 이름으로 해도된다.
# killall php-fpm
다시 조회
# ps aux | grep php-fpm
php-fpm 프로세스가 사라졌으니
이제 TCP/IP 기반 소켓으로 통신을 할건데,
nginx와 php-fpm의 각각 서비스를 시작을 한다.
연결 과정 중 nginx에서 php-fpm이 설정한 listen을 토대로 통신을 함
실제로 해보자
nginx 설정파일 디렉터리의 conf / nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream php_load {
server 127.0.0.1:9700 weight=1 max_fails=5 fail_timeout=10s;
}
include vhosts/*.conf;
}
여기다가 직접 server 설정을 해도 되는데,
확장성을 위해 각 서버는 따로 관리함
conf 디렉터리에 나는 vhosts라는 디렉터리를 만들었다
그 안에 vhost.conf conf 파일을 만들었다.
server {
listen 80;
server_name 222.234.220.133;
root /usr/local/nginx/html;
index index.html index.htm;
access_log logs/9700-access_log;
error_log logs/9700-error_log;
location ~* \.php$ {
fastcgi_pass php_load;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300s;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
include /usr/local/nginx/conf/fastcgi_params;
}
}
nginx.conf 파일에서 vhost.conf 파일을 include 하면서 upstream 에 정의된 php_load 블록에 대한 설정을 vhost.conf 파일의 fastcgi_pass 블록을 참조함
이제 php-fpm 설정파일을 보자
역시 관리의 효율성 및 확장성을 위해 9700.conf파일을 따로 만들었다
php 설치 경로가 어디냐고 나한테는 묻지말아라..ㅠㅠ
[global]
pid = /usr/local/php7/var/run/php-fpm9700.pid
[php9700]
user = nobody
group = nobody
listen = 127.0.0.1:9700
pm = dynamic
pm.max_children = 100
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 15
pm.max_requests = 8192
php_admin_value[error_log] = /usr/local/php7/var/log/fpm-php9700.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 2G
php_admin_value[date.timezone] = Asia/Seoul
이제 php 디렉터리의 sbin 디렉터리로 들가자
그럼 php-fpm 파일이 있는데
그냥 한 번 실행해보자
이런 이유가 뜨는 이유가 뭘까?
php 소스 설치한 디렉터리에 가서 ./configure --help를 보자
이 중
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
Set the path where to scan for configuration files
부분을 볼 수 있는데
--with-config-file-path=PATH
php.ini [PREFIX/lib]를 찾을 경로를 설정합니다.
구성 파일을 검색할 경로를 설정합니다.
즉 configure 할 때 config-file-path를 지정해줬으면 이런 에러가 안날테지만,
지정을 안해줬으니 기본 default 값인
/usr/local/php7/etc/php-fpm.conf' 파일을 찾는데,
있을리가 없지
그래서 시작할 때 옵션을 줘야한다
# ./php-fpm --help
여러 옵션들 중 눈에 띄는 옵션 --fpm-config
이 옵션을 사용해 아까 9700.conf 파일을 적용시켜주자
# ./php-fpm --fpm-config /usr/local/php7/etc/php-fpm.d/9700.conf
다시 프로세스 조회를 해본다
# ps aux | grep php-fpm
이제 phpinfo 테스트 파일을 만들어서 접속이 되는지 보자
<?php
phpinfo();
?>
정상적으로 접속이 된다.
혹시나 안되는 분들은 댓글 남겨주세용
'Linux > Rocky 8.10' 카테고리의 다른 글
[Rocky] NGINX PHP 유닉스 소켓통신 (0) | 2024.12.04 |
---|---|
ssh 키 등록 후에도 접속안됨 (0) | 2024.11.21 |
[Rocky] ssh 패스워드 없이 접속 - 공개키 접속 (1) | 2024.11.04 |
[Rocky] iptables 방화벽 설정 (0) | 2024.09.05 |
[Rocky] firewall 아웃바운드 설정 (0) | 2024.09.02 |