小新
小新
发布于 2026-10-22 / 5 阅读
0
0

扒掉宝塔的“底裤”:从零手动配置 Nginx 与 PHP 8.4

一、Rocky Linux 执行命令(带注释 + 用途)本篇用的是Rocky Linux 9

# dnf:Rocky/CentOS的包管理器,类似Windows应用商店
# update -y:更新本机所有已安装软件,-y 自动确认,不用手动输y
sudo dnf update -y


# CRB源:Rocky9 额外软件仓库,很多编译、依赖包放在这里,PHP部分扩展依赖它
sudo dnf config-manager --set-enabled crb

# 3. 安装 Remi 仓库 (注意对应 release-9)
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y


# 安装 Nginx:web服务软件,作用:接收浏览器的http请求、分发静态文件、把PHP请求转给php-fpm
sudo dnf install nginx -y
# enable:设置开机自动启动;--now:立刻启动服务,不用重启机器
sudo systemctl enable --now nginx


# firewall-cmd:防火墙工具;permanent:永久规则(重启防火墙不丢失)
# add-service=http:放行80端口(http网页默认端口)
sudo firewall-cmd --permanent --add-service=http
# add-service=https:放行443端口(https加密网页端口)
sudo firewall-cmd --permanent --add-service=https
# reload:重新加载防火墙规则,刚才的放行才会生效
sudo firewall-cmd --reload


# 1. 启用 PHP 8.4 模块流
sudo dnf module enable php:remi-8.4 -y

# 2. 安装 PHP 8.4 及常用扩展
sudo dnf install php php-cli php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-opcache -y

# 开机自启php-fpm,并且马上启动php-fpm服务
sudo systemctl enable --now php-fpm

二、php-fpm 配置文件:/etc/php-fpm.d/www.conf

执行打开命令:

sudo vim /etc/php-fpm.d/www.conf

#找到下面两行修改(**配置正文不要把注释写进去!注释我给你单独解释**)
; user:php-fpm进程以哪个系统用户身份运行
user = nginx
; group:进程所属用户组
group = nginx

用途:默认是 apache,Nginx 进程是 nginx,身份不一致会出现文件权限不足、502 报错

vim 操作记住: `i` 进入编辑;`ESC` 退出编辑模式;`:wq` 保存退出;`:q!` 放弃修改退出 配置文件里**# 代表注释**;php 里 `//` 是单行注释;js 里 `//` 单行注释

第三步:创建网站目录

# -p 自动创建多级目录,网站根目录放在 /var/www/myweb
sudo mkdir -p /var/www/myweb

# 目录归属用户改为nginx,nginx和php才有读写权限
sudo chown -R nginx:nginx /var/www/myweb

# 权限755:所有者读写执行,其他人只能读和浏览(安全标准权限)
sudo chmod -R 755 /var/www/myweb

第四步:新建 Nginx 站点配置文件

sudo vim /etc/nginx/conf.d/myweb.conf

复制下面这一段带注释的配置进去:

# server 代表一个独立网站
server {
    # 监听80端口,http默认端口
    listen 80;
    # _ 代表匹配所有IP访问,局域网没有域名就这么写
    server_name _;
    # root 指定网站代码存放的文件夹
    root /var/www/myweb;
    # 默认首页文件优先级,先找index.php,找不到再找index.html
    index index.php index.html;

    # 匹配所有访问路径
    location / {
        # 尝试读取用户请求的文件,找不到返回404
        try_files $uri $uri/ =404;
    }

    # 正则匹配:所有以 .php 结尾的访问,交给php-fpm解析
    location ~ \.php$ {
        # 转发给php-fpm的套接字文件
        fastcgi_pass unix:/run/php-fpm/www.sock;
        # php默认首页
        fastcgi_index index.php;
        # 传递脚本物理路径,PHP必须靠这个找到代码文件
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # 导入nginx自带fastcgi参数模板
        include fastcgi_params;
    }
}

ESC → :wq 保存退出

检查配置有没有写错:

sudo nginx -t

看到 test is successful 代表没问题,平滑重载 Nginx:

sudo systemctl reload nginx

第五步:创建 php 测试页面

sudo vim /var/www/myweb/index.php

写入:

<?php
// phpinfo 打印PHP全部环境信息,用来验证环境连通
phpinfo();
?>

ESC → :wq

第六步:测试访问

先查虚拟机 IP:

ip a

找到 ens33 里面 inet 后面的地址(类似 192.168.x.x) 在你电脑浏览器打开:http://192.168.x.x/index.php 能看到 PHP 信息页面,就代表整套环境搭建成功!

配套常用命令(以后调试用)

# 查看nginx状态,看是否正常运行
systemctl status nginx
# 查看php-fpm状态
systemctl status php-fpm

# 实时看nginx访问日志,看请求、返回码
tail -f /var/log/nginx/access.log
# 实时看nginx错误日志,排查502、报错
tail -f /var/log/nginx/error.log
# 实时看php-fpm错误日志
tail -f /var/log/php-fpm/www-error.log

小白排错小提示

  1. 打开 php 文件直接下载:nginx 没有匹配 \.php$ 的转发段,PHP 没有交给 fpm 解析

  2. 502 Bad Gateway:nginx 连不上 php-fpm,检查 sock 权限、php-fpm 服务是否启动

  3. 403 Forbidden:文件夹权限或者归属用户不对


评论