「WordPress」轻量部署:Caddy&云数据库
这一次我们来尝试些不一样的,有没有设想过如果你有一台配置较低的 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 -yapt install -y git curl unzip gnupg2第二步:安装 PHP 及 MySQL 驱动
推荐使用 PHP 8.2,它比旧版本性能更好且支持现代特性(Debian 12 默认源即包含此版本)。安装 php8.2-mysql 以连接数据库。由于没有本地数据库,PHP 及其扩展占用的资源非常少,同时安装 php-redis 备用。
-
添加 PHP 8.2 软件源 首先安装必要的依赖并添加 GPG 密钥和仓库地址:
Terminal window # 更新系统并安装添加源所需的工具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 及其必要扩展 现在可以直接指定版本号进行安装:
Terminal window # 安装 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 需要用):
/run/php/php8.2-fpm.sock ls /run/php/php8.2-fpm.sock
第三步:安装 Caddy 2 Web 服务器
Caddy 会自动为你申请和续期 SSL 证书。
# 添加官方源apt install -y debian-keyring debian-archive-keyring apt-transport-httpscurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
# 安装apt updateapt install caddy第四步:部署 WordPress
# 创建目录mkdir -p /var/www/wordpresscd /var/www/wordpress
# 下载并解压wget https://wordpress.org/latest.tar.gztar -xzvf latest.tar.gz --strip-components=1rm latest.tar.gz第五步:配置 wp-config.php 连接 Supabase
这是最关键的一步。Aiven 是远程数据库,且强制 SSL,我们需要配置 WordPress 以支持 SSL 连接。
-
复制配置样本:
Terminal window cd /var/www/wordpresscp wp-config-sample.php wp-config.php -
编辑配置文件:
Terminal window nano wp-config.php -
填入 Aiven 信息: 找到数据库定义部分,替换为以下内容(请对照 Aiven 控制台填写):
// --- Aiven MySQL 配置开始 ---define( 'DB_NAME', 'defaultdb' ); // Aiven 免费版默认库名通常是 defaultdbdefine( 'DB_USER', 'avnadmin' ); // 默认用户名define( 'DB_PASSWORD', '你的Aiven强密码' );// 注意:端口通常不是 3306,请仔细检查 Aiven 提供的 Host 和 Portdefine( '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/wordpresschmod -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 updateapt 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-serversystemctl 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 远程读数据库了,直接从本地内存读取。
部分内容可能已过时