Heim  >  Artikel  >  Backend-Entwicklung  >  So installieren Sie PHP mit FastCGI

So installieren Sie PHP mit FastCGI

藏色散人
藏色散人Original
2022-01-21 11:41:212707Durchsuche

So installieren Sie PHP mit FastCGI: 1. Laden Sie die PHP- und PHP-FPM-Pakete herunter. 3. Kompilieren und installieren Sie PHP und PHP-FPM. 4. Übergeben Sie „/usr/local/php/sbin“. /php-fpm start“, um den FastCGI-Prozess zu starten.

So installieren Sie PHP mit FastCGI

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie installiere ich PHP mit FastCGI? Installation, Konfiguration und Optimierung von Nginx und PHP (FastCGI)

Was ist FastCGI?

FastCGI ist eine skalierbare Hochgeschwindigkeits-Kommunikationsschnittstelle zwischen HTTP-Server und dynamischer Skriptsprache. FastCGI wird auch von vielen Skriptsprachen unterstützt, einschließlich PHP.

FastCGI wurde aus CGI entwickelt. Die FastCGI-Schnittstelle verwendet eine C/S-Struktur, die den HTTP-Server und den Skript-Parsing-Server trennen und einen oder mehrere Skript-Parsing-Daemons auf dem Skript-Parsing-Server starten kann.

Immer wenn der HTTP-Server auf einen dynamischen Stadtbereich trifft, wird er direkt zur Ausführung an den FastCGI-Prozess übergeben und das Ergebnis dann an den Browser zurückgegeben, was die Gesamtleistung des Systems verbessert.


Nginx+FastCGI-Funktionsprinzip

Nginx unterstützt keinen direkten Aufruf oder Parsing externer Programme. Alle externen Programme müssen über die FastCGI-Schnittstelle aufgerufen werden. Um ein CGI-Programm aufzurufen, wird außerdem ein FastCGI-Wrapper benötigt, der als Programm verstanden werden kann, mit dem ein anderes Programm gestartet wird.

Dieser Wrapper ist an einen festen Socket gebunden, beispielsweise einen Port- oder Datei-Socket. Wenn Nginx über die FastCGI-Schnittstelle eine CGI-Anfrage an den Socket sendet, empfängt der Wrapper die Anfrage und erzeugt einen neuen Thread. Dieser Thread ruft den Interpreter oder ein externes Programm auf, um das Skript zu verarbeiten, und liest die Rückgabedaten Daten über die FastCGI-Schnittstelle an Nginx, und schließlich gibt Nginx sie an den Client zurück.


spawn-fcgi und PHP-FPM

Die FastCGI-Schnittstelle startet einen oder mehrere Daemon-Prozesse auf dem Skript-Parsing-Server, um Skripte dynamisch zu analysieren, der auch zum FastCGI-Prozessmanager wird. Spawn-fcgi und PHP-FPM sind zwei Prozessmanager .

spawn-fcgi: Es ist Teil des HTTP-Servers lighttpd. Es ist jetzt ein unabhängiges Projekt und wird im Allgemeinen in Verbindung mit lighttpd zur Unterstützung von PHP verwendet. Allerdings verursacht spawn-fcgi Speicherverluste und startet FastCGI sogar automatisch neu, wenn die Parallelität hoch ist.

PHP-FPM: Ein FastCGI-Prozessmanager eines Drittanbieters, der als Patch für PHP entwickelt wurde. Während des Installationsprozesses muss es auch zusammen mit dem PHP-Quellcode kompiliert werden, was bedeutet, dass PHP-FPM in den PHP-Kernel kompiliert wird, sodass die Leistung besser ist. Gleichzeitig ist auch die Fähigkeit, mit hoher Parallelität umzugehen, viel besser.

Da der Vorteil von FastCGI darin besteht, dynamische Sprachen von HTTP-Servern zu trennen, werden Nginx und PHP/PHP-FPM oft auf verschiedenen Servern bereitgestellt, um den Druck auf das Nginx-Frontend zu verteilen und es Nginx zu ermöglichen, sich auf die Verarbeitung zu konzentrieren statische Anfragen, PHP/PHP -FPM analysiert dynamische PHP-Anfragen.


PHP- und PHP-FPM-Installation und -Optimierung

Laden Sie das Installationspaket herunter

Laden Sie das PHP-Paket herunter: www.php.net, verwenden Sie hier php-5.2.13.tar.gz

Laden Sie das PHP-FPM-Paket herunter: php-fpm.org, hier verwenden wir php-5.2.13-fpm-0.5.13.diff.gz

Hinweis: Es ist am besten, dass die Versionen von php und php-fpm konsistent sind, da sonst Kompatibilitätsprobleme auftreten können.

Konfigurieren Sie die Installationsumgebung

Die erforderlichen Abhängigkeitspakete umfassen:

gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2- devel Wait

Je nach Systemversion sind auch die Pakete, auf die Sie sich verlassen können, unterschiedlich.

PHP und PHP-FPM kompilieren und installieren

Entpacken Sie das PHP-Quellcode-Paket und fügen Sie PHP-FPM als Patch in den PHP-Quellcode ein.

tar zxf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1

Kompilieren und installieren Sie und aktivieren Sie gleichzeitig die Unterstützung für FastCGI und die Unterstützung für fpm im FastCGI-Modus.

cd php-5.2.13./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpmmake && make install
cp php-ini-dist /usr/local/php/lib/php.ini

Konfiguration und Optimierung von php-fpm

