linux / Nginx · 2021年7月21日 0

Centos配置Nginx+PHP

简单讲解Nginx+php 仅供学习与交流,请勿用于商业用途

很多新手认为,做好的网页放到webserver的根目录即可在浏览器访问,可是nginx默认配置文件并不能调用php,只会以普通的文本输出或者无法访问网页服务器,最终导致装逼失败。本文的主要内容为如何在nginx server中正确配置php调用方法,以及配置的基本原理。

一,Nginx+php运行原理

首先简单的讲一讲原理,目前主流的nginx+php的运行原理:

  1. nginx的worker进程直接管理每一个请求到nginx的网络请求。根据服务器处理器性能可做调整。
  2. 对于php而言,由于在整个网络请求的过程中php是一个cgi程序的角色,所以采用名为php-fpm的进程管理程序来对这些被请求的php程序进行管理。php-fpm程序也如同nginx一样,需要监听端口,并且有master和worker进程。worker进程直接管理每一个php进程。
  3. 关于fastcgi的配置文件,目前fastcgi的配置文件一般放在nginx.conf同级目录下,配置文件形式,一般有两种:fastcgi.conf 和 fastcgi_params。
  4. 当需要处理php请求时,nginx的worker进程会将请求移交给php-fpm的worker进程进行处理,也就是最开头所说的nginx调用了php,其实严格得讲是nginx间接调用php。
  5. 关于fastcgi:fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了fastcgi功能的进程管理器,php-fpm就是其中的一种。可以修改其配置文件/etc/php-fpm.d/www.conf 自定义端口号。查看当前监听端口。
netstat -tunlp | grep php
tcp       0     0 127.0.0.1:9000         0.0.0.0:*               LISTEN     22217/php-fpm: mast

二,配置Nginx+php

系统环境 Centos 7

配置清华大学epel源,关闭selinux (步骤省略)

安装nginx php-fpm

yum install nginx* php-fpm -y

配置nginx虚拟主机

vim /etc/nginx/conf.d/vhost.conf
server {      
      listen 80;    
      server_name     192.168.9.100;    
      root           /var/www/html/;
      location / {
              index   index.php;
                  }
      location ~ \.php?.*$ {
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index   index.php;
              fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include         fastcgi_params;
              }
      }

随便编写一个index.php

vim /var/www/html/index.php
<?php
  echo ("moulongxiong niubi");
  phpinfo();
?>

防火墙放行80和9000端口

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload

启动Nginx php-fpm

systemctl enable nginx php-fpm
systemctl start nginx php-fpm

访问测试页

firefox 192.168.9.100