Table des matières
Qu'est-ce que FastCGI
Principe de fonctionnement de Nginx+FastCGI
spawn-fcgi et PHP-FPM
Installation et optimisation PHP et PHP-FPM
Téléchargez le package d'installation
Configurer l'environnement d'installation
Compilez et installez php et php-fpm
Configuration et optimisation de php-fpm
Gérer le processus FastCGI
查看FastCGI进程
配置Nginx来支持PHP
配置实例
启动nginx
测试Nginx对PHP的解析功能
优化Nginx中FastCGI
Maison développement back-end Problème PHP Comment installer PHP avec FastCGI

Comment installer PHP avec FastCGI

Jan 21, 2022 am 11:41 AM
fastcgi php

Comment installer PHP avec FastCGI : 1. Téléchargez les packages php et php-fpm ; 2. Configurez l'environnement d'installation ; 3. Compilez et installez php et php-fpm ; php-fpm start" pour démarrer le processus FastCGI.

Comment installer PHP avec FastCGI

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment installer PHP avec FastCGI ? Installation, configuration et optimisation de Nginx et PHP (FastCGI)

Qu'est-ce que FastCGI

FastCGI est une interface de communication évolutive et à haut débit entre le serveur HTTP et le langage de script dynamique. FastCGI est également pris en charge par de nombreux langages de script, dont PHP.

FastCGI est développé à partir de CGI. L'interface FastCGI adopte une structure C/S, qui peut séparer le serveur HTTP et le serveur d'analyse de script, et démarrer un ou plusieurs démons d'analyse de script sur le serveur d'analyse de script.

Chaque fois que le serveur HTTP rencontre une zone urbaine dynamique, il est directement transmis au processus FastCGI pour exécution, puis renvoie le résultat au navigateur, ce qui améliore les performances globales du système.


Principe de fonctionnement de Nginx+FastCGI

Nginx ne prend pas en charge l'appel direct ou l'analyse de programmes externes. Tous les programmes externes doivent être appelés via l'interface FastCGI. Pour appeler un programme CGI, un wrapper FastCGI est également nécessaire, qui peut être compris comme un programme utilisé pour démarrer un autre programme.

Ce wrapper est lié à un socket fixe, tel qu'un port ou un socket de fichier. Lorsque Nginx envoie une requête CGI au socket, via l'interface FastCGI, le wrapper reçoit la requête et génère un nouveau thread. Ce thread appelle l'interpréteur ou le programme externe pour traiter le script et lit les données de retour. Le wrapper transmet ensuite le retour. les données via l'interface FastCGI vers Nginx, et enfin Nginx les renvoie au client.


spawn-fcgi et PHP-FPM

L'interface FastCGI démarre un ou plusieurs processus démons sur le serveur d'analyse de scripts pour analyser dynamiquement les scripts, qui devient également le gestionnaire de processus FastCGI et PHP-FPM sont deux gestionnaires de processus. .

spawn-fcgi : Il fait partie du serveur HTTP lighttpd. Il s'agit désormais d'un projet indépendant et est généralement utilisé en conjonction avec lighttpd pour prendre en charge PHP. Cependant, spawn-fcgi provoquera des fuites de mémoire et redémarrera même automatiquement FastCGI lorsque la concurrence est élevée.

PHP-FPM : Un gestionnaire de processus FastCGI tiers, développé sous forme de patch pour PHP. Pendant le processus d'installation, il doit également être compilé avec le code source PHP, ce qui signifie que PHP-FPM est compilé dans le noyau PHP, les performances sont donc meilleures. Dans le même temps, sa capacité à gérer une concurrence élevée est également bien meilleure.

L'avantage de FastCGI étant de séparer les langages dynamiques des serveurs HTTP, Nginx et PHP/PHP-FPM sont souvent déployés sur des serveurs différents pour partager la pression sur le front-end de Nginx, permettant à Nginx de se concentrer sur le traitement. requêtes statiques, PHP/PHP -FPM analyse les requêtes dynamiques PHP.


Installation et optimisation PHP et PHP-FPM

Téléchargez le package d'installation

Téléchargez le package php : www.php.net, utilisez ici php-5.2.13.tar.gz

Téléchargez le package php-fpm : php-fpm .org, nous utilisons ici php-5.2.13-fpm-0.5.13.diff.gz

Remarque : Il est préférable que les versions de php et de php-fpm soient cohérentes, sinon des problèmes de compatibilité peuvent survenir.

Configurer l'environnement d'installation

Les packages de dépendances requis incluent :

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 Attendez

Selon la version du système, les packages sur lesquels vous pouvez compter sont également différents.

Compilez et installez php et php-fpm

Décompressez le package de code source de php et entrez php-fpm comme patch dans le code source de php.

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
Copier après la connexion

Compilez et installez, et en même temps activez la prise en charge de FastCGI et activez la prise en charge de fpm en mode FastCGI.

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
Copier après la connexion

Configuration et optimisation de php-fpm

Le fichier de configuration principal de php est php.ini

Le fichier de configuration principal de php-fpm est php-fpm.conf, situé sous /usr/local/php/etc/, oui A fichier au format xml, voici quelques balises couramment utilisées :

<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解析请求;
Copier après la connexion

Gérer le processus FastCGI

La méthode de démarrage du processus FastCGI est la suivante :

/usr/local/php/sbin/php-fpm start
Copier après la connexion

La signification des paramètres est la suivante :

start : Démarrer le processus fastcgi de php ;
stop : arrêter de force le processus fastcgi de php ;
quit : terminer en douceur le processus fastcgi de php ;
restart : redémarrer le processus fastcgi de php ; charge le fichier de configuration sans interruption ;
logrotate : ré-Activer le fichier journal ;

查看FastCGI进程

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

netstat -antlp | grep 9000ps -ef | grep php-cgi
Copier après la connexion

配置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;
        }
      }
Copier après la connexion

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
Copier après la connexion

测试Nginx对PHP的解析功能

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

<?php phpinfo(); ?>
Copier après la connexion

然后通过浏览器访问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;
Copier après la connexion

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

fastcgi_connect_timeout 300;
Copier après la connexion

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

fastcgi_send_timeout 300;
Copier après la connexion

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

fastcgi_read_timeout 300;
Copier après la connexion

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

fastcgi_buffer_size 64k;
Copier après la connexion

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

fastcgi_buffers 4 64k;
Copier après la connexion

默认值为fastcgi_buffers的两倍;

fastcgi_busy_buffers_size 128k;
Copier après la connexion

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

fastcgi_temp_file_write_size 128k;
Copier après la connexion

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

fastcgi_cache TEST;
Copier après la connexion

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

fastcgi_cache_valid 200 302 1h;
Copier après la connexion

将301应答缓存一天;

fastcgi_cache_valid 301 1d;
Copier après la connexion

其余应答缓存1分钟;

fastcgi_cache_valid any 1m;
Copier après la connexion

   

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles