上一篇 下一篇 分享链接 返回 返回顶部

新手如何在香港轻量云部署WordPress?从系统环境到域名上线完整操作

发布人:Minchunlin 发布时间:2026-10-04 17:12 阅读量:22

如果目标是在香港轻量云上上线一个可通过域名访问的 WordPress,建议先固定一套清晰环境:Ubuntu 24.04 LTS 64 位、Nginx、PHP 8.3-FPM、MariaDB、HTTPS,以及一个已经注册的域名。下面这套“新手建站必看!香港轻量云WordPress部署完整步骤”以全新云服务器为例,示例域名使用 example.com,服务器公网 IPv4 使用 203.0.113.10,实际操作时请替换成自己的域名和 IP。

文章开头配图

整套流程的上线目标是:云服务器能够解析域名,80 和 443 端口可访问,WordPress 能连接本机数据库,后台可以登录,HTTPS 证书可以自动续期,同时保留配置、网站文件和数据库的回滚入口。

一、部署前需要准备什么

1. 确认服务器和系统环境

本文命令以 Ubuntu 24.04 LTS 为准,软件栈如下:

项目示例环境
云服务器系统Ubuntu 24.04 LTS 64 位
Web 服务Nginx
PHP 运行方式PHP 8.3-FPM
数据库MariaDB
网站程序WordPress
示例域名example.com、www.example.com
网站目录/var/www/example.com
数据库名wordpress
数据库用户wpuser

建议新手至少准备:

  • 一个具有 sudo 权限的服务器账号;
  • 一个已经完成实名认证和 DNS 管理的域名;
  • 云平台安全组中允许 TCP 22、80、443;
  • 服务器至少预留约 20GB 磁盘空间;
  • 一个用于数据库的强密码,不要与服务器登录密码相同;
  • 一个可以保存备份的目录或对象存储位置。

WordPress 本身不会因为使用香港轻量云就改变安装方式,真正影响部署结果的是系统版本、PHP-FPM、数据库、Web 服务、DNS 和防火墙是否匹配。

首次登录后先确认系统,不要在不确定发行版的情况下直接执行后面的 PHP 版本命令:

cat /etc/os-release
uname -m

预期可以看到类似结果:

PRETTY_NAME="Ubuntu 24.04 LTS"
x86_64

如果显示的不是 Ubuntu 24.04 LTS,尤其是 Debian、CentOS 或其他 Ubuntu 版本,不要混用本文的 PHP 8.3 路径和服务名。

2. 先处理云平台防火墙

在云平台控制台的安全组或防火墙中放行:

  • TCP 22:SSH 管理;
  • TCP 80:HTTP 和证书验证;
  • TCP 443:HTTPS 访问。

数据库端口 3306 不需要对公网开放。WordPress 与 MariaDB 在同一台服务器上运行时,数据库只应监听本机地址。

如果服务器启用了 UFW,可以在确认当前 SSH 端口确实是 22 后执行:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw status

如果输出中没有现有 SSH 放行规则,先不要执行启用命令,否则可能在当前连接中断后无法再次登录。确认无误后再执行:

sudo ufw enable
sudo ufw status verbose

启用防火墙前应确认云平台安全组和系统 UFW 都允许 SSH。防火墙调整的影响范围是整台服务器,回滚方式是通过云平台控制台的远程终端或救援终端重新放行 SSH。

3. 为后续回滚建立备份目录

新服务器还没有网站文件和数据库,暂时没有可恢复内容,但可以先创建备份目录。后面对 Nginx、PHP 和 WordPress 配置进行修改前,均建议先复制原文件。

sudo install -d -m 700 /root/wp-backup

如果云平台提供磁盘快照功能,也可以在开始大规模安装或升级前创建一次快照。快照属于整盘级恢复,恢复时会影响服务器上的所有数据,不应代替单独的数据库备份。

二、安装 Nginx、PHP-FPM 和 MariaDB

1. 更新软件索引并安装依赖

以下命令适用于 Ubuntu 24.04 LTS。dist-upgrade 或大范围系统升级可能替换系统组件,生产环境应先确认已有服务和备份情况;全新服务器可以执行常规更新。

sudo apt update
sudo apt upgrade -y

安装 WordPress 所需的软件:

sudo apt install -y \
  nginx \
  mariadb-server \
  php8.3-fpm \
  php8.3-mysql \
  php8.3-curl \
  php8.3-gd \
  php8.3-mbstring \
  php8.3-xml \
  php8.3-zip \
  php8.3-intl \
  php8.3-opcache \
  unzip \
  curl \
  ca-certificates

