64MB NAT VPS部署Typecho博客完整教程
IPv6 + Cloudflare + Caddy + PHP-FPM + SQLite
一、前言
不少 NAT VPS 配置都很极限:
- 64MB 内存
- IPv4 只有端口
- 提供完整 IPv6
- 性能一般,但便宜、稳定
这种机器:
- Docker 基本没戏
- MySQL 吃内存
- WordPress 很容易炸
但只要技术栈选对: Alpine + Caddy + PHP-FPM + SQLite + Typecho 64MB 也能长期稳定运行。 这篇就是一次从 0 到上线的完整实战记录。
二、整体架构
浏览器 ↓ HTTPS Cloudflare(IPv6,橙云) ↓ HTTPS Caddy(443) ↓ FastCGI PHP-FPM(127.0.0.1:9000) ↓ Typecho + SQLite
组件选择理由
| 组件 | 原因 |
|---|---|
| Alpine | 极简、省内存 |
| Caddy | 自动 HTTPS,配置简单 |
| PHP-FPM | 比 Apache/Nginx + mod_php 更省 |
| SQLite | 单文件数据库 |
| Typecho | 中文博客里最轻量 |
三、前置条件
服务器
- Alpine Linux
- ≥ 512MB 磁盘
- 完整 IPv6
- NAT IPv4(可忽略)
Cloudflare
- DNS:AAAA → VPS IPv6
- 状态:Proxied(橙云)
- SSL/TLS:Full 或 Full (strict)
!!!不要用 Flexible(会无限重定向)
四、系统初始化 & Swap
更新系统
apk updateapk upgrade开启 swap(防 OOM)
dd if=/dev/zero of=/swapfile bs=1M count=256chmod 600 /swapfilemkswap /swapfileswapon /swapfileecho '/swapfile none swap sw 0 0' >> /etc/fstabswap 是保命用的,不是提速工具。
五、安装 PHP-FPM(极限配置)
安装 PHP 及扩展
apk add \php83 php83-fpm php83-pdo php83-pdo_sqlite php83-sqlite3 \php83-json php83-mbstring php83-xml php83-curl php83-gd \php83-ctype php83-session php83-tokenizer php83-fileinfo启动服务
rc-update add php-fpm83rc-service php-fpm83 start限制进程数(关键)
sed -i 's/^pm = .*/pm = static/' /etc/php83/php-fpm.d/www.confsed -i 's/^pm.max_children = .*/pm.max_children = 1/' /etc/php83/php-fpm.d/www.confrc-service php-fpm83 restart64MB 只能跑 1 个 PHP worker,不限必炸。
六、安装 Caddy
apk add caddyrc-update add caddy七、部署 Typecho
创建目录
mkdir -p /var/www/typechocd /var/www/typecho下载官方版本
apk add unzipwget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zipunzip typecho.ziprm -f typecho.zip设置权限
chown -R nobody:nobody /var/www/typecho/usrchmod -R 755 /var/www/typechoPHP-FPM 默认以 nobody 运行:
ps -o user,group,comm -C php-fpm83八、配置 Caddy
cat > /etc/caddy/Caddyfile <<'EOF'your-domain.example { root * /var/www/typecho encode gzip php_fastcgi 127.0.0.1:9000 file_server}EOF启动并验证:
caddy validate --config /etc/caddy/Caddyfilerc-service caddy start确认监听:
ss -lntp | grep ':443'九、安装 Typecho
浏览器访问: https://你的域名 数据库配置: 类型:SQLite 前缀:typecho_ 路径:默认自动生成即可
十、手动创建 config.inc.php(常见坑)
自动创建失败时:
cat > /var/www/typecho/config.inc.php <<'EOF'<?phpdefine('__TYPECHO_ROOT_DIR__', dirname(__FILE__));define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');define('__TYPECHO_THEME_DIR__', '/usr/themes');define('__TYPECHO_ADMIN_DIR__', '/admin/');require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php';\Typecho\Common::init();$db = new \Typecho\Db('Pdo_SQLite', 'typecho_');$db->addServer(array ( 'file' => '/var/www/typecho/usr/你的数据库文件.db',), \Typecho\Db::READ | \Typecho\Db::WRITE);\Typecho\Db::set($db);EOF权限修正:
chown nobody:nobody /var/www/typecho/config.inc.phpchmod 644 /var/www/typecho/config.inc.php至此,一个 64MB Alpine NAT VPS + IPv6 的 Typecho 博客就稳定跑起来了。 你可以访问:64MB来查看