Maison >développement back-end >Problème PHP >Comment déployer un projet php sous nginx
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.
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!