PHP プロジェクトを nginx にデプロイする方法: 1. nginx と php-fpm をインストールします; 2. nginx サーバーの設定ファイルを見つけます; 3. PHP プロジェクトのデプロイ場所を指定します; 4. 設定されたファイルを配置しますサーバー設定をサイト有効にするだけです。
この記事の動作環境: 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 サイトの他の関連記事を参照してください。