启动服务并设置为开机启动:

sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php8.3-fpm

逐项验证:

systemctl is-active nginx
systemctl is-active mariadb
systemctl is-active php8.3-fpm
php -v

三个 systemctl 命令都应返回:

active

PHP 版本应为 8.3.x。若 PHP-FPM 没有启动,先查看日志,不要直接反复重启:

sudo systemctl status php8.3-fpm --no-pager
sudo journalctl -u php8.3-fpm -n 50 --no-pager

2. 检查 PHP-FPM 的实际套接字

Nginx 必须连接正确的 PHP-FPM 套接字。Ubuntu 24.04 的常见路径是 /run/php/php8.3-fpm.sock,但配置前应实际核验:

ls -l /run/php/

预期可以看到:

php8.3-fpm.sock

后面的 Nginx 配置会使用:

/run/php/php8.3-fpm.sock

如果实际文件名不同,应以 ls 的结果为准,不要凭经验填写。

三、创建 MariaDB 数据库和 WordPress 用户

1. 执行数据库基础安全配置

Ubuntu 通常使用系统账号认证 MariaDB 的本地 root 用户。可以运行交互式安全配置:

sudo mysql_secure_installation

不同 MariaDB 版本的提示略有差异,通常可以按以下原则选择:

  • 删除匿名用户:选择 Y;
  • 禁止 root 远程登录:选择 Y;
  • 删除测试数据库:选择 Y;
  • 重新加载权限表:选择 Y;
  • 如果询问是否切换为 Unix socket 认证,保留本机 socket 认证即可。

该命令会影响数据库的匿名访问、root 登录方式和测试库,不会删除即将创建的 WordPress 数据库。

2. 创建独立数据库和账号

进入 MariaDB:

sudo mysql

在 MariaDB 提示符中执行以下 SQL。请先将示例密码替换为自己的强密码,密码中不要使用单引号,避免 SQL 语句解析错误:

CREATE DATABASE wordpress
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'wpuser'@'localhost'
  IDENTIFIED BY 'replace-with-a-strong-password';

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

FLUSH PRIVILEGES;
EXIT;

这里的权限只授予 wordpress 数据库,没有授予整个 MariaDB 实例的全局权限。WordPress 连接数据库时使用 localhost,因此数据库账号也限制为本机来源。

验证数据库和用户是否存在:

sudo mysql -e "SHOW DATABASES LIKE 'wordpress';"
sudo mysql -e "SELECT User,Host FROM mysql.user WHERE User='wpuser';"

预期应看到数据库名 wordpress,以及 wpuser 对应的 localhost。

为了确认账号密码确实可用,可以执行:

mysql -u wpuser -p -h localhost -e "SELECT 1;"

输入刚才设置的数据库密码后,预期输出:

1
1

如果提示 Access denied,优先检查用户名、密码、主机名和 SQL 中是否存在未替换的示例内容。不要为了绕过错误给 wpuser 授予全局权限。

四、下载 WordPress 并准备网站目录

1. 创建网站目录并下载程序

以下示例会从 WordPress 官方下载地址获取压缩包。下载过程要求服务器能够正常访问 HTTPS,下载失败时先检查 DNS、出站网络和证书,而不是使用不明来源的安装包。

WORKDIR=$(mktemp -d)

curl -fL --retry 3 \
  https://wordpress.org/latest.tar.gz \
  -o "$WORKDIR/wordpress.tar.gz"

tar -xzf "$WORKDIR/wordpress.tar.gz" -C "$WORKDIR"

sudo mkdir -p /var/www/example.com
sudo cp -a "$WORKDIR/wordpress/." /var/www/example.com/

检查程序文件:

sudo test -f /var/www/example.com/wp-admin/index.php && echo "WordPress files OK"
sudo ls -la /var/www/example.com | head

如果没有看到 WordPress files OK,不要继续配置 Nginx,先检查压缩包是否下载完整:

ls -lh "$WORKDIR/wordpress.tar.gz"
tar -tzf "$WORKDIR/wordpress.tar.gz" | head

2. 设置目录和文件权限

对全新站点,可以先使用 www-data 作为网站运行用户,确保 WordPress 能写入上传目录和执行后台更新:

sudo chown -R www-www-data /var/www/example.com

sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;

sudo mkdir -p /var/www/example.com/wp-content/uploads
sudo chown -R www-www-data /var/www/example.com/wp-content/uploads
sudo chmod 755 /var/www/example.com/wp-content/uploads

