当前位置: 首页 > news >正文

公有云ECS手动搭建LNMP+WordPress网站实战总结

摘要:本次实训基于阿里云ECS公有云服务器,完成LNMP环境手动部署与WordPress博客网站搭建全流程操作。本文结合实操步骤,梳理环境准备、组件安装、服务配置、数据库授权、网站部署及安全优化等核心内容,总结实操踩坑点、组件协同原理与公有云建站规范,适合新手学习Linux云服务建站、Web服务架构部署。

一、实训概述

1. 环境说明

本次使用阿里云ECS(CentOS 7) 公有云服务器,采用经典LNMP架构(Linux + Nginx + MySQL + PHP)搭建动态网站。

Nginx:高性能Web反向代理服务器,负责处理静态资源、转发PHP动态请求;

MySQL 8.4:关系型数据库,存储网站数据、文章、用户信息;

PHP 8.2:动态脚本语言,实现网站业务逻辑;

WordPress:主流开源博客/建站程序,基于PHP+MySQL运行。

2. 整体流程

环境初始化 → 分步安装Nginx/MySQL/PHP → 配置Nginx解析PHP → 验证LNMP连通性 → 数据库规划 → 部署WordPress → 站点调试与安全清理。

二、前期环境准备

公有云ECS初始化是部署的基础,所有操作前置完成:

1. 确保服务器网络正常,可正常访问外网;

2. 替换为国内YUM源(阿里云源),提升软件下载速度;

3. 关闭防火墙、SELinux,避免端口拦截(生产环境建议按需放行80、3306等端口,不直接关闭防护);

4. 通过云平台Workbench或SSH工具远程连接ECS实例。

三、分步部署LNMP环境

(一)安装与配置Nginx

Nginx作为前端Web服务,是用户访问网站的入口。

1. 添加官方YUM源并安装

通过`tee`命令写入Nginx官方源文件,保证软件版本正规,随后执行安装:

bash

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

sudo yum -y install nginx

2. 启动服务并设置开机自启

bash

sudo systemctl enable --now nginx

3. 验证服务

本地执行 `curl http://127.0.0.1`,终端输出Nginx默认首页HTML代码,代表安装成功。

(二)安装并安全加固MySQL 8.4

MySQL负责数据存储,安全加固是公有云部署的必备环节,防止数据库被非法入侵。

1. 导入MySQL官方仓库并安装服务

bash

sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm

sudo yum install -y mysql-server

2. 启动并设置开机自启

bash

sudo systemctl enable --now mysqld

3. 安全初始化(核心步骤)

查看日志获取MySQL初始临时密码:

bash

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

执行加固脚本:`sudo mysql_secure_installation`,按照生产规范配置:

1. 修改root密码(强密码:大小写字母+数字+特殊符号,长度≥12位);

2. 移除匿名用户;

3. 禁止root账号远程登录;

4. 删除默认测试库;

5. 重载权限表,使配置立即生效。

> 重点:公有云服务器暴露在公网,禁止root远程登录是基础安全底线。

(三)安装PHP及依赖扩展

WordPress属于PHP动态程序,需安装PHP、PHP-FPM以及MySQL连接扩展。

1. 安装Remi源,启用PHP 8.2版本

bash

sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

sudo yum install -y yum-utils

sudo yum-config-manager --enable remi-php82

2. 安装PHP、PHP-FPM、MySQL连接组件

bash

sudo yum install -y php php-fpm php-mysqlnd

3. 启动并设置开机自启

bash

sudo systemctl enable --now php-fpm

(四)配置Nginx支持PHP解析

Nginx默认仅处理静态文件,必须配置转发规则,才能将PHP请求交给PHP-FPM处理,否则会出现页面下载、404等问题。

1. 备份原有配置文件,防止配置出错无法回滚

bash

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

2. 查看PHP-FPM通信方式

bash

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`(TCP端口)、`/run/php-fpm/www.sock`(Unix Socket,本地通信性能更高)。

3. 重写Nginx站点配置

修改配置文件,添加PHP请求转发规则,指定默认首页:

bash

sudo tee /etc/nginx/conf.d/default.conf <<-'EOF'

server {

listen 80;

server_name localhost;

root /usr/share/nginx/html;

index index.php index.html index.htm;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

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;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

EOF

4. 语法检查与重启服务

bash

sudo nginx -t 检查配置,出现successful代表无误

sudo systemctl restart nginx

(五)全环境连通性验证

1. 验证PHP环境

创建`phpinfo.php`测试文件,访问`http://ECS公网IP/phpinfo.php`,页面正常展示PHP版本、扩展信息即解析成功。

