Maison >développement back-end >Problème PHP >Comment déployer un projet php sous nginx

Comment déployer un projet php sous nginx

藏色散人
藏色散人original
2021-09-24 09:38:2118766parcourir

Comment déployer des projets PHP sous nginx : 1. Installez nginx et php-fpm ; 2. Recherchez le fichier de configuration du serveur nginx ; 3. Spécifiez l'emplacement de déploiement du projet PHP 4. Mettez les différentes configurations du serveur dans Accédez simplement aux sites activés.

Comment déployer un projet php sous nginx

L'environnement d'exploitation de cet article : système linux5.9.8, nginx version 1.9, ordinateur Dell G3.

Comment déployer un projet php sous nginx ?

Déployer des projets PHP sur le serveur nginx

nginx lui-même ne peut pas traiter les pages PHP. Il s'agit simplement d'un serveur Web. Lorsqu'une requête est reçue, s'il s'agit d'une requête PHP, elle sera transmise à l'interpréteur PHP via un. proxy inverse pour le traitement. Et renvoyer les résultats au client. Par conséquent, nginx et php-fpm ou un autre interpréteur php doivent être installés sur le serveur.

Après avoir installé nginx et php-fpm, recherchez le fichier de configuration du serveur 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

Dans ce fichier, précisez l'emplacement de déploiement du projet php, c'est-à-dire modifiez le répertoire racine du fichier spécifié par root sous le champ serveur.

De nombreuses versions de distribution n'ont pas de champ serveur dans nginx.conf C'est pour faciliter la gestion. Dans la version précompilée de certaines distributions, il y aura deux phrases incluant conf.d/*.conf à la fin du fichier. section http dans nginx.conf ; include sites-enabled/* ou un seul include

sites-enabled/*.conf De cette façon, vous pouvez mettre les différentes configurations de serveur configurées dans sites-enabled, comme

[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]#

Nous le ferons. placez le fichier du projet php Mettez-le dans le chemin /var/www/pointriskapi/hosts Par exemple,

[root@test24266hosts]# ll
 
 -rw-r--r-- 1 apache apache 339 102 2017risk_point.php
[root@test24266hosts]# pwd
/var/www/pointriskapi/hosts

n'a généralement pas besoin de redémarrer Nginx et php-fpm. Vous pouvez maintenant accéder à http://ip:8013/risk_point.php sur le client.

Alors, comment nginx transmet-il la requête à l'interpréteur PHP via un proxy inverse ? Nous avons remarqué qu'il y a un paragraphe

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

dans le champ serveur. Ce paragraphe précise qui gère le fichier .php. Nous vérifions le fichier factcgi.conf dans le même répertoire que nginx.conf, tel que

[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 spécifie l'adresse IP et le port sur lesquels le processus fastcgi écoute, c'est-à-dire que nginx transmettra la demande à ce socket. Nous devons donc spécifier le même socket dans le fichier de configuration php-fpm. Démarrez la surveillance Php-fpm et vérifiez

[root@test24266~]# netstat -anp | grep 9000
tcp        0     0 127.0.0.1:9000             0.0.0.0:*                  LISTEN      3719/php-fpm

Pour résumer, en mode nginx et php-fpm, le processus complet de requête et de réponse est le suivant :

1 Le client demande un fichier .php sur le serveur

2. Il s'avère que les ressources dynamiques doivent être acheminées vers le répertoire racine spécifié

3. Chargez le module fast-cgi de nginx

4. Fact-cgi écoute 127.0.0.1:9000 (socket par défaut)

5. -fpm reçoit la demande, activez le processus de travail pour traiter la demande

6 Une fois que php-fpm a traité la demande, renvoyez-la à nginx

7 nginx renvoie le résultat au navigateur via http

Apprentissage recommandé : ". Tutoriel vidéo PHP"

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:
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