这种方式配置简单,但意味着 PHP 进程对网站目录具有一定写权限。网站稳定运行后,如果希望缩小写入范围,可以将程序文件改为 root 所有,只保留 wp-content/uploads 等必要目录可写;调整前必须确认后台更新策略,否则可能导致插件和主题无法更新。

3. 创建 wp-config.php

复制配置模板:

sudo cp /var/www/example.com/wp-config-sample.php \
  /var/www/example.com/wp-config.php

打开配置文件:

sudo nano /var/www/example.com/wp-config.php

将数据库部分改为以下内容:

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'replace-with-a-strong-password' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

其中 DB_PASSWORD 必须与创建 MariaDB 用户时的密码一致。

WordPress 配置文件后面还需要一组随机密钥。可以在服务器终端执行:

curl -fsSL https://api.wordpress.org/secret-key/1.1/salt/

将命令输出的多行 define() 内容复制到 wp-config.php 中原有的密钥区域,替换原来的示例密钥。随机密钥用于登录 Cookie 和会话校验,不要在多个站点之间重复使用。

确认配置文件中存在以下结束部分:

define( 'WP_DEBUG', false );

/* That's all, stop editing! Happy publishing. */

if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}

require_once ABSPATH . 'wp-settings.php';

保存后收紧配置文件权限:

sudo chown www-www-data /var/www/example.com/wp-config.php
sudo chmod 640 /var/www/example.com/wp-config.php

如果数据库密码中包含引号、反斜杠等特殊字符,必须确认 PHP 字符串转义正确,否则会出现白屏或数据库连接错误。

五、配置 Nginx 处理 WordPress 请求

1. 写入站点配置

先备份默认配置和新建配置目录:

sudo cp -a /etc/nginx/nginx.conf \
  /root/wp-backup/nginx.conf.$(date +%F-%H%M%S)

if [ -e /etc/nginx/sites-enabled/default ]; then
  sudo mv /etc/nginx/sites-enabled/default \
    /etc/nginx/sites-enabled/default.disabled
fi

创建站点配置文件:

五、配置 Nginx 处理 WordPress 请求配图

sudo tee /etc/nginx/sites-available/example.com > /dev/null <<'NGINX'
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.php index.html;

    client_max_body_size 64M;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    location ~ /\. {
        deny all;
    }
}
NGINX

创建软链接启用站点:

sudo ln -sfn \
  /etc/nginx/sites-available/example.com \
  /etc/nginx/sites-enabled/example.com

配置中几个关键点的作用如下:

  • server_name 决定域名请求进入哪个站点;
  • root 必须与实际 WordPress 目录一致;
  • try_files 支持 WordPress 固定链接;
  • fastcgi_pass 将 PHP 请求交给 PHP 8.3-FPM;
  • client_max_body_size 控制 Nginx 允许的上传大小;
  • 禁止上传目录执行 PHP,可以降低误上传脚本被执行的风险。

2. 检查配置后再 reload

任何 Nginx 配置变更都先测试:

sudo nginx -t

预期结果:

syntax is ok
test is successful

只有测试通过后才重新加载:

sudo systemctl reload nginx

如果 nginx -t 报错,不要 reload。常见原因包括括号或分号缺失、站点文件路径错误、PHP-FPM 套接字不存在。可以查看完整配置和服务日志:

sudo nginx -T
sudo journalctl -u nginx -n 50 --no-pager

3. 按需调整 PHP 上传限制

如果网站需要上传较大的图片、主题或插件,可以先备份 PHP 配置:

sudo cp -a /etc/php/8.3/fpm/php.ini \
  /root/wp-backup/php.ini.$(date +%F-%H%M%S)

编辑配置:

sudo nano /etc/php/8.3/fpm/php.ini

确认或调整以下参数:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 80M
max_execution_time = 120

post_max_size 应大于 upload_max_filesize,否则即使 Nginx 允许 64MB,PHP 仍可能拒绝上传请求。

保存后检查 PHP-FPM 配置并重启:

sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm

如果重启失败,立即恢复刚才的备份文件,再测试并重启:

sudo cp -a /root/wp-backup/php.ini.备份时间 \
  /etc/php/8.3/fpm/php.ini

sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm

实际执行时,将 php.ini.备份时间 替换为备份目录中的真实文件名。

六、配置域名解析并申请 HTTPS

1. 添加 DNS 记录

在域名 DNS 控制台添加:

类型主机记录记录值
A@203.0.113.10
Awww203.0.113.10

将 203.0.113.10 换成轻量云服务器实际公网 IPv4。

