服务器测评网
我们一直在努力

Linux下Nginx安装PHP时PHP-FPM与Nginx如何关联配置?

在Linux系统中搭建支持PHP的Nginx环境,是许多开发者构建Web应用的基础流程,本文将详细介绍从环境准备到服务配置的完整步骤,帮助读者顺利完成部署。

Linux下Nginx安装PHP时PHP-FPM与Nginx如何关联配置?

环境准备与依赖安装

在开始安装前,需确保系统已更新至最新状态,并安装必要的编译工具与依赖库,以Ubuntu/Debian系统为例,执行以下命令:

sudo apt update && sudo apt upgrade -y  
sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev  

若为CentOS/RHEL系统,可使用yumdnf替代apt,安装对应开发工具包(如gccpcre-develzlib-devel等),这些依赖是编译Nginx与PHP扩展的基础,缺一不可。

建议创建一个独立的系统用户(如www-data)用于运行Nginx与PHP服务,提升安全性:

sudo useradd -r -s /sbin/nologin www-data  

Nginx的安装与配置

Nginx作为高性能Web服务器,可通过包管理器或源码编译安装,包管理器安装最便捷:

# Ubuntu/Debian  
sudo apt install -y nginx  
# CentOS/RHEL  
sudo yum install -y nginx  

安装完成后,启动Nginx并设置开机自启:

sudo systemctl start nginx  
sudo systemctl enable nginx  

通过浏览器访问服务器IP地址,若显示Nginx欢迎页面,则说明安装成功。

若需自定义编译Nginx(如添加特定模块),可从官网下载源码(如1.25.x版本),执行以下步骤:

Linux下Nginx安装PHP时PHP-FPM与Nginx如何关联配置?

wget http://nginx.org/download/nginx-1.25.3.tar.gz  
tar -zxvf nginx-1.25.3.tar.gz  
cd nginx-1.25.3  
./configure --prefix=/usr/local/nginx --user=www-data --group=www-data --with-http_ssl_module --with-http_gzip_static_module  
make && sudo make install  

编译完成后,通过/usr/local/nginx/sbin/nginx启动服务,并配置systemd管理服务。

PHP的安装与FPM配置

PHP-FPM(FastCGI Process Manager)是Nginx与PHP交互的核心组件,需确保安装PHP及必要扩展,以Ubuntu 22.04安装PHP 8.1为例:

sudo apt install -y php8.1-fpm php8.1-mysql php8.1-gd php8.1-xml php8.1-curl php8.1-mbstring  

CentOS系统需先添加EPEL源与Remi仓库,再安装对应版本的PHP-FPM及扩展。

安装完成后,检查PHP-FPM服务状态:

sudo systemctl status php8.1-fpm  

若服务未启动,执行sudo systemctl start php8.1-fpm并设置开机自启。

PHP-FPM的配置文件位于/etc/php/8.1/fpm/pool.d/www.conf,默认监听0.0.1:9000,可根据需求调整进程管理方式(如pm = dynamic)、最大子进程数(pm.max_children)等参数,优化性能。

Nginx与PHP的协同配置

要让Nginx正确解析PHP文件,需修改其配置文件,默认配置文件位于/etc/nginx/sites-available/default,创建一个新的虚拟主机配置(如/etc/nginx/sites-available/php-site):

Linux下Nginx安装PHP时PHP-FPM与Nginx如何关联配置?

server {  
    listen 80;  
    server_name your_domain_or_ip;  
    root /var/www/html;  
    index index.php index.html index.htm;  
    location / {  
        try_files $uri $uri/ /index.php?$query_string;  
    }  
    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;  
    }  
    location ~ /\.ht {  
        deny all;  
    }  
}  

配置中,root指定网站根目录(需创建并设置权限:sudo mkdir -p /var/www/html && sudo chown -R www-data:www-data /var/www/html),fastcgi_pass指向PHP-FPM监听的地址与端口。

启用配置并测试语法:

sudo ln -s /etc/nginx/sites-available/php-site /etc/nginx/sites-enabled/  
sudo nginx -t  

若提示syntax is ok,则重载Nginx配置:

sudo systemctl reload nginx  

测试与优化

在网站根目录创建info.php<?php phpinfo(); ?>,通过浏览器访问该文件,若显示PHP配置信息,则说明Nginx与PHP协同成功。

性能优化建议:

  1. PHP-FPM优化:根据服务器内存调整pm.max_children(公式:可用内存÷每个进程占用内存,如8GB内存,每进程占用30MB,则约270)。
  2. Nginx优化:调整worker_processes为CPU核心数,启用gzip压缩(在http块中添加gzip on; gzip_types text/plain application/json;)。
  3. 缓存配置:使用Nginx的fastcgi_cache缓存PHP动态内容,减少服务器压力。

常见问题排查:

  • 404错误:检查fastcgi_param SCRIPT_FILENAME是否正确指向$document_root$fastcgi_script_name
  • 502错误:确认PHP-FPM服务是否运行,及fastcgi_pass地址与端口是否匹配。
  • 权限问题:确保网站目录所有者为www-data,避免Nginx无法读取文件。

通过以上步骤,即可完成Linux系统中Nginx与PHP的安装与配置,后续可根据实际需求安装更多PHP扩展(如Redis、Memcached),或结合MySQL/MariaDB构建完整的Web应用环境。

赞(0)
未经允许不得转载:好主机测评网 » Linux下Nginx安装PHP时PHP-FPM与Nginx如何关联配置?