21元VPS搭建轻量动态博客!运行Typecho性能出色,完全够用
之前我们入手了那台年付2.99美元(约21元)的VPS,有小伙伴问:"这么小的内存(512MB)能不能搭建动态博客?"
答案是:完全可以,而且跑的飞快!
关键是要避开"资源杀手"——MySQL数据库和宝塔面板,改用 Typecho + SQLite + Caddy 这套轻量组合,博客运行流畅,内存占用极低。
今天这篇保姆级教程,手把手教你在小内存VPS上搭建专属博客。
为什么选择这套方案?
Typecho
国产轻量级博客程序,核心代码精简,功能完整,相比WordPress资源占用显著更低。
SQLite
文件型数据库,无需后台进程。MySQL即使空载也要占用150MB+内存,而SQLite内存占用通常低于5MB,Typecho原生支持。
Caddy
现代化Web服务器,自动处理HTTPS证书,配置比Nginx简单得多。
准备工作
1. VPS基础配置
- 系统:建议使用自带的 Debian 12(稳定且软件包新)
- 虚拟化:LXC架构(本教程基于此)
初始化:连接上VPS,建议先更新系统
apt update && apt upgrade -y
2. 域名与DNS配置
- 域名托管:托管在 Cloudflare(以下简称CF)
- DNS解析:
- 添加 AAAA记录,指向VPS的IPv6地址
- 开启CF代理(小黄云图标),这样让IPv4用户也能访问你的博客
- SSL/TLS设置(重要):
- 进入CF后台 → SSL/TLS
- 加密模式选择 Full (strict)
- 这样可以避免重定向循环问题
注意:开启CF代理后,实际HTTPS证书由Cloudflare提供,你的VPS只需要正确配置即可。CF免费版有一定带宽限制,个人博客完全够用。
3. 安全加固(可选但推荐)
# 安装防火墙
apt install ufw -y
# 开放SSH(如果你修改了SSH端口,记得改成对应端口号)
ufw allow 22/tcp
# 开放HTTP和HTTPS
ufw allow 80/tcp
ufw allow 443/tcp
# 启用防火墙
ufw enable
第一步:安装Caddy和PHP
我们不使用面板,直接安装必要组件,系统更纯净稳定。
1. 安装Caddy(Web服务器)
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
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 -y
2. 安装PHP及扩展
Debian 12默认提供PHP 8.2,我们需要安装PHP主程序和必要扩展:
apt install php-fpm php-sqlite3 php-mbstring php-curl php-xml php-zip -y
安装完成后,检查PHP-FPM版本:
php -v
记住版本号(通常是8.2),后面配置Caddy时会用到。
第二步:配置Caddy
告诉Caddy如何处理PHP文件和静态资源。
1. 编辑配置文件
nano /etc/caddy/Caddyfile
2. 写入配置
删除原有内容,粘贴以下配置(替换成你的域名):
你的域名.com {
# 网站根目录
root * /var/www/html
# 开启gzip压缩
encode gzip
# 处理PHP文件(注意版本号,如果你的是8.1或8.3,需要修改)
php_fastcgi unix//run/php/php8.2-fpm.sock
# 提供静态文件服务
file_server
# 日志记录(可选,方便排查问题)
log {
output file /var/log/caddy/access.log
}
}
按 Ctrl+O 保存,Ctrl+X 退出。
重要说明:如果你的PHP版本不是8.2,修改配置中的版本号使用CF代理后,Caddy会自动处理来自CF的HTTPS流量
按 Ctrl+O 保存,Ctrl+X 退出。
3. 重启Caddy
systemctl restart caddy
检查状态:
systemctl status caddy
看到绿色的 active (running) 就说明成功了。
第三步:部署Typecho
1. 下载Typecho
# 创建网站目录
mkdir -p /var/www/html
cd /var/www/html
# 下载最新正式版
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
# 如果没有unzip,先安装
apt install unzip -y
# 解压
unzip typecho.zip
# 删除压缩包
rm typecho.zip
2. 设置权限(关键步骤)
# 将网站目录所有权交给Web服务器用户
chown -R www-data:www-data /var/www/html为什么要这么做?
Typecho需要在usr目录创建SQLite数据库文件,如果权限不对,安装会失败。
第四步:完成Web安装
1. 访问安装页面
在浏览器中打开:https://你的域名.com
你会看到Typecho的欢迎界面,点击"我准备好了,开始下一步"。
2. 配置数据库(关键)
- 数据库适配器:选择 SQLite (PDO)
(如果看不到这个选项,说明PHP的SQLite扩展没装好,回到第一步重新安装) - 数据库文件路径:保持默认
./usr/typecho.db即可
3. 创建管理员账号
填写:
- 用户名(建议不要用admin,增加安全性)
- 密码(使用强密码)
- 邮箱
点击"确认,开始安装",几秒钟后安装完成!
4. 重要的安全操作
安装完成后,立即删除安装目录:
rm -rf /var/www/html/install
效果验证
1. 访问博客
打开首页:https://你的域名.com
访问后台:https://你的域名.com/admin/
2. 检查资源占用
回到SSH终端,查看内存使用:
free -h
你会发现,运行Typecho博客的内存占用通常只有60-80MB左右:
- Caddy: 约10-15MB
- PHP-FPM: 约30-40MB
- SQLite: 几乎不占内存
- 系统基础服务: 约20MB
对于512MB内存的VPS,剩余空闲内存还能运行其他轻量服务。
故障排查
问题1:访问出现502错误
原因:PHP-FPM没启动或Socket路径错误
解决方法:
# 检查PHP-FPM状态
systemctl status php8.2-fpm
# 如果未启动,手动启动
systemctl start php8.2-fpm
# 设置开机自启
systemctl enable php8.2-fpm
# 确认Socket文件存在
ls -la /run/php/问题2:安装时提示无法创建数据库
原因:目录权限不足
解决方法:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
问题3:Caddy无法启动
查看详细错误:
journalctl -u caddy -n 50常见原因:
- Caddyfile语法错误(检查引号、括号)
- 端口被占用(检查是否有其他Web服务器)
问题4:看不到SQLite选项
原因:PHP的SQLite扩展未安装
解决方法:
apt install php-sqlite3 -y
systemctl restart php8.2-fpm
systemctl restart caddy进阶优化建议
1. 后台路径保护
默认后台路径 /admin/ 容易被扫描,建议修改:
编辑 config.inc.php,添加:
/** 自定义后台路径 */
define('__TYPECHO_ADMIN_DIR__', '/你的自定义路径/');
2. 定期备份
重要文件位置:
- 数据库:
/var/www/html/usr/typecho.db - 配置文件:
/var/www/html/config.inc.php - 上传文件:
/var/www/html/usr/uploads/
简单备份脚本:
#!/bin/bash
tar -czf /root/typecho-backup-$(date +%Y%m%d).tar.gz /var/www/html
3. 启用Cloudflare缓存
进入CF后台 → 缓存 → 配置:
- 浏览器缓存TTL:推荐4小时
- 页面规则:对静态资源(图片、CSS、JS)启用缓存
总结
通过 Typecho + SQLite + Caddy 的组合,我们成功让一台21元年付的小内存VPS运行起了功能完整的动态博客,内存占用低,性能表现优秀。
关键技术点回顾:
- ✅ 使用SQLite避免MySQL的内存消耗
- ✅ Caddy简化了HTTPS配置
- ✅ Cloudflare代理让IPv6 VPS支持IPv4访问
- ✅ 合理的权限设置保证安装成功
数据备份提示:
虽然SQLite稳定可靠,但定期备份仍然重要。下期将介绍如何使用Alist将VPS变成私人网盘,实现自动备份到Google Drive或OneDrive。
附录:常用命令
# 重启服务
systemctl restart caddy
systemctl restart php8.2-fpm
# 查看日志
journalctl -u caddy -f
tail -f /var/log/caddy/access.log
# 查看资源占用
free -h
top
# 测试Caddyfile语法
caddy validate --config /etc/caddy/Caddyfile
有问题欢迎留言讨论,觉得有用记得收藏分享!