博主干了这么多年 WordPress 部署,坦白说,这活儿说难不难,说简单也真不简单。尤其最近看到很多朋友在各种搜索“docker部署”、“nginx部署多个web项目”、“redis docker compose生产环境部署”之类的关键词,其实底层的部署思维都是相通的。今天我就把 WordPress 部署这件事从头到尾捋一遍,从方案选型、手动安装、容器化部署,到性能优化、安全加固和问题排查,一次性讲透,保证你看完能少踩几个我当年踩过的坑。
这篇攻略适合谁?刚接触服务器想自己搭站的新手,也适合已经在用虚拟主机但想迁到云服务器、或者想学 Docker 部署的技术人。我会尽量把每一步背后的“为什么”也讲清楚,而不是只丢给你一串命令。
1. 部署之前,先把方案选明白
1.1 三种主流部署方式怎么选
我见过太多人一上来就急着敲命令,结果环境装到一半发现装错了系统版本,或者后续扩展卡死。部署 WordPress 之前,先花十分钟把方案定下来,后面能省一整天的折腾时间。
目前主流的部署方式有三种:本地环境(比如 XAMPP、WAMP)、云服务器 + LNMP(Linux + Nginx + MySQL + PHP)手动搭建、以及 Docker 容器化部署。
本地环境适合开发调试,装个 XAMPP 一键启动,几分钟就能在电脑里跑起一个 WordPress。但本地环境只适合“写代码、调主题、改插件”,不适合做正式站点,因为性能和网络环境跟线上完全不是一回事。
云服务器 + LNMP 手动搭建是我最推荐新手走一遍的方式。虽然需要敲命令,但整个过程中你能真正理解 Nginx、PHP-FPM、MySQL 这三个组件是怎么协同工作的。理解了这些,以后遇到白屏、数据库连不上这类问题,你基本能猜出问题出在哪一层,不用每次靠搜索引擎救命。
Docker 容器化部署则是这几年团队协作和生产环境的标配。它的好处是环境隔离、可复制、可回滚。比如你在本地用 Docker 跑起来的 WordPress,直接推到另一台服务器上也能一模一样地跑起来。不过 Docker 有个学习曲线,对完全没有 Linux 基础的朋友来说,刚开始会有点不适应。
三者的取舍,我做成了一张表方便你对照:
| 对比维度 | 本地环境 | 云服务器 + LNMP | Docker 容器化 |
| 学习门槛 | 最低 | 中等 | 偏高 |
| 适合场景 | 开发调试 | 个人站点、小型企业站 | 团队协作、自动化运维、多站点 |
| 资源占用 | 高(本机承担) | 低 | 中等 |
| 部署速度 | 最快 | 中等 | 安装快,但理解慢 |
| 可移植性 | 差 | 一般 | 最强 |
| 维护成本 | 低 | 中等 | 中等偏高 |
我的建议很直接:如果你是想认真搭一个能长期运行的网站,别偷懒跳过手动 LNMP 这一步。哪怕你最后选择了 Docker,先手动搭一次带给你的排查能力,会在未来无数次救你于水火之中。
1.2 服务器配置怎么估算
服务器配置的问题,我看到很多人一上来就问“2核4G够不够”“1核1G能不能跑”。实际上,WordPress 对服务器资源的消耗,很大程度上取决于你有没有做好缓存、用的主题插件是否克制,以及访问量到底多大。
按我的经验给个参考:单纯跑一个 WordPress 站点,访问量不大(日均几百到一两千 PV)的情况下,1核1G 的机器配合 Nginx + PHP-FPM + Redis 缓存,是能撑住的。但如果你的主题很臃肿、插件装了几十个,1G 内存跑 PHP-FPM 和 MySQL 会非常吃力,经常出现“数据库连接错误”那种吓人的提示。
如果你打算用 Docker 跑 WordPress,我建议至少 2 核 4G。因为 Docker 本身有开销,再加上 MySQL、Redis、Nginx 这些容器,内存一下子就吃紧了。特别是 MySQL 默认会吃掉大量内存做缓存,你必须在配置里做一些限制,这个我在后面 Docker 部分会详细讲。
硬盘方面,网站源码本身很轻,一般几百 MB 到几个 GB 就够,但图片、备份文件会持续增长。建议系统盘和数据盘分开,至少预留 40GB 以上的空间。带宽更是容易被忽视的坑,之前有个朋友用 1M 带宽的机器跑站,后台传一张 5MB 的图片等了一分多钟,用户访问稍微大点的图直接卡死。如果图片量大,要么升级带宽,要么老老实实上 CDN。
域名、SSL 证书这些就不展开说了,证书直接用免费机构签发的就行,后面我会在部署上线环节讲怎么配。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. LNMP 手把手装一个 WordPress
2.1 操作系统的准备与基础组件安装
LNMP 手动搭建的第一步,是有一台干净的服务器。我习惯用 Debian 系的系统,下面命令都以 Ubuntu 22.04 为例。如果你手里的机器是 CentOS 或者别的发行版,包管理命令要做相应替换。
新服务器拿到手,第一件事是更新系统包,然后创建一个普通用户,别用 root 裸奔。虽然这里为了省事很多人直接 root 操作,但正式环境里用 root 跑 Web 服务万一被提权,那损失是不可估量的。
更新并安装基础工具:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git unzip zip vim
接下来安装 Nginx:
bash复制sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
装完后浏览器直接访问服务器 IP,如果看到 Nginx 的欢迎页,说明 Web 服务器已经起来了。
然后是 PHP 及常用扩展。WordPress 官方现在推荐 PHP 8.1 以上版本,性能比 PHP 7.4 有明显提升。Ubuntu 22.04 自带的 PHP 版本是 8.1,直接装就行:
bash复制sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-imagick php-redis
这里解释一下为什么这些扩展一个都不能少:php-mysql 是连数据库用的,php-gd 和 php-imagick 用来处理图片缩略图,php-mbstring 和多字节字符处理有关,php-xml 被很多插件依赖,php-zip 是后台安装主题插件时解压压缩包必须要的。少了任何一个,装主题的时候都会莫名其妙报错。
最后是数据库服务。我推荐用 MariaDB 替代 MySQL,因为 MariaDB 是 MySQL 的开源分支,兼容性完全没问题,而且在 Debian/Ubuntu 生态里优化得更好:
bash复制sudo apt install -y mariadb-server mariadb-client
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation
mysql_secure_installation 这个交互式脚本会引导你设置 root 密码、删除匿名用户、禁止远程 root 登录。建议全程按提示做,这是你数据库的第一道防线。
2.2 创建数据库、下载 WordPress 核心文件
数据库和 WordPress 站点是一对一的关系,所以在安装之前先把数据库创好。
登录数据库:
bash复制sudo mysql -u root -p
然后执行:
sql复制CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '这里填一个强密码';
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
这里有个细节我得强调一下:DEFAULT CHARACTER SET utf8mb4 一定要用 utf8mb4,而不是老的 utf8。因为 utf8 在 MySQL 里最多只能存 3 字节的字符,而一些 emoji 和生僻汉字是 4 字节的,如果表结构不是 utf8mb4,用户评论里插入一个 emoji 就会直接导致报错。
接下来下载 WordPress 核心文件。国外服务器可以直接从官网拉,国内服务器访问官网速度不理想的话,可以用镜像源或者后台手动上传安装包。不过最正经的路径是:
bash复制cd /var/www/html/
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress yourdomain.com
sudo chown -R www-data:www-data /var/www/html/yourdomain.com/
重点是最后一步,把目录属主改成 www-data,这是 Nginx 和 PHP-FPM 运行的用户。如果这个权限不对,后面安装向导会一直提示“需要你创建 wp-config.php 文件”或者“无法创建上传目录”。
2.3 Nginx 站点配置与伪静态规则
WordPress 的 Nginx 配置网上版本很多,但很多配置有坑。我最常用的精简配置如下,新建一个站点配置文件 /etc/nginx/sites-available/yourdomain.com.conf:
nginx复制server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/html/yourdomain.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
location = /xmlrpc.php {
deny all;
}
location ~ /\.ht {
deny all;
}
}
这段配置里最关键的是这一行:
nginx复制try_files $uri $uri/ /index.php?$args;
WordPress 的“固定链接”(比如那些以文章名命名的 URL)之所以能生效,全靠这一行把请求兜底重写到 index.php。少了它,你后台一开启固定链接,全站文章链接立刻 404。
启用配置并检查语法:
bash复制sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
2.4 浏览器端安装向导和关键配置项
到这里,一切就绪。浏览器输入你的域名或者服务器 IP,进入 WordPress 语言的安装界面。
选好语言,点击“继续”后会让你配置数据库。这里的“数据库名”填 wpdb,“用户名”填 wpuser,“密码”填刚才设置的强密码,“数据库主机”保持 localhost 不变,“表前缀”建议从默认的 wp_ 改成 wp_8k3x_ 之类的随机前缀。这个前缀能防止一类“拖库后直接用默认表名猜表”的注入攻击,虽然增加的成本很低,但对安全有实打实的好处。
配置完成之后,系统会自动生成 wp-config.php 并写入安装目录。如果这一步系统提示你没有权限自动写入,那就按它给出的模板手动创建文件,把内容粘贴进去再上传。
最后填站点标题、管理员用户名、密码和邮箱。管理员用户名千万别用 admin,这是被暴力破解的首选目标。我一般是随机生成一个不规律的用户名,密码直接用密码管理器生成的强密码。
到这里,一个裸的 WordPress 就跑起来了。前后如果顺利的话,半小时内能完成。
3. Docker 部署 WordPress 的另一种姿势
3.1 为什么值得用 Docker 来部署
很多熟悉环境下部署的朋友,现在越来越倾向用 Docker Compose 来跑 WordPress,这个方向我也强烈推荐。为什么?因为 Docker 能把 WordPress、MySQL、Nginx、Redis 这几个组件分别封装成独立的容器,彼此不污染宿主机环境。
想象一下这个场景:你在一台服务器上同时跑一个 WordPress 官网、一个旧版 PHP 项目、一个用 Node.js 写的内部工具。手动搭 LNMP 的话,三个项目对 PHP 版本的要求很可能互相冲突,处理起来想死的心都有。Docker 就完全没这个问题,每个容器用自己的镜像和依赖,互相隔离,互不干预。热搜词里“docker部署微服务项目”的思路,本质上跟这个一模一样。
Docker 的另一个大优势是可复现性。你本地写好一份 docker-compose.yml,推到测试服务器、生产服务器,无论在哪跑,行为都是一致的。这种“一次编写,到处运行”的特性,让团队协作和故障排查都轻松很多。
3.2 docker-compose.yml 配置实录
我推荐使用 Nginx 容器作反代入口,WordPress(PHP-FPM)容器跑代码,MariaDB 容器存数据库,Redis 容器做对象缓存。完整的 docker-compose.yml 如下:
yaml复制version: "3.8"
services:
nginx:
image: nginx:1.25-alpine
container_name: wp_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./wordpress:/var/www/html
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/nginx/ssl
- ./logs/nginx:/var/log/nginx
depends_on:
- wordpress
networks:
- wp_network
wordpress:
image: wordpress:6.4-php8.2-fpm-alpine
container_name: wp_app
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wpdb
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: 你的强密码
WORDPRESS_CONFIG_EXTRA: |
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', 6379);
volumes:
- ./wordpress:/var/www/html
depends_on:
- db
- redis
networks:
- wp_network
db:
image: mariadb:11.4
container_name: wp_db
environment:
MARIADB_DATABASE: wpdb
MARIADB_USER: wpuser
MARIADB_PASSWORD: 你的强密码
MARIADB_ROOT_PASSWORD: 你的root强密码
volumes:
- ./mysql:/var/lib/mysql
networks:
- wp_network
redis:
image: redis:7-alpine
container_name: wp_redis
command: redis-server --appendonly yes
volumes:
- ./redis:/data
networks:
- wp_network
networks:
wp_network:
driver: bridge
这套配置里,不同容器通过服务名互相访问,比如 WordPress 容器连数据库时填的主机名是 db 而不是 localhost,这是 Docker 网络的一个关键区别。新手最容易在这个坑里打转,总是纳闷“我在容器里为什么连不上数据库”,多半就是主机名写错了。
配置文件路径、Nginx 伪静态规则这些,跟手动 LNMP 部署时基本一样。Nginx 容器挂载的 nginx/conf.d 目录里放站点的 .conf 文件,root /var/www/html; 指向挂载到容器里的 WordPress 代码目录。
启动命令:
bash复制docker compose up -d
docker compose ps
服务起来后,浏览器访问服务器 IP 或域名,同样进入 WordPress 安装向导。到这里你会发现,Docker 部署的安装过程比手动 LNMP 更“顺滑”,因为不需要你手动装 PHP 扩展和数据库,镜像里全备齐了。
3.3 数据持久化与容器备份
用 Docker 部署最容易忽略的问题是数据持久化。容器本身是无状态的,一旦容器被删,里面的所有数据都会消失。所以一定要把关键数据通过 volumes 挂载到宿主机目录,也就是配置里 ./wordpress:/var/www/html、./mysql:/var/lib/mysql 这两行的意义。
备份的思路也很清晰,分成两部分:文件备份和数据库备份。
文件备份直接压缩挂载目录里的 WordPress 代码和上传资源:
bash复制tar -czf wordpress_backup_$(date +%F).tar.gz ./wordpress/wp-content
数据库备份用 mysqldump 导出文件:
bash复制docker compose exec db mysqldump -u root -p wpdb > wpdb_backup.sql
恢复的时候注意顺序,先恢复数据库,再恢复文件。如果只恢复了文件没恢复数据库,你会看到一个极其尴尬的“数据库连接错误”页面。
3.4 多站点部署:Nginx 反代不同域名
热搜词里“nginx部署多个web项目”是很多人卡住的点,其实在 Docker 环境下反而很好解决。思路是:宿主机只跑一个 Nginx 容器,作为所有网站的统一入口,监听 80/443 端口。然后根据不同的域名,把请求转发到不同的容器。
比如你有一个 WordPress 站点和一个静态博客,可以在 Nginx 容器配置里加两个 server 块:
nginx复制server {
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://wp_app:9000;
include /etc/nginx/proxy_params;
}
}
server {
listen 80;
server_name static.example.com;
root /var/www/static;
}
这里的关键是 proxy_pass http://wp_app:9000,把来自 blog.example.com 的请求交给 WordPress 容器的 PHP-FPM 处理。要注意,容器之间的通信必须在同一个 Docker 网络里才能走服务名互相访问。
4. 上线前的性能优化与安全加固
4.1 三层性能优化:页面缓存、对象缓存、数据库
很多人装完 WordPress 就急着上线,结果访问量稍微一起来,服务器就喘不过气。其实 WordPress 优化的核心思路非常简单:减少 PHP 执行、减少数据库查询、多命中缓存。
第一层是页面缓存,也就是把整张 HTML 页面缓存下来。使用 Nginx 的 fastcgi_cache,能用极小的开销扛住大量访问。也可以直接用插件,比如 W3 Total Cache 或 WP Super Cache,生成静态 HTML 文件,对动态请求做“短路”处理。
第二层是对象缓存,尤其当站点使用了很多复杂插件时非常有效。对象缓存把数据库查询结果存到 Redis 里。具体做法是部署一个 Redis 容器,然后在 wp-config.php 里加两行常量(如果你用插件,在后台填连接信息也行):
php复制define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
装上 Redis Object Cache 插件并启用,之后就能在后台看到命中率这个指标。我见过优化前后对比明显的案例,响应时间从 2 秒降到 200 毫秒以内,数据库查询次数少了 90% 以上。
第三层是数据库优化。即使有了缓存,也不能让数据库裸奔。我推荐做两件事:定期清理 wp_options 表中大量无用的 transient 临时数据;给常规查询建索引。加索引这事不用自己写 SQL,用插件比如 Query Monitor 分析慢查询,逐条处理就行。
4.2 安全兜底:权限、wp-config.php、登录防护和更新策略
安全是部署里最不能偷懒的部分。我先说权限,目录权限的核心原则是“Web 用户只需要写自己必须写的路径”。
我一般这样设置:
bash复制find /var/www/html/yourdomain.com -type d -exec chmod 755 {} \;
find /var/www/html/yourdomain.com -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www/html/yourdomain.com/wp-content
chmod -R 775 /var/www/html/yourdomain.com/wp-content/uploads
另外,安装完成后一定要确认 wp-config.php 的权限,建议设为 600,只允许运行 PHP 的用户读取,减少数据库密码泄露的风险。
登录防护方面,WordPress 后台默认的 /wp-login.php 是暴力破解的重灾区。解决办法是限制登录失败次数、开启验证码,或者直接把登录地址改掉。改登录地址用插件比如 WPS Hide Login,能极大减少恶意扫描。
版本更新策略上,我个人的习惯是:安全和维护版本更新必开,大的功能版本更新先在测试环境跑一遍再上正式站。主题和插件更新同样如此,更新前一定要备份,这几乎是血泪教训换来的。
4.3 备份与恢复的自动化
备份这件事,不做等于白做。我见过太多站点一挂就全没了,问起来都是“知道要备份,但一直没动手”。
最简单的自动化方案是写一个 cron 脚本,每天备份数据库,每周打包全站文件。以 Docker 部署为例,备份脚本可以长这样:
bash复制#!/bin/bash
BACKUP_DIR="/data/backups"
mkdir -p $BACKUP_DIR
docker compose exec -T db mysqldump -u root -p'你的root密码' wpdb > $BACKUP_DIR/db_$(date +%F).sql
tar -czf $BACKUP_DIR/wp_files_$(date +%F).tar.gz ./wordpress
# 删除30天前的备份
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
然后加入 crontab:
bash复制0 2 * * * /root/backup_script.sh >> /var/log/wp_backup.log 2>&1
这个脚本每天凌晨 2 点执行,备份数据库和文件,同时自动清理超过 30 天的旧备份。建议定期做一次恢复演练,把备份文件恢复到一台临时机器上验证可用性,不然真到灾难发生时才发现备份文件损坏,那才是最绝望的。
5. 常见问题排查与高频踩坑
5.1 高频问题速查表
部署和日常运维中遇到的问题,我整理成了一张速查表,方便你遇到的时候快速定位:
| 现象 | 可能原因 | 排查思路与解法 |
|---|---|---|
| 安装页面报“无法创建 wp-config.php” | 目录权限不对 | 调整目录属主为 www-data,或手动创建 wp-config.php |
| 全站显示“数据库连接错误” | 数据库服务没起、密码错误或容器主机名写错 | 检查数据库容器/服务状态,核对 wp-config.php 中 DB_HOST、账号密码 |
| 开启固定链接后文章页 404 | Nginx 没有配置 try_files 伪静态规则 | 在 server 块中加入 try_files $uri $uri/ /index.php?$args; |
| 上传图片时提示“无法创建目录” | wp-content/uploads 权限不足 | 创建 uploads 目录并授予 www-data/容器用户写权限 |
| 后台打开缓慢,甚至 504 | PHP-FPM 进程数不够或内存不足 | ps aux 查看 php-fpm 占用,调整 pm.max_children,升级内存 |
| 前台页面一片空白 | PHP 错误被隐藏或插件主题冲突 | 开启 WP_DEBUG 定位错误,临时切换默认主题和禁用插件 |
| 邮件发送失败 | 服务器 25 端口被云厂商默认封禁 | 安装 SMTP 插件,使用企业邮箱的 SMTP 服务发信 |
| 被反复扫描后台登录地址 | 默认 wp-login.php 暴露 | 安装 WPS Hide Login 修改登录地址,限制登录失败次数 |
5.2 目录权限踩坑实录
权限问题是我见过新手栽跟头最多的点。有一个很典型的案例:有次帮朋友排查一个问题,站点后台能正常访问,但前台首页只显示几个大字“There has been a critical error on your website”。
这个提示是 WordPress 5.2 以后的“致命错误保护机制”弹出来的。开启排错模式才能真正看到原因。方法是在 wp-config.php 中加入:
php复制define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
开启后,错误信息会写入 wp-content/debug.log,不会直接展示给访客。我那次排查时发现日志里到处是 failed to open stream: Permission denied,问题就出在 wp-content/cache 目录的属主不对。用 chown -R www-data:www-data 重置目录所属关系之后,问题立刻消失。
这里有个经验之谈:每次手动上传插件、主题或者迁移站点之后,一定要检查一遍目录权限,否则大概率要出“能访问后台但不能读缓存/不能传图片”之类的诡异问题。
5.3 伪静态规则和 CDN 带来的连锁问题
固定链接 404 的问题在手动 LNMP 部署里几乎人人都会遇到一次。根本原因是 Apache 环境下的 .htaccess 规则在 Nginx 下不生效,而 Nginx 的伪静态规则需要手工配置在 server 块里。解决办法就是我上面配置里那一行 try_files。
另外一个容易被轻视的问题来自 CDN。很多人上线后给站点配置了 CDN,结果改完主题或发布新文章后,用户看到的还是旧页面。这不是 WordPress 的问题,而是 CDN 缓存没有刷新。所以上线 CDN 之前,建议先在后台安装一个缓存管理插件,在发布文章时自动刷新 CDN 缓存。
我还遇到过一些更隐蔽的情况:CDN 回源协议设置错误导致后台 HTTPS 失效,或者 CDN 缓存了后台登录页面导致登录后跳转异常。这些排查起来非常费劲,建议在排查线上问题时,第一步先“绕过 CDN”,直接修改本机 hosts 文件把域名解析到源站 IP,看问题是否依然存在。如果源站正常而走 CDN 不正常,那问题就在 CDN 配置上,重点检查缓存规则和回源设置。
5.4 数据库连接问题深挖
“数据库连接错误”这个提示,在手动环境、Docker 环境里都极其常见,而且原因各不相同。手动环境里最常见的是 MySQL/MariaDB 服务没启动,或者密码写错了。用以下命令快速确认:
bash复制systemctl status mariadb
sudo mysql -u wpuser -p wpdb
如果能通过命令行连接数据库,再检查 WordPress 的配置文件,问题基本就能定位。Docker 环境里则更多是主机名写错,比如在 WordPress 容器的 wp-config.php 里把 DB_HOST 写成了 localhost,结果容器试图连接自己,当然是空手而归。正确写法是写数据库服务名,比如 db。
还有一类情况是数据库内存不足,导致服务反复重启。特别在小内存机器上,MySQL/MariaDB 默认的配置比较激进,吃内存太狠。解决方法是在数据库配置文件里调低 innodb_buffer_pool_size,比如 1G 内存的机器设置为 64M 或者 128M 就很够用了。别小看这个参数,我在 1G 内存的机器上把 MySQL 默认的 128M 调低到 64M 之后,整台机器都变顺畅了。
写在最后:部署检查清单与下一步扩展
最后再分享一个我自己的习惯。每次部署完一个 WordPress 站点,我都会照着下面的清单走一遍,确认基础功能全部就绪之后再交付:
- 能正常登录后台,固定链接结构已设置并访问正常。
- 上传一张图片测试,确认
uploads目录可写、缩略图能生成。 - PHP 错误日志已开启,且
debug.log文件可写。 - 页面缓存和 Redis 对象缓存均已配置并生效。
- SSL 证书已配置,全站强制 HTTPS。
- 备份任务已加入 cron,并手动执行过一次验证备份文件有效。
- 数据库和后台账号密码均为强密码且不重复。
- 默认登录地址已隐藏,登录失败次数限制已启用。
按这个清单走完,基本上一个可以安心上线长期运行的 WordPress 站点就成型了。
如果你有更高的诉求,比如做多语言站点、短视频站、电商站,或者想结合搜索里那些热门的“本地部署AI大模型”思路,给你的站点加一点智能功能,那后续的扩展空间就更大了。部署本身只是第一步,把它做得顺手、稳定、能扛住流量,才是真正考验细节的地方。