phps Hauptkonfigurationsdatei ist php.ini;

php-fpms Hauptkonfigurationsdatei ist php-fpm.conf, die sich unter /usr/local/php/etc/ befindet Eine Datei im XML-Format, hier sind einige häufig verwendete Tags:

<value name="listen_address">127.0.0.1:9000</value>:表示配置FastCGI进程监听的IP地址和端口,默认为本地的9000;
<value name="display_errors">0</value>:表示是否显示php错误信息,默认为0表示不显示,设置为1表示显示错误信息;
<value name="user">nobody</value>:表示设置运行FastCGI进程的用户,需要和nginx配置文件中的用户一致;
<value name="group">nobody</value>:表示设置运行FastCGI进程的用户组,需要和nginx配置文件中的用户组一致;
<value name="max_children">5</value>:设置FastCGI的进程数,官方建议小于2G内存,可以只开启64个进程;4G以上可以开启200个进程;
<value name="request_terminate_timeout">0s</value>:设置FastCGI执行脚本的时间,默认0s,意味着无限执行下去;
<value name="rlimit_files">1024</value>:设置php-fpm打开文件描述符的限制,默认1024,这个值最好要和内核打开的文件数一致;
<value name="max_requests">500</value>:设置每一个进程最多处理多少个请求后会被关闭,默认500;
<value name="allowed_clients">127.0.0.1</value>:设置允许访问FastCGI进程解析器的IP地址,如果不设置IP地址,则无法接受nginx传来的php解析请求;

FastCGI-Prozess verwalten

Die Methode zum Starten des FastCGI-Prozesses ist wie folgt:

/usr/local/php/sbin/php-fpm start

Die Bedeutung der Parameter ist wie folgt:

start: Start der Fastcgi-Prozess von PHP;
Stopp: Stoppen Sie den Fastcgi-Prozess von PHP;
Neustart: Starten Sie den Fastcgi-Prozess von PHP neu; Prozess lädt die Konfigurationsdatei ohne Unterbrechung;
logrotate: Protokolldatei erneut aktivieren;

查看FastCGI进程

FastCGI进程启动后,可以通过命令“ps”或者“netstat”查看到相关进程信息,默认监听9000端口;

netstat -antlp | grep 9000ps -ef | grep php-cgi

配置Nginx来支持PHP

Nginx本身不会对PHP进行解析,要想让Nginx解析PHP请求,需要将PHP页面的请求交给FastCGI进程监听的IP地址和端口。Nginx通过反向代理的功能实现对PHP的解析。下面对Nginx解析PHP进行配置实例。

配置实例

      server {
        server_name www.ixdba.net ixdba.net;

        location / {
            index index.html index.php;
            root /web/www/www.ixdba.net;
        }

        location ~ \.php$ {
            root                html;
            fastcgi_pass        127.0.0.1:9000;
            fastcgi_index       index.php;
            fastcgi_param       SCRIPT_FILENAME  html$fastcgi_script_name;
            include             fastcgi_params;
        }
      }

location指令,将以“.php”结尾的文件都交给“127.0.0.1:9000”来处理,这里的IP和端口就是FastCGI进程监听的IP和端口。

fastcgi_param指令,指定放置php动态程序的主目录,也就是$fastcgi_script_name前的路径,这里是/usr/local/nginx/html。

fastcgi_params文件是FastCGI进程的一个参数配置文件,安装Nginx后默认生成,这里将它包含进来。

启动nginx

/usr/local/nginx/sbin/nginx

测试Nginx对PHP的解析功能

在/usr/local/nginx/html,也就是上面的php动态程序主目录下,创建一个phpinfo.php文件,内容如下:

<?php phpinfo(); ?>

然后通过浏览器访问http://www.ixdba.net/index.html,将会显示Nginx欢迎页;
浏览器访问http://www.ixdba.net/phpinfo.php,会出现php安装及功能列表信息;


优化Nginx中FastCGI

添加一些优化指令可以让php环境高效稳定的运行,下面给出一些实例,添加到nginx配置文件的http层级:

为fastcgi缓存指定文件路径,目录结构等级、关键字区域存储时间和非活动删除时间;

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=Test:10m inactive=5m;

连接到后端fastcgi的超时时间;

fastcgi_connect_timeout 300;

向fastcgi传送请求的超时时间,是已经完成两次握手后向fastcgi传送请求的超时时间;

fastcgi_send_timeout 300;

接收fastcgi应答的超时时间,是已经完成两次握手后接收fastcgi应答的超时时间;

fastcgi_read_timeout 300;

读取fastcgi应答第一部分需要缓冲区的大小;

fastcgi_buffer_size 64k;

本地需要多少和多大的缓冲区来缓冲fastcgi的应答请求;

fastcgi_buffers 4 64k;

默认值为fastcgi_buffers的两倍;

fastcgi_busy_buffers_size 128k;

写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍;

fastcgi_temp_file_write_size 128k;

开启fastcgi缓存并为其指定一个名称,可以有效降低cpu负载,防止502错误。

fastcgi_cache TEST;

fastcgi_cache_valid指定应答代码的缓存时间。
将200, 302的应答时间缓存1小时;

fastcgi_cache_valid 200 302 1h;

将301应答缓存一天;

fastcgi_cache_valid 301 1d;

其余应答缓存1分钟;

fastcgi_cache_valid any 1m;

   

Das obige ist der detaillierte Inhalt vonSo installieren Sie PHP mit FastCGI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn