梨窝维护指南

梨窝部署在玩客云(OneCloud, ARMv7)上。没有 CI/CD、没有 Docker、没有 K8s——就是本地编译 → scp → 停服替换 → 重启。

准备工作

建立连接

玩客云不在同一个局域网时,通过 WireGuard 隧道连过去:

sudo wg-quick up lily-oc
ssh suly@target_ip

维护完关隧道:

sudo wg-quick down lily-oc

编译策略

  • 工作站 (7840HS) / X270 (i5-7200U):这两个是 x86_64 架构,要编 ARMv7 的二进制必须交叉编译,目标 triple 是 arm-unknown-linux-gnueabihf
  • 玩客云自己:上面装了原生的 rustc,可以直接 cargo build,不需要交叉编译

实际还是用 X270 交叉编译,因为梨梨随手开发完就编译,效率高,玩客云那点 CPU 编 Rust 太慢了,而且内存也容易炸。

完整部署流程

1. 编译

CARGO_PROFILE_RELEASE_LTO=true \
CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 \
CARGO_PROFILE_RELEASE_PANIC=abort \
CARGO_PROFILE_RELEASE_STRIP=true \
cargo build --release --target arm-unknown-linux-gnueabihf

几个参数的作用:

  • LTO=true:链接时优化,减体积,可能还能提一点性能
  • CODENEGEN_UNITS=1:整个 crate 作为一个编译单元,最大化跨模块内联
  • PANIC=abort:panic 直接 abort,省掉 unwinding 表
  • STRIP=true:编译完直接砍符号表

这四个全开,二进制 6.9MB。缺一个都更大。

2. 打包 & 传输

tar -cJf ../lily-nest-armv7-unknown-linux-gnueabihf.tar.xz \
  -C target/arm-unknown-linux-gnueabihf/release lily-nest

scp ../lily-nest-armv7-unknown-linux-gnueabihf.tar.xz \
  suly@target_ip:/data/lily-nest/

XZ 压缩完 2.4MB,局域网 scp 秒传。

3. 登服务器替换

ssh suly@target_ip
cd /data/lily-nest

# 先看看当前状态
sudo systemctl --no-pager status lily-nest &> ./cur.log
cat cur.log

# 停服 → 替换 → 起服 → 确认
sudo systemctl stop lily-nest
tar -Jxf lily-nest-armv7-unknown-linux-gnueabihf.tar.xz
sudo systemctl start lily-nest
sudo systemctl status lily-nest

4. 收尾

exit
sudo wg-quick down lily-oc

怎么看状态

systemctl status 一屏出所有要点:

● lily-nest.service - Lily Nest Rust Web Service
     Active: active (running) since Sat 2026-06-20 22:46:54 CST
     Memory: 1.9M (peak: 2.9M)
     Tasks: 5
      CPU: 1.910s

关键看三行:Active 确认在跑、Memory 看有没有泄漏、CPU 看看是不是异常高。

把输出倒到 cur.log 里,下次 ssh 进来可以先 cat cur.log 看一眼——上次维护之后有没有异常登录、有没有重启过,一目了然。

注意事项

目录权限

梨窝服务跑在 lily-nest 用户下。scp 传文件是用 suly 用户,所以:

  • suly 和 lily-nest 要同组
  • notes/、static/、templates/ 这些目录要设 g+w

不然 service 写不了笔记文件。

为什么不搞 CI/CD

玩客云 ARMv7 本地编译太慢(容易搞崩玩客云嘛,老东西就不折腾它了),在X270/7840HS移动工作站上交叉编译更快。GitHub Actions 当然能搭,但:

梨梨不想搞那么复杂,本地也就几行命令的事情,为啥还要去弄那种。