首頁 > 後端開發 > PHP問題 > nginx下怎麼部署php項目

nginx下怎麼部署php項目

藏色散人
發布: 2023-03-12 21:30:01
原創
18779 人瀏覽過

nginx下部署php專案的方法:1、安裝完成nginx和php-fpm;2、找到nginx伺服器的設定檔;3、指定php專案的部署位置;4、把設定好的各種server conf放在sites-enabled裡即可。

nginx下怎麼部署php項目

本文操作環境:linux5.9.8系統、nginx1.9版、Dell G3電腦。

nginx下怎麼部署php專案?

nginx伺服器上部署php專案

        nginx本身無法處理PHP頁面,它只是web伺服器,當接收到請求後,如果是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專案的部署位置,也就是修改server欄位下root 指定的檔案根目錄。

    很多髮型版本,在nginx.conf並沒有server字段,這是為了管理方便,某些發行版的預編譯版本裡,nginx.conf 中http 段最後會有兩句include conf.d /*.conf; include sites-enabled/*或只有一條include

sites-enabled/*.conf; 這樣你就可以把已經配置好的各種server conf 放在sites-enabled 裡,如

[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]#
登入後複製

我們將php專案檔案放入這個/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解譯器呢?我們注意到server字段中有一段

    location ~ .*\.php?$ {
       include fastcgi.conf;          #加载nginx的fastcgi模块
    }
登入後複製

       該段指明了.php檔案由誰處理。我們查看nginx.conf同級目錄下的factcgi.conf文件,如

[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]#
登入後複製

       Fastcgi_pass指明了fastcgi進程監聽的IP位址和端口,即nginx會將請求轉發給這個socket。因此我們需要在php-fpm的設定檔中指明同樣的socket。啟動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、Nginx發現是動態資源需要路由到指定根目錄下

#3、載入nginx的fast-cgi模組

4、Fact-cgi監聽127.0.0.1:9000(預設socket)

5、php-fpm接收到請求,啟用worker進程處理請求

6、php-fpm處理完請求,回傳給nginx

#7、nginx將結果透過http回傳給瀏覽器

推薦學習:《PHP影片教學

以上是nginx下怎麼部署php項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板