# Zeabur 自有服务器:直接在服务器上开发并通过域名访问 ## 背景 在 Zeabur 购买的服务器上,无需 GitHub、Docker 或上传代码,直接在服务器上编写项目,通过 Zeabur 提供的域名访问。 ## 架构原理 用户浏览器 ↓ https://w-test.zeabur.app Zeabur Ingress Controller ↓ K8s Service (ClusterIP, port 10500) ↓ Pod (zb-func-runtime → python3 main.py) ↓ PersistentVolume (宿主机本地磁盘) Zeabur 服务器使用 k3s(轻量级 Kubernetes)管理所有服务。 ## 操作步骤 ### 1. 在 Zeabur 面板创建服务 新建服务 → 选择"小程序" → 选择 Python ### 2. 暴露端口 & 绑定域名 在 Zeabur 面板中: - 暴露服务端口(如 10500) - 绑定一个 Zeabur 域名(如 w-test.zeabur.app) ### 3. 找到服务器上的代码目录 # 查看 Pod 对应的 PV 存储路径 k3s kubectl get pv -o yaml | grep path # 实际路径格式 /var/lib/rancher/k3s/storage/pvc-__/ ### 4. 直接修改代码 在上述目录中编辑文件即可,zb-func-runtime 会自动监控文件变化并重载,无需手动重启。 项目文件结构示例: ├── main.py # Python 入口,需监听对应端口 ├── requirements.txt # pip 依赖,修改后自动安装 ├── templates/ # Flask 模板等静态文件 │ └── index.html ### 5. main.py 最简示例 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello from Zeabur!' if __name__ == '__main__': app.run(host='0.0.0.0', port=10500) requirements.txt 内容:flask ## 关键验证结论 - 修改代码后自动生效:zb-func-runtime 有文件监控,秒级重载 - Pod 重启后代码是否丢失:不丢失,代码存在 PersistentVolume 上 - Pod 重启后数据库是否丢失:不丢失,SQLite 文件同样在 PV 上 - zb-func-runtime 是否覆盖已有文件:不覆盖,仅首次创建默认模板 - 额外内存开销:极小,zb-func-runtime 仅占 ~2.6MB ## 常用运维命令 # 查看 Pod 状态 k3s kubectl get pods -n environment-69bb9f1d6853f6f4f5f6c43b # 查看 Pod 日志 k3s kubectl logs -n environment-69bb9f1d6853f6f4f5f6c43b --tail=20 # 手动重启 k3s kubectl rollout restart deployment -n environment-69bb9f1d6853f6f4f5f6c43b service-69bb9f27c6239dfce66f4435 # 进入 Pod 内部 k3s kubectl exec -it -n environment-69bb9f1d6853f6f4f5f6c43b -- /bin/sh ## 注意事项 - main.py 必须启动一个 HTTP 服务器并监听 Zeabur 配置的端口(如 10500) - requirements.txt 修改后 runtime 会自动重新安装依赖 - PV 容量为 1Gi,注意不要存放过大文件 - 如果在 Zeabur 面板删除服务(非重启),PV 会被删除,数据全部丢失。重启不会丢失。