如果域名存在指向其他服务器的旧记录,应先确认是否需要保留。若添加了 AAAA 记录但服务器没有正确配置 IPv6,部分访问者可能会优先走 IPv6 并失败,这时应删除错误的 AAAA 记录。

在服务器或本地电脑检查解析:

dig +short example.com
dig +short www.example.com

预期能看到服务器公网 IP。DNS 缓存更新时间取决于原记录 TTL,不能仅凭本机暂时解析不到就反复修改记录。

2. 先验证 HTTP 和本机 Nginx

域名尚未完全生效时,可以在服务器本机模拟域名请求:

curl -I -H 'Host: example.com' http://127.0.0.1/

预期可能是 200、301 或 302,但响应内容不应是 Nginx 默认欢迎页。

公网 DNS 生效后,再从外部网络执行:

curl -I http://example.com/
curl -I http://www.example.com/

如果返回 502 Bad Gateway,重点检查 PHP-FPM 套接字;如果返回默认 Nginx 页面,重点检查 server_name、软链接和默认站点;如果连接超时,重点检查云安全组、UFW 和 DNS。

3. 申请并启用 HTTPS

确认两个域名都能通过 HTTP 访问后,安装 Certbot:

sudo apt install -y certbot python3-certbot-nginx

先备份 Nginx 站点配置:

sudo cp -a /etc/nginx/sites-available/example.com \
  /root/wp-backup/example.com.before-certbot

申请证书并让 Certbot 修改 Nginx 配置:

sudo certbot --nginx \
  -d example.com \
  -d www.example.com

根据提示填写邮箱并同意服务条款。若询问是否将 HTTP 自动跳转到 HTTPS,正式上线的网站通常选择重定向,但必须确认 80 端口仍然可访问,因为证书验证和后续续期可能需要它。

验证证书和跳转:

curl -I http://example.com/
curl -I https://example.com/

HTTP 通常会返回 301 或 308,HTTPS 应返回 200、301 或 WordPress 安装页面,而不是证书错误。

测试自动续期流程:

sudo certbot renew --dry-run

--dry-run 只进行模拟续期,不会替换正式证书。若测试失败,先检查 80、443 端口、DNS 和 Nginx 配置,不要删除证书目录或手工改动 Certbot 管理的文件。

七、完成 WordPress 安装并进行上线验证

在浏览器打开:

https://example.com/wp-admin/install.php

填写:

  • 网站标题;
  • 管理员用户名;
  • 管理员密码;
  • 管理员邮箱;
  • 是否允许搜索引擎收录。

管理员用户名不要使用 admin,密码应使用密码管理器生成的高强度密码。安装完成后访问:

https://example.com/wp-login.php
https://example.com/wp-admin/

逐项检查以下内容。

1. 检查服务监听状态

sudo ss -lntp | grep -E ':(80|443|3306)\b'

Nginx 应监听 80 和 443。MariaDB 的 3306 应只监听本机地址,例如 127.0.0.1:3306 或本机 IPv6 地址,不应直接暴露为 0.0.0.0:3306。

2. 检查 WordPress 页面和固定链接

登录后台后进入“设置—固定链接”,选择一种固定链接结构并保存一次。然后新建一个测试页面,访问该页面的独立 URL。

如果首页能打开但固定链接返回 404,通常是 Nginx 中缺少:

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

修改后执行:

sudo nginx -t
sudo systemctl reload nginx

3. 检查上传权限

在 WordPress 后台上传一张测试图片。如果提示无法建立目录或无法写入文件,检查:

sudo ls -ld /var/www/example.com/wp-content/uploads
sudo -u www-data touch /var/www/example.com/wp-content/uploads/permission-test
sudo rm -f /var/www/example.com/wp-content/uploads/permission-test

如果 touch 失败,说明 PHP-FPM 运行用户没有写入权限。确认目录所有者为 www-data,并避免对整个系统目录执行宽泛的 chmod -R 777。

4. 检查日志

出现页面错误时,按由外到内的顺序查看日志:

sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/nginx/access.log
sudo journalctl -u php8.3-fpm -n 50 --no-pager
sudo journalctl -u mariadb -n 50 --no-pager

访问日志可以确认请求是否到达 Nginx;Nginx 错误日志用于判断静态文件、权限和 FastCGI 问题;PHP-FPM 日志用于判断 PHP 致命错误;MariaDB 日志用于判断数据库服务异常。

八、常见失败情况和处理顺序

