这一次我们来尝试些不一样的,有没有设想过如果你有一台配置较低的VPS例如1C0.5G,这时候如果想体验完整的WordPress,光是安装MySQL就有可能压垮这台VPS,而近年来Aiven又提供了免费的MySQL数据库,为了使配置及占用简单到极致,我们还可以将Nginx换成Caddy。当然最适合低配VPS的还是hexo、hugo等静态站点,写本文纯粹是为了折腾和验证这套方案的可行性,玩玩就行,可千万不要作为实际生产哦!
部署后内存(含系统)占用200mb,迷你小鸡也可以尝试 WordPress !
Caddy 2+WordPress+Aiven (MySQL)+Redis 极简部署指南
核心优势
极低负载:VPS 不需要运行最吃内存的 MySQL 进程,1C1G 的机器跑 PHP-FPM + Caddy 绰绰有余。
Caddy 加持:配置比 Nginx 简单十倍,自动续签 HTTPS。
前置准备
服务器:Debian 11或其他主流Linux发行版
域名:已解析到服务器 IP。
Aiven 账号:
注册并创建一个 Free Tier MySQL 服务。
获取连接信息:
Host(地址),Port(端口),User(通常是 avnadmin),Password,Database(通常是 defaultdb)。注意:Aiven 强制要求 SSL 连接,WordPress 需要开启相关配置(下文会讲)。
WordPress本体安装
第一步:系统更新与基础环境
首先确保系统干净且最新。
apt update && apt upgrade -y
apt install -y git curl unzip gnupg2第二步:安装 PHP 及 MySQL 驱动
推荐使用 PHP 8.2,它比旧版本性能更好且支持现代特性(Debian 12 默认源即包含此版本)。安装 php8.2-mysql 以连接数据库。由于没有本地数据库,PHP 及其扩展占用的资源非常少,同时安装 php-redis 备用。
添加 PHP 8.2 软件源 首先安装必要的依赖并添加 GPG 密钥和仓库地址:
# 更新系统并安装添加源所需的工具 apt update && apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 # 添加 Sury PHP 源 echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list # 导入 GPG 密钥 curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg # 更新源列表 apt update安装 PHP 8.2 及其必要扩展 现在可以直接指定版本号进行安装:
# 安装 PHP 及其必要扩展 apt install -y php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-imagick php8.2-mbstring php8.2-xml php8.2-zip php8.2-intl php-redis
关键检查: 确认 PHP-FPM 运行状态及 Socket 路径(Caddy 需要用):
ls /run/php/php8.2-fpm.sock # 输出应显示:/run/php/php8.2-fpm.sock
第三步:安装 Caddy 2 Web 服务器
Caddy 会自动为你申请和续期 SSL 证书。
# 添加官方源
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
# 安装
apt update
apt install caddy第四步:部署 WordPress
# 创建目录
mkdir -p /var/www/wordpress
cd /var/www/wordpress
# 下载并解压
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz --strip-components=1
rm latest.tar.gz第五步:配置 wp-config.php 连接 Supabase
这是最关键的一步。Aiven 是远程数据库,且强制 SSL,我们需要配置 WordPress 以支持 SSL 连接。
复制配置样本:
cd /var/www/wordpress cp wp-config-sample.php wp-config.php编辑配置文件:
nano wp-config.php填入 Aiven 信息: 找到数据库定义部分,替换为以下内容(请对照 Aiven 控制台填写):
// --- Aiven MySQL 配置开始 --- define( 'DB_NAME', 'defaultdb' ); // Aiven 免费版默认库名通常是 defaultdb define( 'DB_USER', 'avnadmin' ); // 默认用户名 define( 'DB_PASSWORD', '你的Aiven强密码' ); // 注意:端口通常不是 3306,请仔细检查 Aiven 提供的 Host 和 Port define( 'DB_HOST', 'mysql-xxxxxxxx.aivencloud.com:端口号' ); define( 'DB_CHARSET', 'utf8' ); define( 'DB_COLLATE', '' ); // --- 关键:开启 SSL 连接 --- // Aiven 强制 SSL,这一行必须加,否则连不上 define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL ); // --- 配置结束 --- // --- Redis 配置 (预埋,如果使用了Redis插件) --- define('WP_CACHE', true);
生成安全密钥: 访问 WordPress Salt Generator,将生成的内容覆盖配置文件中的
AUTH_KEY等部分。保存并退出 (
Ctrl+O->Enter->Ctrl+X)。
第六步:权限修正
这步如果不做,你将无法上传图片,也无法安装插件。
chown -R www-data:www-data /var/www/wordpress
chmod -R 755 /var/www/wordpress第七步:配置 Caddy 站点
编辑 Caddy 配置文件:
nano /etc/caddy/Caddyfile清空原内容,填入以下内容(替换你的域名):
blog.example.com {
# 网站根目录
root * /var/www/wordpress
# 启用 Gzip 压缩
encode gzip
# PHP 处理
php_fastcgi unix//run/php/php8.2-fpm.sock
# 静态文件服务
file_server
# 简单的日志
log {
output file /var/log/caddy/wordpress.log
}
}
重启 Caddy:
systemctl reload caddy现在,打开浏览器访问你的域名,你应该能直接看到 WordPress 的语言选择界面。
配置 Redis 本地缓存
因为数据库在云端(虽然 Aiven 很快,但毕竟有网络延迟),每次打开网页都要去云端查数据太慢了。Redis 能把查到的数据缓存在 VPS 本地内存里,下一个人访问时直接从本地内存读,速度会有质的飞跃。
为了防止 Redis 把内存吃光导致死机,需要进行一点“微调”。
第一步:安装 Redis 服务端
虽然我们在第一步里安装了 php-redis(这是 PHP 和 Redis 对话的驱动),但我们还没安装 Redis 本体。
apt update
apt install redis-server -y第二步:配置 Redis(防爆内存关键步骤)
这一步非常重要! 默认的 Redis 可能会吃光你的内存。要限制它最多只能用一小部分内存(比如 128MB,对 WordPress 对象缓存绰绰有余)。
编辑配置文件:
nano /etc/redis/redis.conf按 Ctrl + W 搜索配置项,修改(或在文件末尾添加)以下两行:
限制内存: 找到
maxmemory(默认通常是被注释的),去掉#并改为:maxmemory 128mb(对于 0.5G 内存的 VPS,给 Redis 128MB 足够缓存成千上万个对象了)
设置淘汰策略: 当内存满了怎么办?我们要让它自动删除最旧的缓存。找到
maxmemory-policy,改为:maxmemory-policy allkeys-lru
保存并退出 (Ctrl+O -> Enter -> Ctrl+X)。
第三步:重启 Redis 并开机自启
systemctl restart redis-server
systemctl enable redis-server检查是否运行正常(应该显示 Active: active (running)):
systemctl status redis-server(按 q 退出查看)
第四步:在 WordPress 中启用缓存
现在后端准备好了,我们需要告诉 WordPress 去使用它。推荐使用业内最标准的插件:Redis Object Cache。
登录 WordPress 后台。
进入
插件->安装插件。搜索
Redis Object Cache(作者是 Till Krüss)。安装并启用。
关键一步:启用后,点击插件界面的 "Enable Object Cache" 按钮。
第五步:验证是否生效
看状态: 在 WordPress 后台,点击
设置->Redis。 你应该看到 Status: Connected,并且下面的 Key 和 Memory 数据应该会有变化(不再是 0)。看速度: 随意点击几个后台页面或前台文章。你会发现,第一次点可能稍微卡顿(因为在写入缓存),但第二次点击同样的页面,几乎是秒开,因为此时不需要去 Aiven 远程读数据库了,直接从本地内存读取。