mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
1674 字
4 分钟
把家里电脑上的网站搬上云:一次全程 AI 操作的迁移复盘
2026-11-03

5 个子站 · 15 个程序文件 · 十几处写死的 E:\ 路径 · 106 MB 部署包
切换时网站只断了几十秒。

起点:电脑一关,博客就没了#

这个博客,还有财报看板、财报实验室、留言板、管理后台,一直都跑在我自己的电脑上。

外面能访问到,靠的是一条 Cloudflare 隧道:电脑主动连出去,Cloudflare 再把访问转发进来。好处是不用公网 IP、不用开端口;坏处也很直接 ——

电脑关机,所有网站一起下线。

为了让它们别挂,电脑上还有一套「守护」:一个每 10 分钟跑一次的计划任务,发现哪个服务没响应就重启它,隧道断了也拉起来;启动文件夹里还塞着 6 个开机自启的快捷方式。

能用,但它绑死了一台必须一直开着的电脑。

第一步:先摸清楚家底#

动手之前,AI 先把电脑上的情况查了一遍:

子站本机端口实际是什么
博客 star-fall8180Mizuki 主题生成的静态页
财报看板 caiwu8080静态页 + 每天刷新一次的 data.js
财报实验室 lab8280Flask,上传年报 PDF 自动生成分析页
留言板 msg8288Flask + SQLite
管理后台 admin8289Flask,同时读写留言板和实验室的账号

有个小插曲:静态页用的是自己写的 serve.py,响应头里写着 Server: CaiwuStatic/1.2 —— 博客和看板共用这一个小服务器。

第二步:要不要重构成 Java?#

看到 lab 目录有 277 MB,第一反应是「Python 是不是太大了,要不要重写」。

拆开一看,大的根本不是代码:

目录大小要不要上服务器
4 个程序的代码约 1 MB要
博客 + 看板的静态页约 102 MB要
lab\fixtures 测试数据275 MB不用
pyenv 虚拟环境193 MB不用,服务器上重装

而且服务器总共才 1.7 GB 内存。Java 程序光启动就要几百 MB,这几个 Flask 程序上线后每个只占 21–26 MB。解析财报 PDF 的逻辑有几千行,重写不光费劲,结果还可能对不上。

结论:不重构,只改路径。

第三步:十几处写死的 E:\#

代码里到处是这样的东西:

BASE = r"E:\deepseek_work\lab"
PY = r"E:\Pyt\python.exe"
GB_DB = r"E:\deepseek_work\output\guestbook\guestbook.db"

AI 写了个小脚本,把用到的 15 个文件复制一份,按一张映射表把路径换成服务器上的:

BASE = "/srv/159911/lab"
PY = "/srv/159911/venv/bin/python"
GB_DB = "/srv/159911/data/guestbook/guestbook.db"

换完做了两件事:

  1. 扫描残留 —— 还有没有 X:\ 开头的路径,结果是 0
  2. 语法检查 —— 每个文件都用 ast.parse 过一遍

原来的文件一个没动,改的全是副本。

第四步:服务器上怎么跑#

原来(电脑上)现在(服务器上)
serve.py 提供静态页Nginx
计划任务每 10 分钟检查重启systemd:开机自启、崩溃 3 秒后自动重启
启动文件夹里的快捷方式systemd
电脑上的 cloudflared服务器上的 cloudflared,同一条隧道、同样的配置

每个 Python 服务还加了内存上限(lab 700 MB,其余 200 MB),以独立的低权限用户运行,防止一个程序出问题拖垮整台机器。

账号文件、留言数据库、隧道凭证这几样密钥类文件,全程是直接从原位置传到服务器的,AI 没有读取内容,中转的副本用完就删了。

第五步:切换 —— 最怕两边同时在线#

一条隧道如果同时有两个地方在跑,Cloudflare 会把访问随机分给两边。所以顺序很重要:

  1. 服务器上先装好、本机自检,5 个服务全部返回 200
  2. 禁用电脑上的守护计划任务(不然 10 分钟后它会把隧道重新拉起来)
  3. 关掉电脑上的隧道
  4. 启动服务器上的隧道
  5. 从外网逐个检查 5 个子站

日志里能看到隧道连上了 4 条线路,网站中断大约几十秒。

最后再把电脑上空跑的 5 个旧程序关掉,6 个开机自启的快捷方式移到备份目录(不是删除),以后要回退,挪回去就行。

收尾:电脑上生成的内容怎么同步#

有两样东西还是在电脑上产生的:

  • 博客文章 —— 在电脑上写、电脑上构建
  • 看板数据 —— 每天一次的计划任务在电脑上刷新

所以给这两个流程各加了一行「上传到服务器」:服务器端收到一个压缩包,先解压到临时目录,确认有 index.html 才整体替换,不会出现传一半网站坏掉的情况。

现在发文章还是双击原来那个「发布博客.bat」,只是最后多了一步自动上传。传完,电脑就可以关了。

(这篇文章本身,就是用这个流程发出来的。)

快了吗?#

老实说,打开一个页面的等待时间差不多。

服务器本机访问博客只要 0.0005 秒,时间全花在路上 —— 访问要经过 Cloudflare 的洛杉矶节点绕一圈,在家部署时也是同一条路。

真正的变化是:

  • 24 小时在线,电脑关机不影响
  • Nginx 比自己写的 serve.py 更扛并发,图片多的页面更顺
  • 机房的上行带宽比家里宽带稳定

踩过的坑#

  • 换行符:Windows 上写的 shell 脚本带着 \r\n,上了 Linux 直接报错,每次上传后都要先转一下
  • 一个停不下来的服务:顺手清理电脑上的开机自启时,某个游戏平台的后台服务卡在「正在停止」两分钟不动,最后只能直接结束进程
  • 差点误伤:清理服务器时,我把另一个暂时打不开的网站当成「用不上」停掉了 —— 好在数据都在,几分钟就恢复了。教训:停服务之前先问一句「这个还要不要」。

本文中的所有操作都由 AI 执行,涉及权限的每一步都先征得了我的同意。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

把家里电脑上的网站搬上云:一次全程 AI 操作的迁移复盘
https://star-fall.159911.xyz/posts/server-migration/
作者
星落
发布于
2026-11-03
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

star-fall のcafe 加载中…