现象优先检查通常原因
域名无法解析dig +short、A/AAAA 记录DNS 记录未生效或指向错误
页面连接超时云安全组、UFW、ss -lntp80/443 未放行或 Nginx 未启动
显示 Nginx 默认页server_name、站点软链接默认站点未停用或域名未匹配
502 Bad Gateway/run/php/、PHP-FPM 状态fastcgi_pass 路径不正确或 PHP-FPM 停止
WordPress 数据库连接错误mysql -u wpuser -p数据库名、账号、密码或主机名错误
固定链接 404Nginx try_files请求没有转交给 index.php
上传文件过大Nginx 和 php.iniclient_max_body_size 或 PHP 限制过小
HTTPS 证书申请失败DNS、80 端口、域名访问域名未指向本机或验证请求被拦截
后台白屏PHP-FPM 日志、PHP 版本PHP 致命错误、插件冲突或内存限制过小

排障时应先使用低风险检查命令,例如 curl、systemctl status、nginx -t 和日志查询。不要一遇到 502 就删除 Nginx 配置,也不要一遇到数据库错误就删除数据库。

九、备份、验收和回滚

1. 创建网站文件和数据库备份

站点完成安装后,先创建一份可识别的备份:

BACKUP_TAG=$(date +%F-%H%M%S)

sudo tar -czf \
  "/root/wp-backup/example.com-files-${BACKUP_TAG}.tar.gz" \
  -C /var/www example.com

sudo mysqldump \
  --single-transaction \
  --routines \
  --triggers \
  wordpress | gzip | sudo tee \
  "/root/wp-backup/wordpress-db-${BACKUP_TAG}.sql.gz" > /dev/null

sudo ls -lh /root/wp-backup/

mysqldump 备份的是数据库内容,网站压缩包备份的是 WordPress 程序、主题、插件和上传文件,两者缺一不可。备份文件应限制 root 读取权限,并定期复制到独立存储位置。

2. 上线验收清单

可以按下面的顺序验收:

  • cat /etc/os-release 确认系统版本;
  • systemctl is-active nginx mariadb php8.3-fpm 均为 active;
  • nginx -t 返回测试成功;
  • dig +short example.com 指向当前服务器 IP;
  • HTTP 请求能够返回跳转或页面;
  • HTTPS 访问无证书错误;
  • /wp-admin/ 可以登录;
  • 首页、测试页面和固定链接均可访问;
  • 后台上传图片成功;
  • MariaDB 3306 未暴露到公网;
  • certbot renew --dry-run 测试通过;
  • 网站文件和数据库备份均已生成。

3. 配置回滚

回滚 Nginx 配置

如果修改站点配置后 Nginx 测试失败,可以恢复备份:

sudo cp -a /root/wp-backup/example.com.before-certbot \
  /etc/nginx/sites-available/example.com

sudo nginx -t
sudo systemctl reload nginx

如果是自己后续修改的配置,先将当前文件另存一份,再覆盖恢复,避免丢失排错线索。

回滚 PHP 配置

先确认备份文件名称:

sudo ls -l /root/wp-backup/php.ini.*

恢复指定备份:

sudo cp -a /root/wp-backup/php.ini.实际备份文件 \
  /etc/php/8.3/fpm/php.ini

sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm

回滚网站文件

恢复前先备份当前异常目录,避免覆盖后无法取证:

sudo mv /var/www/example.com \
  "/var/www/example.com.failed-$(date +%F-%H%M%S)"

sudo mkdir -p /var/www
sudo tar -xzf /root/wp-backup/example.com-files-实际时间.tar.gz \
  -C /

sudo chown -R www-www-data /var/www/example.com

恢复后检查 wp-config.php、权限和 Nginx 根目录是否仍然指向 /var/www/example.com。

回滚数据库

不要直接执行 DROP DATABASE wordpress。删除生产数据库会立即丢失当前数据,只有在已经备份当前数据库并确认恢复文件可用时,才考虑替换原库。

更安全的做法是先导入到临时数据库:

九、备份、验收和回滚:回滚数据库配图

sudo mysql -e "
CREATE DATABASE wordpress_rollback
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

GRANT ALL PRIVILEGES ON wordpress_rollback.*
TO 'wpuser'@'localhost';

FLUSH PRIVILEGES;
"

zcat /root/wp-backup/wordpress-db-实际时间.sql.gz \
  | sudo mysql wordpress_rollback

确认临时数据库导入成功后,将 wp-config.php 中的数据库名由:

define( 'DB_NAME', 'wordpress' );

改为:

define( 'DB_NAME', 'wordpress_rollback' );

再访问首页和后台。验证无误后,才决定是否将临时数据库切换为正式数据库。这样可以把数据库回滚的影响控制在配置切换范围内,避免在未验证备份的情况下直接删除原数据。