之前我们入手了那台年付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

有问题欢迎留言讨论,觉得有用记得收藏分享!