Web & Server/Nginx
[Nginx] php 와 nginx 연동
vincenzo.dev.82
2021. 1. 21. 22:00
반응형
PHP와 nginx의 연동
FastCGI를 사용해 PHP를 nginx와 연동해 보려고 합니다. 기본적으로 PHP는 FastCGI 프로코콜을 지원합니다.PHP는 스크립트를 처리하며 nginx와 socket으로 연동할 수 있습니다. 바로 PHP-FPM으로도 알려진 FastCGI 프로세스 관리자를 사용하면 됩니다.
PHP-FPM
PHP 프로세스를 관리하는 스크립트로서 nginx의 요청을 받은 후 스크립트를 수행합니다.
- PHP의 자동 데몬 프로세스화(백그라운드 프로세스로 전환)
- chroot로 격리된 환경에서 스크립트를 수행
- 로그개선, IP주소제한, Pool분리등
PHP 설치 및 빌드
공식문서 : www.php.net/manual/en/install.unix.nginx.php
다운로드 및 압축을 푼다
- yum install libevent-devel libxml2-devel
- wget www.php.net/distributions/php-7.4.14.tar.gz
- tar xzf php-7.4.14.tar.gz
빌드과정을 수행한다
- ./configure --enable-fpm --with-mysqli
- 에러 발생 시 .. No package 'sqlite3' found
- sudo yum -y install sqlite-devel
- 에러 발생 시 .. No package 'sqlite3' found
- make
- make install
기본설정 파일을 복사한다
- cp php.ini-development /usr/local/php/php.ini
- cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
- cp sapi/fpm/php-fpm /usr/local/bin
보안을 위해 php.ini 파일을 수정한다
- vim /usr/local/php/php.ini
- cgi.fix_pathinfo=0
php-fpm.conf 파일을 수정한다
vi /usr/local/etc/php-fpm.d/www.conf
- user = www-data
- group = www-data
php-fpm 실행
/usr/local/sbin/php-fpm -c /usr/local/etc/php.ini --pid /usr/local/var/run/php-fpm.pid --fpm-config=/usr/local/etc/php-fpm.d/www.conf -D
- -c /usr/local/etc/php.ini #PHP 구성파일의 경로지정
- --pid /usr/local/var/run/php-fpm.pid #초기화 스크립트에서 프로세스를 제어하는 데 유용한 PID 파일의 경로지정
- --fpm-config=/usr/local/etc/php-fpm.d/www.conf #PHP-FPM이 특정 구성파일을 사용하도록 강제지정
- -D #PHP-FPM을 데몬화
Nginx 설정 수정
user www-data;
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
}
Nginx 실행
/usr/local/nginx/sbin/nginx 또는 /usr/local/nginx/sbin/nginx -s reload
반응형