WordPress部署前要准备什么?香港轻量云的系统、域名与数据库检查清单
在香港轻量云上部署 WordPress,真正需要提前确认的不是“能否上传程序”,而是系统版本、运行资源、域名解析、80/443端口、PHP-FPM、数据库账号以及可回滚备份是否全部就绪。建议先把实例准备成 Ubuntu LTS、Nginx、PHP-FPM、MariaDB 的单站点环境,再按“系统—网络—数据库—程序—验证”的顺序操作。
下面这份新手建站必看!香港轻量云 WordPress 部署完整步骤,以 Ubuntu 22.04/24.04 为参考,使用 Nginx、PHP-FPM 和 MariaDB。示例中的域名、IP、PHP版本、数据库名和密码都需要替换成自己的值;如果实例上已经运行其他网站,不要直接覆盖现有配置。
一、部署前必须确认的条件
1. 明确目标环境
建议先固定一套可维护的基础环境,避免安装过程中混用多个PHP版本或多个Web服务。
| 检查项 | 建议确认内容 | 未确认的风险 |
|---|---|---|
| 操作系统 | Ubuntu LTS,确认具体版本和架构 | 软件包名称、PHP版本和服务路径可能不同 |
| Web服务 | Nginx,确认是否已有Apache或其他站点 | 80端口冲突、配置加载错误 |
| PHP | PHP-FPM,版本应满足目标WordPress、主题和插件要求 | 出现白屏、500错误或插件不兼容 |
| 数据库 | MariaDB或MySQL,单独创建WordPress数据库用户 | 使用root账号,权限过大且难以回滚 |
| 域名 | 已能修改A记录,必要时准备www记录 | 证书申请失败或访问到旧服务器 |
| 网络 | 云平台防火墙和系统防火墙放行22、80、443 | SSH、HTTP或HTTPS无法访问 |
| 备份 | 已备份旧站文件、数据库和Nginx配置 | 失败后只能重装,无法快速恢复 |
如果是新实例,1核2GB内存可以用于访问量较小的展示型站点或测试站;包含较多插件、图片处理、后台任务的网站,通常应预留2核4GB或更多资源。这里是部署前的参考范围,不代表任何具体实例的固定配置。磁盘空间除系统和程序外,还要为图片、备份、日志和数据库增长预留空间,建议不要让使用率长期接近满盘。

