一、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
小白排错小提示
打开 php 文件直接下载:nginx 没有匹配
\.php$的转发段,PHP 没有交给 fpm 解析502 Bad Gateway:nginx 连不上 php-fpm,检查 sock 权限、php-fpm 服务是否启动
403 Forbidden:文件夹权限或者归属用户不对