ホームページ  >  記事  >  バックエンド開発  >  phpプロジェクトをnginxにデプロイする方法

phpプロジェクトをnginxにデプロイする方法

藏色散人
藏色散人オリジナル
2021-09-24 09:38:2118716ブラウズ

PHP プロジェクトを nginx にデプロイする方法: 1. nginx と php-fpm をインストールします; 2. nginx サーバーの設定ファイルを見つけます; 3. PHP プロジェクトのデプロイ場所を指定します; 4. 設定されたファイルを配置しますサーバー設定をサイト有効にするだけです。

phpプロジェクトをnginxにデプロイする方法

この記事の動作環境: linux5.9.8 システム、nginx バージョン 1.9、Dell G3 コンピューター。

php プロジェクトを nginx にデプロイするにはどうすればよいですか?

php プロジェクトを nginx サーバーにデプロイする

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 プロジェクトのデプロイ場所を指定します。つまり、指定されたファイルのルートを変更します。 root によって「サーバー」フィールドの下に「目次」が表示されます。

多くのディストリビューション バージョンでは、nginx.conf にサーバー フィールドがありません。これは管理の便宜のためです。一部のディストリビューションのプリコンパイルされたバージョンでは、nginx.conf の最後に 2 つの include conf.d 文があります。 nginx.conf の http セクション /*.conf; include sites-enabled/*または 1 つだけ include

sites-enabled/*.conf; このようにして、さまざまな設定済みのサーバー設定をサイトに配置できます。 -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 インタープリターにリクエストを転送するのでしょうか?サーバーフィールドにセクション

    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 と同じディレクトリにある fatcgi.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. Nginx は、動的リソースを指定されたルート ディレクトリにルーティングする必要があることを検出します

#3. nginx の fast-cgi モジュールをロードします

#4. 実際-cgi モニタリング 127.0.0.1:9000 (デフォルト ソケット)

5. php-fpm はリクエストを受信し、ワーカー プロセスがリクエストを処理できるようにします

6. php-fpm がリクエストを処理した後、nginx

7 に戻ります。nginx は http

を通じてブラウザに結果を返します。推奨される学習: 「

PHP ビデオ チュートリアル

以上がphpプロジェクトをnginxにデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。