nginx에서 PHP 프로젝트를 배포하는 방법: 1. nginx 및 php-fpm을 설치합니다. 2. nginx 서버의 구성 파일을 찾습니다. 3. PHP 프로젝트의 배포 위치를 지정합니다. 4. 구성된 다양한 서버 conf를 넣습니다. 활성화된 사이트로 이동하세요.
이 기사의 운영 환경: linux5.9.8 시스템, nginx 버전 1.9, Dell G3 컴퓨터.
nginx에서 PHP 프로젝트를 배포하는 방법은 무엇입니까?
nginx 서버에 PHP 프로젝트 배포
nginx 자체는 PHP 페이지를 처리할 수 없습니다. 요청이 수신되면 PHP 인터프리터로 전달됩니다. 처리를 위해 역방향 프록시를 실행하고 결과를 클라이언트에 반환합니다. 따라서 nginx와 php-fpm 또는 기타 PHP 인터프리터를 서버에 설치해야 합니다.
nginx 및 php-fpm 설치 후 nginx 서버의 구성 파일을 찾습니다.
[root@test24266conf]# ps -ef | grep nginx.conf root 31441 1 0 2018 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf
이 파일에서 php 프로젝트의 배포 위치를 지정합니다. 즉, 서버 필드 아래에 root로 지정된 파일 루트 디렉터리를 수정합니다.
많은 버전에는 nginx.conf에 서버 필드가 없습니다. 이는 관리의 편의를 위한 것입니다. 일부 배포판의 사전 컴파일된 버전에서는 nginx.conf의 http 섹션에 conf.d/*.conf가 두 개 있습니다. ; sites-enabled/* 또는 하나만 포함
sites-enabled/*.conf 이렇게 하면
[root@test24266conf]# ll sites-enabled/ -rw-r--r--1 root root 603 103 2017 captcha443.conf -rw-r--r--1 root root 287 9 1 2017 commrisk.conf -rw-r--r--1 root root 194 129 2016 imagerotate.conf -rw-r--r--1 root root 402 9 2 2016 msgqapi.conf -rw-r--r--1 root root 295 102 2017 pointriskapi.conf -rw-r--r--1 root root 290 6 2 2017 risktrade.conf -rw-r--r--1 root root 309 814 2017 rotateapi.conf -rw-r--r--1 root root 313 100 2016 watchdog.conf [root@test24266conf]# 这样每个.conf文件就可以对应一个虚拟主机,查看某个配置文件,如 [root@test24266conf]# cat sites-enabled/pointriskapi.conf server{ listen 8013; server_name point.risk.api; index index.php; #默认访问的文件 root /var/www/pointriskapi/hosts; access_log on;
#当请求网站下php文件的时候,反向代理到php-fpm location ~ .*\.php?$ { include fastcgi.conf; } location = /favicon.ico { log_not_found off; access_log off; } } [root@test24266conf]#
와 같이 구성된 다양한 서버 구성을 넣을 수 있습니다. 파일을 /var/www/pointriskapi/hosts 경로에 넣으세요. 예를 들어
[root@test24266hosts]# ll -rw-r--r-- 1 apache apache 339 102 2017risk_point.php [root@test24266hosts]# pwd /var/www/pointriskapi/hosts
는 일반적으로 Nginx와 php-fpm을 다시 시작할 필요가 없습니다. 이제 클라이언트에서 http://ip:8013/risk_point.php에 접속할 수 있습니다.
그렇다면 nginx는 어떻게 역방향 프록시를 통해 요청을 PHP 인터프리터로 전달할까요? 서버 필드에
location ~ .*\.php?$ { include fastcgi.conf; #加载nginx的fastcgi模块 }
단락이 있는 것을 확인했습니다. 이 단락은 .php 파일을 처리하는 사람을 지정합니다.
[root@test24266 conf]# cat fastcgi.conf fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/tmp/phpcgi.socket; fastcgi_indexindex.php; access_log /var/log/httpd/access_log main; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHPonly, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; [root@test24266conf]#
와 같이 nginx.conf와 동일한 디렉토리에 있는factcgi.conf 파일을 확인합니다. Fastcgi_pass는 fastcgi 프로세스가 수신 대기하는 IP 주소와 포트를 지정합니다. 즉, nginx는 요청을 이 소켓으로 전달합니다. 따라서 php-fpm 구성 파일에 동일한 소켓을 지정해야 합니다. Php-fpm 모니터링을 시작하고
[root@test24266~]# netstat -anp | grep 9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3719/php-fpm
확인합니다. 요약하면 nginx 및 php-fpm 모드에서 전체 요청 및 응답 프로세스는 다음과 같습니다.
1 클라이언트가 서버에서 .php 파일을 요청합니다
2. 동적 리소스를 지정된 루트 디렉터리
3로 라우팅해야 하는 것으로 나타났습니다. Fact-cgi는 127.0.0.1:9000(기본 소켓)
5을 수신합니다. -fpm이 요청을 수신하면 작업자 프로세스를 활성화하여 요청을 처리합니다
6. php-fpm이 요청을 처리한 후 nginx
7로 반환합니다. nginx는 http
를 통해 브라우저에 결과를 반환합니다. "
PHP 비디오 튜토리얼위 내용은 nginx에서 PHP 프로젝트를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!