bash

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

✅ 安全规范:测试完成后立即删除该文件,页面会泄露服务器软件版本、路径等敏感信息。

bash

rm /usr/share/nginx/html/phpinfo.php

2. 验证PHP连接MySQL

1. 登录MySQL,创建独立业务库与普通用户(不使用root运行网站):

bash

sudo mysql -u root -p

CREATE DATABASE webapp;

CREATE USER 'webuser'@'localhost' IDENTIFIED BY '自定义强密码';

GRANT ALL PRIVILEGES ON webapp.* TO 'webuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;

2. 创建数据库连接测试脚本,访问公网IP查看结果:

bash

sudo tee /usr/share/nginx/html/test.php <<-'EOF'

<?php

$servername = "localhost";

$username = "webuser";

$password = "你的数据库密码";

$dbname = "webapp";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {

die("数据库连接失败: " . $conn->connect_error);

}

echo "数据库连接成功!";

?>

EOF

页面输出数据库连接成功,代表LNMP三大组件协同正常。

✅ 安全规范:测试完毕删除`test.php`,避免数据库账号密码明文泄露。

四、部署WordPress动态网站

LNMP环境就绪后,开始搭建WordPress博客站点,分为数据库准备、程序下载、配置文件修改、Nginx适配、站点初始化五步。

(一)创建WordPress专用数据库与用户

遵循业务隔离原则,为网站单独创建数据库和账号,不共用其他业务库:

bash

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '强密码';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';

FLUSH PRIVILEGES;

EXIT;

记录数据库名、用户名、密码,后续配置需要使用。

(二)下载并解压WordPress

进入Nginx网站根目录,下载中文版WordPress并解压:

bash

cd /usr/share/nginx/html

wget https://cn.wordpress.org/wordpress-6.8.5-zh_CN.zip

yum install unzip -y

unzip wordpress-6.8.5-zh_CN.zip

(三)配置WordPress数据库连接

1. 进入WordPress目录,复制示例配置文件:

bash

cd /usr/share/nginx/html/wordpress

cp wp-config-sample.php wp-config.php

2. 编辑`wp-config.php`,填入刚才创建的数据库信息:

bash

vim wp-config.php

修改对应字段:

php

define('DB_NAME', 'wordpress');

define('DB_USER', 'wp_user');

define('DB_PASSWORD', '数据库密码');

define('DB_HOST', 'localhost');

(四)适配Nginx与PHP-FPM配置

本次改用Unix Socket通信,性能优于TCP端口,需同步修改两处配置:

1. 修改PHP-FPM监听方式

bash

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

将 `listen = 127.0.0.1:9000` 改为 `listen = /run/php-fpm/www.sock`

取消注释并修改属主属组:

listen.owner = nginx

listen.group = nginx

重启PHP-FPM:

bash

systemctl restart php-fpm

2. 修改Nginx配置,指向WordPress目录与Socket地址

修改站点配置,将网站根目录指向WordPress文件夹,`fastcgi_pass` 改为 `unix:/run/php-fpm/www.sock`。

3. 检查语法并重启Nginx

bash

nginx -t

systemctl restart nginx

(五)浏览器初始化WordPress

1. 本地浏览器访问 `http://ECS公网IP`,进入WordPress安装向导;

2. 填写站点标题、后台管理员账号、密码、邮箱;

3. 点击安装,完成后使用账号密码登录后台,网站正式搭建完成。

五、实操核心知识点与踩坑总结

1. 架构原理

Nginx:处理静态资源,通过`fastcgi`协议将PHP请求转发给PHP-FPM;

PHP-FPM:PHP进程管理器,接收请求并执行PHP代码,再访问MySQL查询数据;

两种通信方式:TCP端口(适合多主机分离部署)、Unix Socket(本地部署,高性能、更安全)。

2. 高频报错与解决

1. 访问PHP文件直接下载:Nginx未配置`location ~ \.php$`转发规则;

2. 502 Bad Gateway:PHP-FPM未启动、监听地址与Nginx配置不一致、Socket文件权限错误;

3. WordPress连不上数据库:账号密码写错、数据库授权范围错误、MySQL服务未启动;

4. 公网无法访问:云服务器安全组未放行80端口、本地防火墙未关闭。

