奋斗
努力

在 CentOS 8.2 64位系统中安装 Nginx + PHP + MySQL 建站的完整步骤是什么?

云计算

在 CentOS 8.2(已停止维护,强烈建议升级至 CentOS Stream 8/9 或 AlmaLinux/Rocky Linux 8+)上安装 Nginx + PHP + MySQL(实际推荐 MariaDB)建站环境,需注意:CentOS 8 已于 2021-12-31 生命周期结束(EOL),官方仓库不可用,且存在严重安全风险。以下步骤基于 启用 EPEL 和 AppStream 仓库的临时可用状态(仅用于学习或离线测试环境),并明确标注风险与现代替代方案。

⚠️ 重要前提声明:

  • ✅ 本指南仅适用于已有 CentOS 8.2 系统且无法立即迁移的临时场景
  • 生产环境严禁使用 EOL 的 CentOS 8(无安全更新、仓库失效、漏洞无法修复);
  • ✅ 强烈推荐迁移到:AlmaLinux 8/9、Rocky Linux 8/9 或 CentOS Stream 8/9(免费、RHEL 兼容、长期支持);
  • 🔐 MySQL 在 RHEL/CentOS 生态中默认由 MariaDB 替代(兼容 MySQL 协议,Red Hat 官方支持)。

✅ 完整安装步骤(CentOS 8.2,离线/应急场景)

步骤 0:系统准备与风险确认

# 1. 检查系统版本(确认为 CentOS 8.2)
cat /etc/redhat-release
# 输出应为:CentOS Linux release 8.2.2004

# 2. 更新系统(可能失败,因仓库已下线;若失败则跳过,后续手动配置仓库)
sudo dnf update -y

# 3. 【关键】启用 EPEL 和 PowerTools(若未启用)
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled powertools  # CentOS 8 中原 "PowerTools" 仓库名(旧版叫 "BaseOS/Extras")

⚠️ 注意:截至 2024 年,mirror.centos.org 已关闭,需切换为 vault.centos.org(仅存档,无安全更新):

# 临时替换 baseurl(仅限紧急测试!)
sudo sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/CentOS-*.repo
sudo dnf clean all && sudo dnf makecache

步骤 1:安装 Nginx

# 安装 Nginx(来自 AppStream)
sudo dnf install -y nginx

# 启动并设置开机自启
sudo systemctl enable nginx
sudo systemctl start nginx

# 开放防火墙(若启用 firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# 验证:访问 http://你的服务器IP,应显示 "Welcome to nginx on CentOS"

步骤 2:安装 PHP(PHP-FPM 方式,推荐)

CentOS 8 默认提供 PHP 7.2(较旧),可选安装 PHP 7.4(需 EPEL)或使用 Remi 仓库(更推荐,但需额外配置):

✅ 推荐方式:启用 Remi 仓库(提供新版 PHP)
# 安装 Remi 仓库(安全可靠,广泛使用)
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

# 启用 PHP 7.4(或 8.0/8.1,根据需求选;7.4 是 CentOS 8 最佳兼容版)
sudo dnf module reset php
sudo dnf module enable php:remi-7.4

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

# 配置 PHP-FPM
sudo sed -i 's/^user = apache/user = nginx/' /etc/php-fpm.d/www.conf
sudo sed -i 's/^group = apache/group = nginx/' /etc/php-fpm.d/www.conf
sudo sed -i 's/;listen.owner = nobody/listen.owner = nginx/' /etc/php-fpm.d/www.conf
sudo sed -i 's/;listen.group = nobody/listen.group = nginx/' /etc/php-fpm.d/www.conf
sudo sed -i 's/;listen.mode = 0660/listen.mode = 0660/' /etc/php-fpm.d/www.conf

# 启动 PHP-FPM
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

步骤 3:安装 MariaDB(MySQL 的官方推荐替代)

# 安装 MariaDB(CentOS 8 默认数据库)
sudo dnf install -y mariadb-server mariadb

# 启动并设为开机自启
sudo systemctl enable mariadb
sudo systemctl start mariadb

# 运行安全初始化(设置 root 密码、移除匿名用户等)
sudo mysql_secure_installation
# 按提示操作:设置 root 密码(Y)、删除匿名用户(Y)、禁止远程 root(Y)、删除 test 库(Y)、重载权限(Y)

