一、前言

在公有云服务器(阿里云 / 腾讯云 / 华为云等)上搭建 Web 网站,LNMP(Linux+Nginx+MySQL+PHP)是目前最主流、稳定、高性能的建站组合。本文基于 CentOS 7 公有云 ECS 实例,手把手带你从零编译安装、安全配置、服务联动、PHP 与数据库连通测试,全程附带可直接复制的命令与原理讲解,新手也能一次成功部署!

环境前置说明

  • 操作系统:CentOS Linux 7.9 (Maipo) 内核 3.10
  • Nginx 版本:1.26.1 稳定版 Web 服务器
  • MySQL 版本:8.4.8 社区版 数据库服务
  • PHP 版本:8.2.20 动态脚本解析
  • 服务器架构:x86_64
  • 场景:公有云公网服务器,对外提供 Web 访问服务

二、整体架构知识科普

  1. Linux:公有云服务器底层操作系统,承担所有服务运行、资源调度
  2. Nginx:高性能反向代理 + 静态 Web 服务器,处理 80 端口 HTTP 访问,转发 PHP 动态请求给 PHP-FPM
  3. PHP-FPM:PHP 进程管理程序,专门解析 PHP 动态网页代码
  4. MySQL:关系型数据库,存储网站所有业务数据、用户数据
  5. 访问流程:用户公网 IP 访问 → Nginx 接收请求 → 静态文件直接返回、PHP 请求转发 PHP-FPM → PHP 读取 / 写入 MySQL 数据 → 组装页面返回给浏览器

三、步骤 1:服务器基础信息查看

先确认服务器基础环境,执行命令:

uname -a

输出示例:Linux localhost.localdomain 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 x86_64 GNU/Linux


四、步骤 2:安装并配置 Nginx Web 服务

1. 配置 Nginx 官方 YUM 源

官方源保证版本最新、安全稳定,避免系统自带旧版本

sudo tee /etc/yum.repos.d/nginx.repo <<-'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

2. 安装、启动 Nginx 并设置开机自启

# 安装nginx
yum install nginx -y
# 开机自启并立即运行nginx
sudo systemctl enable --now nginx

3. 验证 Nginx 运行状态

# 查看nginx版本
nginx -v
# 本地访问测试
curl http://127.0.0.1

✅ 出现Welcome to nginx!默认页面代码,代表 Nginx 安装启动成功!⚠️ 公有云需在安全组放行 80 端口,浏览器输入服务器公网 IP 即可访问默认页。


五、步骤 3:安装与安全加固 MySQL 数据库

1. 安装 MySQL8.4、启动服务

# 安装MySQL服务
yum install mysql-community-server -y
# 开机自启并立即运行mysqld
sudo systemctl enable --now mysqld

2. 获取 MySQL 初始临时密码

sudo grep 'temporary password' /var/log/mysqld.log

示例输出临时密码:!do2>0%k7Jw3

3. MySQL 初始化安全配置(关键生产安全操作)

执行mysql_secure_installation安全向导,全程安全优化:

mysql_secure_installation

交互选项设置(公有云生产环境标准配置):

  1. Change the password for root ? → 输入n(本次暂跳过改密码)
  2. Remove anonymous users? → 输入y(删除匿名危险账号)
  3. Disallow root login remotely? → 输入y(禁止 root 远程登录,防暴力破解)
  4. Remove test database? → 输入y(删除默认测试库)
  5. Reload privilege tables now? → 输入y(立即生效权限)✅ 最终提示All done!,MySQL 安全加固完成!

4. 创建网站专属数据库与业务账号

禁止网站直接使用 root 账号连接数据库,权限最小化保障安全

# 登录MySQL
sudo mysql -u root -p
-- 创建网站专属数据库webapp
CREATE DATABASE webapp;
-- 创建独立业务用户webuser,设置强密码
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'webPass@123456';
-- 给用户分配webapp数据库全部权限
GRANT ALL PRIVILEGES ON webapp.* TO 'webuser'@'localhost';
-- 刷新权限生效
FLUSH PRIVILEGES;
EXIT;

六、步骤 4:安装 PHP 与 PHP-FPM 解析引擎

1. 安装 PHP8.2 与 FPM、MySQL 扩展

yum install php php-fpm php-mysqli -y
# 启动并设置开机自启
systemctl enable --now php-fpm

2. 获取 PHP-FPM 监听地址

默认 PHP-FPM 监听本地 9000 端口,用于 Nginx 转发请求

PHP_FPM_LISTEN=$(sudo sed -n 's/^\s*listen\s*=\s*//p' /etc/php-fpm.d/www.conf | head -n 1)
echo "$PHP_FPM_LISTEN"

✅ 输出127.0.0.1:9000,确认监听地址正常。


七、步骤 5:Nginx 配置 PHP 联动解析

1. 修改 Nginx 站点配置文件

编辑默认站点配置,让 Nginx 支持 PHP 文件解析转发

cat > /etc/nginx/conf.d/default.conf <<-'EOF'
server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html;

    # 优先识别PHP首页文件
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # 核心PHP转发规则,转发至PHP-FPM 9000端口
    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;
    }
}
EOF

2. 校验配置 + 重启生效

# 校验配置语法是否错误
nginx -t
# 重载nginx配置
systemctl reload nginx

✅ 提示test is successful代表配置无误!


八、步骤 6:全链路连通性测试

1. 测试 PHP 环境

创建phpinfo.php探针文件,验证 PHP 运行正常

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php

浏览器访问:http://服务器公网IP/phpinfo.php✅ 出现 PHP8.2 详细信息页面,PHP 解析完全正常!

2. 测试 PHP 连接 MySQL 数据库

创建数据库连接测试脚本

sudo tee /usr/share/nginx/html/test.php <<-'EOF'
<?php
$servername = "localhost";
$username = "webuser";
$password = "webPass@123456";
$dbname = "webapp";

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接状态
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}
echo "🎉 数据库连接成功!LNMP全环境搭建完成!";
?>
EOF

浏览器访问:http://公网IP/test.php✅ 页面输出连接成功,代表 Nginx-PHP-MySQL 全链路完美打通!


九、公有云生产环境优化 & 安全建议

  1. 安全组策略:仅放行 80、443 必要端口,关闭多余端口暴露
  2. MySQL 安全:禁止 root 远程访问、定期修改强密码、定期备份数据库
  3. 防火墙配置:开启系统 firewalld,仅放行业务端口
  4. HTTPS 部署:后续可配置 SSL 证书,全站 HTTPS 加密访问
  5. 权限管控:网站目录权限最小化,禁止 777 高危权限
  6. 版本维护:定期升级 Nginx、MySQL、PHP 补丁,修复高危漏洞

十、最终成果总结

本次我们在公有云 CentOS 服务器上:

✅ 完成 LNMP 整套环境从零搭建

✅ 完成 MySQL 生产级安全加固

✅ 完成 Nginx 与 PHP-FPM 精准联动

✅ 完成 PHP 探针、数据库连通双重验证

✅ 所有配置符合公有云线上业务部署标准

搭建完成后,你就可以直接部署 WordPress、个人博客、企业官网等各类 PHP 网站到公有云服务器对外提供服务啦~

更多推荐