2. 先确认是否存在旧站
如果实例上已经有业务网站,先查看当前服务和监听端口:
sudo ss -lntp
sudo systemctl list-units --type=service --state=running | grep -E 'nginx|apache|php|mariadb|mysql'
看到Nginx、Apache或多个PHP-FPM服务时,不要直接执行批量卸载或覆盖配置。先确认:
- 当前80和443端口由哪个进程监听;
- 已有站点的根目录在哪里;
- 当前Nginx配置是否包含多个域名;
- 是否有定时任务、反向代理或独立数据库;
- WordPress是新建站,还是替换旧站。
如果是替换旧站,必须先备份旧站文件和数据库。新建目录、新建数据库的操作风险较低,但对已有站点执行chown -R、删除配置或修改数据库表,可能影响正在运行的网站。
二、系统和权限检查
1. 查看系统版本、架构和时间
以下命令适用于基于APT的Ubuntu环境:
cat /etc/os-release
uname -m
timedatectl
hostnamectl
重点确认:
- 系统是Ubuntu,而不是其他发行版;
- 架构通常为
x86_64或aarch64,需要与软件包和已有二进制兼容; - 系统时间、时区和NTP同步状态正常;
- 当前账号能够使用
sudo。
如果时间明显错误,可能造成HTTPS证书校验失败、定时发布异常、数据库备份时间混乱。先修正系统时间,再继续部署。
2. 检查CPU、内存和磁盘
nproc
free -h
df -hT
df -ih
除了查看磁盘容量,还要关注inode使用率。大量小文件可能在容量尚未耗尽时耗尽inode,最终表现为无法创建文件、上传失败或数据库写入异常。
建议至少确认:
- 可用内存足够完成软件安装和PHP运行;
- 根分区还有明显余量;
/tmp和网站根目录可以创建文件;- 没有因为日志或旧备份造成磁盘持续增长。
如果磁盘已经超过约80%使用率,应先清理明确无用的旧安装包和日志,并保留最近备份。不要在未确认文件用途时直接删除/var/lib/mysql、网站目录或整个日志目录。
3. 检查软件包源和基础命令
sudo apt update
sudo apt install -y nginx mariadb-server mariadb-client \
php-fpm php-cli php-mysql php-curl php-gd php-mbstring \
php-xml php-zip php-intl unzip curl ca-certificates rsync
安装完成后查看PHP版本和PHP-FPM套接字:
php -v
php --ini
ls -l /run/php/
systemctl list-units --type=service 'php*-fpm.service'
不要只看php -v就认为Nginx使用了同一版本。命令行PHP和PHP-FPM可能不是同一个版本,Nginx配置中的fastcgi_pass必须指向实际存在的套接字,例如:
/run/php/php8.1-fpm.sock
/run/php/php8.2-fpm.sock
/run/php/php8.3-fpm.sock
以实际执行ls -l /run/php/看到的文件为准,不要照抄示例版本。
检查服务状态:
sudo systemctl is-enabled nginx
sudo systemctl is-enabled mariadb
sudo systemctl list-units --type=service 'php*-fpm.service'
如果服务没有启动,先查看具体错误:
sudo systemctl status nginx --no-pager
sudo systemctl status mariadb --no-pager
sudo journalctl -u nginx -n 50 --no-pager
4. 检查云防火墙和系统防火墙
香港轻量云通常可能同时存在云平台防火墙和实例内部防火墙,两层都需要检查。网站部署所需的端口通常如下:
| 端口 | 用途 | 建议 |
|---|---|---|
| 22/TCP | SSH管理 | 尽量限制为办公网络或管理IP |
| 80/TCP | HTTP访问、证书验证和跳转 | 对外开放 |
| 443/TCP | HTTPS访问 | 对外开放 |
| 3306/TCP | 数据库服务 | 单机部署通常不对公网开放 |
如果使用UFW,可以先查看状态:
sudo ufw status verbose
确认当前SSH会话仍可用、云控制台可以救援后,再执行防火墙调整:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered
启用防火墙前要确保22端口已经放行,否则可能把当前SSH连接锁在服务器外。不要为单机WordPress开放3306到公网;WordPress连接本机数据库时使用localhost即可。
三、域名解析和网络检查
1. 准备域名记录
至少确认以下内容:
- 主域名的A记录指向香港轻量云公网IPv4;
- 如果配置了AAAA记录,实例必须确实提供可用IPv6,否则应删除错误的AAAA记录;
www记录可以使用CNAME指向主域名,也可以单独配置A记录;- 证书覆盖哪些域名,Nginx的
server_name就要配置哪些域名; - 不要改动正在使用的MX、SPF、DKIM等邮件记录。
例如使用:
example.com A 203.0.113.10
www.example.com CNAME example.com
上面的IP仅为示例,不能直接使用。DNS记录的TTL可以设置为较短的示例值,例如300至600秒,便于首次切换时调整,但实际生效时间还受本地缓存和递归DNS缓存影响。
2. 从外部确认解析结果
dig +short A example.com
dig +short A www.example.com
dig +short AAAA example.com
getent hosts example.com
如果本机没有dig,可以安装:
sudo apt install -y dnsutils
判断方法如下:
- A记录没有返回结果:记录尚未生效、名称写错或未保存;
- A记录返回旧IP:域名仍指向旧服务器,或者缓存尚未更新;
- AAAA返回了不可用IPv6:部分客户端可能优先访问IPv6,导致“有些网络能打开、有些网络打不开”;
- 主域名正确、www错误:需要补充或修正www记录。
在DNS尚未完全切换前,可以使用curl --resolve直接把域名临时指向新服务器,测试Nginx虚拟主机:
curl -I --resolve example.com:80:203.0.113.10 http://example.com/
如果配置了www,也测试:
curl -I --resolve www.example.com:80:203.0.113.10 http://www.example.com/
这个方法只影响当前命令,不会修改公共DNS,适合部署前检查域名和站点配置是否匹配。
四、数据库检查和创建
1. 确认数据库服务可用
sudo systemctl is-active mariadb
sudo mariadb -e "SELECT VERSION();"
能返回版本信息,说明MariaDB服务和本地管理连接基本正常。如果使用的是MySQL服务,应将服务名和客户端命令按实际环境调整,不要同时启动两个数据库服务抢占端口。
2. 为WordPress创建独立数据库和账号
不要让WordPress使用数据库root账号。进入MariaDB:
sudo mariadb
执行以下SQL,数据库名、用户名和密码请替换:
CREATE DATABASE `wp_site`
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_site_user'@'localhost'
IDENTIFIED BY 'REPLACE_WITH_RANDOM_PASSWORD';
GRANT ALL PRIVILEGES ON `wp_site`.*
TO 'wp_site_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
密码应使用密码管理器生成,并避免在聊天记录、公开文档或网站截图中出现。若密码包含单引号等特殊字符,手工写入SQL时要注意转义;更稳妥的方式是在受控终端中交互执行。
测试新账号是否能登录:
mariadb -u wp_site_user -p -h localhost -e "SELECT 1;"
输入密码后,如果返回1,说明数据库名、用户名、密码和本地连接基本正确。若提示Access denied,重点检查:
- 用户名是否拼写一致;
- 用户的主机限制是否为
localhost; - 密码是否复制了多余空格;
- 授权是否执行并刷新;
- WordPress配置使用的数据库名是否一致。
3. 数据库权限边界
单站点部署时,WordPress用户只需要访问自己的数据库,不需要:
- 远程连接权限;
- 全局管理权限;
GRANT OPTION;- 访问其他网站的数据库。
如果已有旧站数据库,先备份再进行导入、替换或批量修改。不要为了“重装干净”直接执行DROP DATABASE,这会删除整个站点数据库,影响范围不可逆,除非已经确认备份可恢复且旧数据不再需要。
五、部署WordPress程序
1. 创建网站目录并准备文件
以下示例使用example.com,新站目录为/var/www/example.com:
sudo mkdir -p /var/www/example.com
sudo chown -R "$USER":"$USER" /var/www/example.com
cd /tmp
curl -fLO https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo rsync -a wordpress/ /var/www/example.com/
如果服务器上已有同名网站目录,不要直接执行覆盖操作。应先将旧目录打包备份,并确认新文件不会覆盖上传图片、主题、自定义配置或其他业务文件。
2. 配置Nginx站点
创建站点配置:
sudo nano /etc/nginx/sites-available/example.com
写入以下内容。fastcgi_pass中的PHP版本必须替换为实际存在的套接字:

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 ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
location = /wp-config.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
如果实际套接字是/run/php/php8.2-fpm.sock,就将配置中的php8.3-fpm.sock改为php8.2-fpm.sock。启用站点并检查配置:
sudo ln -s /etc/nginx/sites-available/example.com \
/etc/nginx/sites-enabled/example.com
sudo nginx -t
sudo systemctl reload nginx
如果sites-enabled中已经存在同名软链接,不要重复创建。nginx -t必须先返回配置测试成功,再执行reload。配置测试失败时,Nginx通常仍会继续使用旧配置,但不要在错误未修复前反复重载。
3. 设置网站目录权限
对于新建目录,可以使用Ubuntu默认的Nginx和PHP-FPM用户www-data:
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 {} \;
这组命令会改变整个网站目录的所有者和权限,只适用于已经确认是新站的目录。已有网站执行前必须先备份,并确认Nginx和PHP-FPM实际运行用户,不要在多个站点共用目录时盲目递归修改。
如果需要手动生成配置文件,可以复制模板:
sudo -u www-data cp \
/var/www/example.com/wp-config-sample.php \
/var/www/example.com/wp-config.php
然后把数据库信息填写为:
define( 'DB_NAME', 'wp_site' );
define( 'DB_USER', 'wp_site_user' );
define( 'DB_PASSWORD', 'REPLACE_WITH_RANDOM_PASSWORD' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
安全密钥建议通过WordPress安装流程自动生成,不要使用公开示例中的固定字符串。安装完成后,可以在配置文件中加入:
define( 'DISALLOW_FILE_EDIT', true );
它可以关闭后台主题和插件文件编辑入口,降低后台账号泄露后的直接改文件风险。
4. 完成Web安装
先通过HTTP访问:
http://example.com/
进入安装页面后填写:
- 站点标题;
- 管理员用户名;
- 强密码;
- 管理员邮箱;
- 数据库名:
wp_site; - 数据库用户:
wp_site_user; - 数据库密码;
- 数据库主机:
localhost。
管理员用户名不要使用过于常见的admin。安装完成后,先确认首页、/wp-admin/和一篇测试文章都能打开,再进行HTTPS切换。
5. 配置HTTPS
只有在域名已经解析到新服务器、80端口可以从公网访问后,再申请证书:
sudo apt install -y certbot python3-certbot-nginx
申请并让Certbot调整Nginx配置:
sudo certbot --nginx \
-d example.com \
-d www.example.com
执行前应备份当前站点配置,因为Certbot可能修改监听、重定向和证书相关配置。完成后检查:
sudo nginx -t
sudo systemctl reload nginx
curl -I https://example.com/
如果只配置了主域名,就不要在证书命令中加入尚未解析的www域名。HTTPS正常后,在WordPress后台确认“WordPress地址”和“站点地址”使用https://,不要在数据库中直接批量替换URL,除非已备份并明确了解序列化数据风险。
六、部署完成后的验证
1. 服务和端口验证
sudo nginx -t
sudo systemctl is-active nginx
sudo systemctl is-active mariadb
sudo ss -lntp | grep -E ':80|:443|:3306'
预期结果包括:
- Nginx配置测试成功;
- Nginx和MariaDB状态为
active; - 80或443由Nginx监听;
- 3306只监听本机或未对公网开放;
- PHP-FPM服务处于运行状态。
2. 页面和伪静态验证
curl -I http://example.com/
curl -I https://example.com/
常见的正常结果可能是:
- HTTP返回301或302,跳转到HTTPS;
- HTTPS首页返回200;
- WordPress安装阶段返回302,随后进入安装页面。
在后台新建一篇测试文章,使用“文章名”固定链接,然后直接打开文章URL。如果首页正常、文章链接404,通常是Nginx的try_files配置没有生效,而不是数据库故障。
3. 上传和数据库验证
在后台上传一张测试图片,并确认媒体库可以打开。上传失败时,同时检查:
- PHP的
upload_max_filesize; - PHP的
post_max_size; - Nginx的
client_max_body_size; - 网站目录和
wp-content/uploads权限; - 磁盘空间和inode。
数据库方面,再次执行:
mariadb -u wp_site_user -p -h localhost -e \
"USE wp_site; SHOW TABLES;"
能看到WordPress表,说明数据库账号已具备基本读写访问。不要仅凭“安装页面能打开”判断部署完成,还要验证文章写入、媒体上传、固定链接和后台登录。
七、常见失败处理顺序
排查时建议从域名和端口开始,再进入Nginx、PHP-FPM、WordPress和数据库,避免一上来修改数据库或删除文件。
| 现象 | 优先检查 | 可能原因 |
|---|---|---|
| 域名无法访问 | dig、云防火墙、UFW、80端口 | DNS未生效、端口未放行或服务未监听 |
| 打开默认Nginx页面 | server_name、站点软链接 | 域名没有匹配到目标站点配置 |
| 502 Bad Gateway | /run/php/和PHP-FPM状态 | Nginx使用了错误的PHP-FPM套接字 |
| 403 Forbidden | 网站根目录、所有者、父目录权限 | Nginx无法读取文件或目录权限过严 |
| 首页正常、文章404 | try_files配置和固定链接 | 伪静态规则缺失或配置未加载 |
| Error establishing database connection | wp-config.php和数据库登录测试 | 数据库名、账号、密码、主机名不一致 |
| 上传文件过大 | PHP上传限制、Nginx限制、磁盘 | post_max_size或client_max_body_size过小 |
| HTTPS申请失败 | DNS、80端口、域名覆盖范围 | 域名未指向本机或待申请域名未解析 |
502错误可以先执行:
ls -l /run/php/
systemctl list-units --type=service 'php*-fpm.service'
sudo tail -n 50 /var/log/nginx/error.log
如果日志提示找不到php8.3-fpm.sock,而目录中实际存在php8.2-fpm.sock,应修改Nginx配置中的套接字路径,而不是重新安装WordPress。
数据库错误可以先脱离WordPress单独验证:
mariadb -u wp_site_user -p -h localhost -e "SELECT 1;"
如果这里都无法登录,优先修复数据库账号或授权;如果这里成功而WordPress仍报错,再检查wp-config.php是否有多余空格、引号错误或数据库名拼写错误。
八、失败时的备份与回滚
1. 部署前备份
如果目标目录和数据库是新建的,可以保留安装包和配置备份;如果是替换旧站,先执行类似以下操作:
sudo tar -C /var/www \
-czf /root/example.com-files-$(date +%F-%H%M).tgz \
example.com
sudo mysqldump --single-transaction --routines --triggers \
wp_site > /root/wp_site-$(date +%F-%H%M).sql
sudo cp -a \
/etc/nginx/sites-available/example.com \
/root/example.com.nginx.bak
数据库备份命令会读取整个数据库,站点数据量较大时可能需要一定时间。备份完成后应确认文件确实存在、大小合理,并将副本保存到服务器之外。只把备份放在同一块云硬盘上,无法应对实例或磁盘整体故障。
2. 配置回滚
如果新Nginx配置上线后导致该域名访问异常,先恢复配置文件,不要删除网站数据:
sudo cp -a \
/root/example.com.nginx.bak \
/etc/nginx/sites-available/example.com
sudo nginx -t
sudo systemctl reload nginx
如果是新建站点且需要暂时下线,可以在确认软链接名称后禁用该站点:
sudo unlink /etc/nginx/sites-enabled/example.com
sudo nginx -t
sudo systemctl reload nginx
unlink只适用于确认该路径是新站点软链接的情况。执行前应保留当前配置和终端控制台入口,否则可能影响该域名访问。
3. 文件和数据库回滚
文件回滚前先停止写入或进入维护状态,避免恢复过程中产生新文件。数据库恢复会覆盖同名表中的现有数据,影响范围大,必须在确认备份版本和维护窗口后进行:
sudo mysql wp_site < /root/wp_site-YYYY-MM-DD-HHMM.sql
这不是日常故障排查命令。只有在数据库备份可读、当前数据已另行保存、并确认恢复时间点正确时,才执行数据库恢复。新站安装失败时,通常保留数据库和文件,修复Nginx、PHP或配置即可,不建议反复删除重装。
上线验收清单
- [ ] Ubuntu版本、CPU、内存、磁盘和系统时间已确认。
- [ ] PHP命令行版本与PHP-FPM实际套接字已核对。
- [ ] Nginx、PHP-FPM、MariaDB均能正常启动。
- [ ] 云防火墙和UFW已放行22、80、443,3306未对公网开放。
- [ ] 主域名和www记录均指向正确的香港轻量云公网IP。
- [ ] A记录和AAAA记录没有指向旧服务器或不可用地址。
- [ ] WordPress使用独立数据库用户,没有使用root账号。
- [ ] 数据库字符集设置为
utf8mb4。 - [ ] Nginx配置通过
nginx -t,首页返回正常状态码。 - [ ] 后台可以登录,文章、固定链接和媒体上传均已测试。
- [ ] HTTPS证书覆盖实际使用的域名,HTTP跳转策略符合预期。
- [ ] 旧站文件、数据库和Nginx配置已经备份。
- [ ] 已记录恢复方式、备份位置和当前生效配置。
完成这些检查后,WordPress部署才算具备可上线条件。若后续出现访问异常,应优先对照域名、端口、Nginx、PHP-FPM和数据库连接逐层确认,并保留现有文件和数据库,避免在没有备份的情况下进行删除或覆盖操作。