# 验证连接
mysql -u root -p
# 输入密码后进入 MariaDB shell,输入 `SELECT VERSION();` 确认

💡 提示:如确需 MySQL(非 MariaDB),可从 MySQL 官网 下载 .rpm 包手动安装,但不推荐——与系统生态不兼容,且无官方支持。


步骤 4:配置 Nginx 支持 PHP(FastCGI)

编辑默认站点配置:

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

替换全部内容为以下(支持 .php 解析、index.php 优先、安全加固):

server {
    listen       80;
    server_name  localhost;

    # 根目录(可按需修改)
    root         /usr/share/nginx/html;
    index        index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 处理 PHP 脚本
    location ~ .php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;  # 或 unix:/run/php-fpm/www.sock(推荐 Unix socket)
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # 禁止访问敏感文件
    location ~ /.ht {
        deny all;
    }
}

优化建议(推荐使用 Unix Socket 提升性能)

# 修改 /etc/php-fpm.d/www.conf:
# 将 listen = 127.0.0.1:9000 改为:
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

# 重启服务
sudo systemctl restart php-fpm nginx

然后将 fastcgi_pass 改为 unix:/run/php-fpm/www.sock


步骤 5:测试 PHP 与数据库连接

# 创建测试文件
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
echo "<?php $mysqli = new mysqli('localhost', 'root', '你的MariaDB密码'); echo $mysqli ? 'DB OK' : 'DB ERROR'; ?>" | sudo tee /usr/share/nginx/html/dbtest.php

# 设置正确权限
sudo chown -R nginx:nginx /usr/share/nginx/html/
sudo chmod -R 755 /usr/share/nginx/html/

# 重启服务
sudo systemctl restart nginx php-fpm

访问:

  • http://your_ip/info.php → 查看 PHP 信息页
  • http://your_ip/dbtest.php → 应显示 DB OK

✅ 补充:创建建站所需数据库与用户(示例)

# 登录 MariaDB
mysql -u root -p

# 执行以下 SQL:
CREATE DATABASE myweb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON myweb.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

🚫 重要警告与升级建议(必读!)

项目 说明
⚠️ CentOS 8 已 EOL 自 2021-12-31 起无任何安全更新,禁止用于生产环境。继续使用等于裸奔。
推荐迁移路径 AlmaLinux 8/9(almalinux.org)
Rocky Linux 8/9(rockylinux.org)
CentOS Stream 9(滚动发布,RHEL 9 基础)
🔧 迁移工具 使用 migrate2rockyalma-migrate 一键迁移(保留数据)
🌐 现代替代栈 Nginx + PHP 8.2+ (Remi) + MariaDB 10.11 + Redis(缓存)+ Certbot(HTTPS)

✅ 附:一键验证脚本(运行后检查服务状态)

#!/bin/bash
echo "=== 服务状态检查 ==="
systemctl is-active nginx && echo "✓ Nginx: running" || echo "✗ Nginx: failed"
systemctl is-active php-fpm && echo "✓ PHP-FPM: running" || echo "✗ PHP-FPM: failed"
systemctl is-active mariadb && echo "✓ MariaDB: running" || echo "✗ MariaDB: failed"
ss -tlnp | grep ':80|:443' &>/dev/null && echo "✓ Port 80 open" || echo "✗ Port 80 closed"
ss -tlnp | grep ':3306' &>/dev/null && echo "✓ Port 3306 open" || echo "✗ Port 3306 closed"

如需我为你生成:

  • AlmaLinux 9 的完整现代化部署脚本(含 HTTPS、Let’s Encrypt、WordPress 一键部署)
  • Docker Compose 版 LEMP 环境(隔离、可移植)
  • 自动化迁移 CentOS 8 → Rocky Linux 8 脚本

请随时告知,我可立即提供 👇

🌟 记住:安全不是功能,而是底线。选择受支持的系统,才是对网站和用户真正的负责。

未经允许不得转载:云服务器 » 在 CentOS 8.2 64位系统中安装 Nginx + PHP + MySQL 建站的完整步骤是什么?