3. 公有云专属安全要点(重中之重)

1. MySQL必须执行安全加固,禁止root远程登录、删除匿名用户;

2. 网站使用独立数据库账号,最小化权限,不使用root运行业务;

3. 所有测试脚本(phpinfo、数据库测试页)使用后立即删除,防止敏感信息泄露;

4. 密码统一使用高强度组合密码,杜绝弱口令;

5. 云平台安全组按需开放端口,生产环境不要直接关闭服务器防火墙。

六、实训收获与后续学习方向

本次完整完成公有云ECS下LNMP环境搭建与WordPress网站部署,打通了云服务器 + Web架构 + 动态网站的完整链路。

1. 理解了LNMP各组件的分工与协同逻辑,不再单纯机械敲命令;

2. 掌握了公有云服务器的基础安全规范,树立云服务安全意识;

3. 熟悉了Nginx配置、PHP-FPM调优、MySQL用户授权等常用运维操作。

后续可以继续深入学习:Nginx反向代理、HTTPS证书配置、WordPress主题与插件部署、网站数据备份、服务器监控、负载均衡等企业级运维技能。

总结:

公有云建站流程清晰,但细节决定成败,配置路径、权限、通信地址、账号密码任一出错都会导致网站无法访问。实操中一定要养成备份配置、及时清理测试文件、强化安全设置的习惯。

http://www.cnnetsun.cn/news/2855895.html

相关文章:

  • 刚搭建网站看不懂日志?新手入门教程一次性讲清
  • 【SPIE出版,拥有双刊号:ISSN及ISBN | 哈尔滨信息工程学院主办 | 连续五年实现EI、Scopus检索,快速且稳定 | 大咖嘉宾】第六届电子材料与信息工程国际学术会议(EMIE 2026)
  • 国内的优秀的原创鞋履设计品牌,有哪些推荐?
  • 在线 AVIF 转 WebP 工具推荐:极速转换 + 本地处理 + 完全隐私保护
  • SaaS 产品实测|连锁 AI 内容中台 菠萝 AI 品牌资产管理与落地运维分析
  • 2026年赣州软件定制服务商该怎么选?
  • 做了这么多年英语培训,我越来越确定:真正拉开孩子差距的,还是词汇量
  • 从两摞盘子到 JS 原型链——一场蓄谋已久的“降维打击“
  • 有哪些AI论文写作工具?精选7款实用工具,覆盖全流程
  • vibe coding设计前端界面的技巧
  • LangGraph 状态存储方案:Redis vs 向量数据库 vs 本地文件(性能对比)
  • Multi-Agent 架构的能力路由是怎么实现的:分布式智能决策链路解析
  • 005、GPIO输入实战:按键消抖、中断触发、轮询与中断模式对比
  • MHmarkets:产品理解成本与风控思路如何影响体验
  • 第03篇:字符串入门
  • Kaspersky Free(免费杀毒软件)
  • Python 单元测试与 Mock 体系全解
  • 【3.1Java基础】Java运算符常见错误排查:10个高频编译运行错误一网打尽
  • 还在用老版本jQuery?手把手教你复现CVE-2020-11022/11023这个XSS漏洞(附完整PoC)
  • 别再死记公式!用Python模拟带你直观理解停止等待与回退N帧协议的信道利用率
  • 考研摆烂后如何一周突击复试?北邮网安复试准备全流程(含密码学、408速成法)
  • 新手避坑指南:用大疆NAZA-LITE飞控组装F450无人机,从焊接电调到GPS校准的完整流程
  • ARM9微控制器LPC292x硬件设计实战:从数据手册到可靠电路
  • 从一次线上数据泄露事故复盘:我们是如何用签名和脱敏堵住越权漏洞的
  • 工业数据上云的‘翻译官’:实测KepOPC DA2UA如何桥接Windows OPC DA与跨平台应用
  • 别再傻傻分不清!用猫狗猪分类的例子,一次搞懂论文里的OA、mAcc、Instance和Class Accuracy
  • 动态群组密钥管理协议:原理、实现与优化
  • 不只是玩具:用金牛座脑波模块+ESP32,打造一个低成本的居家专注力监测‘小黑盒’
  • 告别盲目搜索:手把手教你用Keil MDK调试RT-Thread的RT_ASSERT死机问题
  • Arma3任务制作者必看:如何用SQF的ForEach和WaitUntil,让AI小队执行复杂巡逻逻辑