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

WordPress部署前要准备什么?香港轻量云的系统、域名与数据库检查清单

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

在香港轻量云上部署 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端口冲突、配置加载错误
PHPPHP-FPM,版本应满足目标WordPress、主题和插件要求出现白屏、500错误或插件不兼容
数据库MariaDB或MySQL,单独创建WordPress数据库用户使用root账号,权限过大且难以回滚
域名已能修改A记录,必要时准备www记录证书申请失败或访问到旧服务器
网络云平台防火墙和系统防火墙放行22、80、443SSH、HTTP或HTTPS无法访问
备份已备份旧站文件、数据库和Nginx配置失败后只能重装,无法快速恢复

如果是新实例,1核2GB内存可以用于访问量较小的展示型站点或测试站;包含较多插件、图片处理、后台任务的网站,通常应预留2核4GB或更多资源。这里是部署前的参考范围,不代表任何具体实例的固定配置。磁盘空间除系统和程序外,还要为图片、备份、日志和数据库增长预留空间,建议不要让使用率长期接近满盘。

一、部署前必须确认的条件 / 1. 明确目标环境配图

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/TCPSSH管理尽量限制为办公网络或管理IP
80/TCPHTTP访问、证书验证和跳转对外开放
443/TCPHTTPS访问对外开放
3306/TCP数据库服务单机部署通常不对公网开放

如果使用UFW,可以先查看状态:

sudo ufw status verbose

确认当前SSH会话仍可用、云控制台可以救援后,再执行防火墙调整:

二、系统和权限检查 / 4. 检查云防火墙和系统防火墙配图

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版本必须替换为实际存在的套接字:

五、部署WordPress程序 / 2. 配置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 ~* /(?: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无法读取文件或目录权限过严
首页正常、文章404try_files配置和固定链接伪静态规则缺失或配置未加载
Error establishing database connectionwp-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和数据库连接逐层确认,并保留现有文件和数据库,避免在没有备份的情况下进行删除或覆盖操作。