64MB博客!
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 update
apk upgrade开启 swap(防 OOM)
dd if=/dev/zero of=/swapfile bs=1M count=256
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/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-fpm83
rc-service php-fpm83 start限制进程数(关键)
sed -i 's/^pm = .*/pm = static/' /etc/php83/php-fpm.d/www.conf
sed -i 's/^pm.max_children = .*/pm.max_children = 1/' /etc/php83/php-fpm.d/www.conf
rc-service php-fpm83 restart64MB 只能跑 1 个 PHP worker,不限必炸。
六、安装 Caddy
apk add caddy
rc-update add caddy七、部署 Typecho
创建目录
mkdir -p /var/www/typecho
cd /var/www/typecho下载官方版本
apk add unzip
wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip
unzip typecho.zip
rm -f typecho.zip设置权限
chown -R nobody:nobody /var/www/typecho/usr
chmod -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/Caddyfile
rc-service caddy start确认监听:
ss -lntp | grep ':443'九、安装 Typecho
浏览器访问:
https://你的域名
数据库配置:
类型:SQLite
前缀:typecho_
路径:默认自动生成即可
十、手动创建 config.inc.php(常见坑)
自动创建失败时:
cat > /var/www/typecho/config.inc.php <<'EOF'
<?php
define('__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.php
chmod 644 /var/www/typecho/config.inc.php至此,一个 64MB Alpine NAT VPS + IPv6 的 Typecho 博客就稳定跑起来了。