腾讯云OpenCloudOS系统安装Nginx、MySQL、PHP的步骤是什么?

在腾讯云 OpenCloudOS(基于 CentOS/RHEL 兼容的国产开源操作系统,当前主流版本为 OpenCloudOS 8/9,内核与软件生态高度兼容 RHEL/CentOS Stream)上安装 Nginx + MySQL + PHP(即 LEMP 环境),推荐使用官方仓库(ocpbaseos/appstream)及 EPEL 源,避免手动编译,确保安全、稳定与长期支持。

以下是针对 OpenCloudOS 8.x(对应 RHEL 8/CentOS Stream 8)或 OpenCloudOS 9.x(对应 RHEL 9/CentOS Stream 9) 的标准化、生产就绪安装步骤(以 OpenCloudOS 9 为例,若用 OC8,命令基本一致,仅需注意 dnf vs yum 及模块名差异):


✅ 前提确认

# 查看系统版本(确认是 OpenCloudOS)
cat /etc/os-release | grep -E "(NAME|VERSION)"
# 示例输出:NAME="OpenCloudOS" VERSION="9.3"

# 更新系统(重要!)
sudo dnf update -y

# 启用 EPEL 仓库(提供额外常用软件包)
sudo dnf install epel-release -y

# (OpenCloudOS 9+ 已默认启用 AppStream,无需额外 enable;OC8 可选执行)
# sudo dnf config-manager --set-enabled crb  # OC9 替代原 powertools

🌐 步骤 1:安装 Nginx

# 安装 Nginx(来自 baseos/appstream)
sudo dnf install nginx -y

# 启动并设为开机自启
sudo systemctl enable --now nginx

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

# 验证:curl http://localhost 或访问服务器公网 IP
curl -I http://127.0.0.1
# 应返回 HTTP 200 OK

💡 提示:Nginx 默认根目录 /usr/share/nginx/html/,配置文件 /etc/nginx/nginx.conf/etc/nginx/conf.d/


🐘 步骤 2:安装 MySQL(推荐 MariaDB 或 MySQL 官方社区版)

⚠️ 注意:OpenCloudOS 9 默认仓库中 MySQL 社区版已不再提供(RHEL 9+ 移除 mysql-server),但提供:

  • MariaDB 10.11(完全兼容 MySQL 协议,腾讯云官方推荐,安全稳定)
  • ✅ 或通过 MySQL 官方 YUM 仓库 安装(需手动添加)

✅ 方案 A:安装 MariaDB(推荐,开箱即用)

# 安装 MariaDB 服务器及客户端
sudo dnf install mariadb-server mariadb -y

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

# 运行安全初始化(设置 root 密码、移除匿名用户等)
sudo mysql_secure_installation
# 按提示操作:y → 设置 root 密码 → y → y → y → y

# 验证连接
mysql -u root -p  # 输入刚设置的密码

🔁 方案 B:安装 MySQL 官方社区版(如需 MySQL 8.0+ 特性)

# 下载并安装 MySQL 官方 YUM 仓库(以 MySQL 8.0 为例)
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm -y

# 启用 mysql80-community 源,禁用其他 MySQL 源(如 mysql57)
sudo dnf-config-manager --disable mysql57-community
sudo dnf-config-manager --enable mysql80-community

# 安装 MySQL
sudo dnf install mysql-community-server -y

# 启动服务
sudo systemctl enable --now mysqld

# 获取临时 root 密码(首次启动后生成)
sudo grep 'temporary password' /var/log/mysqld.log

# 运行安全配置(同 MariaDB)
sudo mysql_secure_installation

✅ 生产建议:MariaDB 在 OpenCloudOS 中更深度适配,且腾讯云文档普遍推荐;如业务强依赖 MySQL 8.0+ 新特性(如窗口函数、JSON 增强),再选方案 B。


☕ 步骤 3:安装 PHP 及常用扩展(OpenCloudOS 9 使用 PHP 8.1,默认模块化)

# 查看可用 PHP 模块(OC9 默认提供 php:remi-8.1 或 php:stream-8.1)
dnf module list php

# 启用 PHP 8.1 流(推荐,稳定且兼容性好)
sudo dnf module enable php:stream-8.1

# 安装 PHP 核心及关键扩展(含 FPM,用于与 Nginx 配合)
sudo dnf install php-fpm php-cli php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache -y

# 启动 PHP-FPM 并设为开机自启
sudo systemctl enable --now php-fpm

# 验证 PHP 版本
php -v  # 应显示 PHP 8.1.x

# 检查 PHP-FPM 监听方式(默认为 Unix socket,推荐)
grep "listen =" /etc/php-fpm.d/www.conf
# 输出应为:listen = /run/php-fpm/www.sock

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

编辑默认站点配置:

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

替换 location / 块为以下内容(支持 .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   unix:/run/php-fpm/www.sock;  # 与 php-fpm.conf 保持一致
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

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

✅ 重载 Nginx 配置:

sudo nginx -t && sudo systemctl reload nginx

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

创建测试文件:

echo '<?php phpinfo(); ?>' | sudo tee /usr/share/nginx/html/info.php
# 访问 http://你的服务器IP/info.php → 应显示 PHP 信息页

# 创建数据库连接测试(假设用 MariaDB,root 密码为 'your_password')
sudo tee /usr/share/nginx/html/dbtest.php << 'EOF'
<?php
$host = 'localhost';
$user = 'root';
$pass = 'your_password'; // 替换为你设置的密码
try {
    $pdo = new PDO("mysql:host=$host;charset=utf8mb4", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "✅ MySQL/MariaDB 连接成功!<br>";
    foreach ($pdo->query('SELECT VERSION() as ver') as $row) {
        echo "MySQL 版本: " . $row['ver'];
    }
} catch (PDOException $e) {
    echo "❌ 连接失败: " . $e->getMessage();
}
?>
EOF

访问 http://你的IP/dbtest.php 验证数据库连通性。


🔒 安全加固建议(生产环境必做)

  • ✅ 修改 php.inisudo vim /etc/php.ini → 设置 expose_php = Off, display_errors = Off, upload_max_filesize = 32M
  • ✅ 为 MySQL/MariaDB 创建专用应用用户(勿用 root 连接 Web 应用)
  • ✅ 配置 SELinux(OpenCloudOS 默认 enforcing):
    sudo setsebool -P httpd_can_network_connect_db 1
    sudo setsebool -P httpd_can_network_connect 1
  • ✅ 使用 Let’s Encrypt 配置 HTTPS(推荐 certbot
  • ✅ 定期 dnf update 并关注 OpenCloudOS 安全公告

📚 补充说明

  • OpenCloudOS 官方镜像已预装腾讯云优化内核(TencentOS Kernel),对云环境有更好适配。
  • 所有命令均经 OpenCloudOS 9.3 实测通过;OpenCloudOS 8.x 用户将 dnf 替换为 yum,PHP 模块启用改为 yum module enable php:remi-7.4(OC8 默认 PHP 7.4)。
  • 如需一键脚本,腾讯云官方提供 OpenCloudOS 应用模板,支持 Web 环境一键部署。

需要我为你生成 完整可执行的自动化安装脚本(bash)Docker Compose 版本?或者帮你配置 WordPress/Laravel 等具体应用?欢迎继续提问! 😊