Files
sincos.cc-website/deploy/DEPLOY.md
T
admin d4ffec7f18 feat: 全站改版为科技首页风格,重构导航与产品页面
- 品牌更名 Easy Data Collection
- 导航重构:前沿技术研究 / 工具开发 / 资源中心 / License / 博客(含下拉菜单)
- 新增前沿技术研究聚合页、工具开发产品页与 6 个产品独立介绍页
- License 申请 / 查询下载 / 资源包合并为 License 中心,旧路径保留兼容
- 首页与全站样式升级为科技产品风(Apple/Wise 式)
- 博客构建脚本同步更新(新导航 + 新首页)
2026-09-29 10:52:30 +08:00

199 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SinCos 聚合站部署手册(详细版)
- 服务器:`124.220.63.9`(1Panel + OpenResty + Python)
- 域名:`sincos.cc`(腾讯云备案,已解析 A 记录 → 124.220.63.9)
- 站点形态:单站 FastAPI(:8003),根路径 = 科技首页(产品矩阵 + 研究 + 最新文章),其余为子页面
## 目录结构
```
website/ ← 整个目录上传到服务器 /opt/website
├─ main.py FastAPI 主程序
├─ license.py MAC→LIC 算法
├─ requirements.txt 依赖清单
├─ run.sh 启动脚本
├─ static/ 前端(首页/研究/工具/License/资源中心/博客/管理后台)
└─ data/ 运行时数据(自动创建)
├─ requests/*.txt 申请记录(DokuWiki 式)
├─ licenses/*.lic 生成的授权文件
└─ packages/ ★ 资源包(把真实资源包 zip 放这里)
```
---
## 第一步:准备本地文件
1. 打包本地 `website/` 目录为 `website.zip`(只打包目录本身,不含外层)
---
## 第二步:上传到服务器
**方式 A:1Panel 网页上传**
1Panel → 文件 → 进入 `/opt` → 上传 `website.zip` → 右键解压 → 得到 `/opt/website/`
**方式 B:scp 命令行**
```bash
scp -r D:\黑奴编程\网站\website root@124.220.63.9:/opt/website
```
---
## 第三步:服务器安装依赖
SSH 登录服务器后执行:
```bash
# 确认 python 版本(1Panel 环境一般自带 python3)
python3 --version
# 安装依赖
pip3 install -r /opt/website/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
若提示 pip3 不存在,用 `python3 -m pip install -r /opt/website/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple`
---
## 第四步:设置管理密码并启动
**方式 A(推荐):1Panel 进程守护(图形化)**
1. 1Panel → 应用商店 → 安装 **进程守护**(Process Supervisor)
2. 1Panel → 进程守护 → 创建:
- 名称:`reslib`
- 运行用户:`root`
- 运行目录:`/opt/website`
- 启动命令:`uvicorn main:app --host 0.0.0.0 --port 8003`
- 环境变量:`RESLIB_ADMIN_PASSWORD=你的强密码`(管理后台密码,务必修改)
- 开机自启:开
3. 创建后进程状态为"运行中"即成功
**方式 B:1Panel Python 项目(图形化)**
1Panel → 网站 → 创建网站 → 选择 **Python 项目**:
- 运行环境:选择已装的 Python
- 项目路径:`/opt/website`
- 启动命令:`uvicorn main:app --host 0.0.0.0 --port 8003`
- 环境变量:`RESLIB_ADMIN_PASSWORD=你的强密码`
**方式 C:临时测试**
```bash
cd /opt/website && RESLIB_ADMIN_PASSWORD="你的强密码" python3 -m uvicorn main:app --host 0.0.0.0 --port 8003
```
验证服务已监听:
```bash
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8003/
# 应返回 200
```
---
## 第五步:1Panel 建站(反代)
1Panel → 网站 → 创建网站 → **反向代理**:
- 主域名:`sincos.cc`
- 其他域名:留空(不需要 www)
- 代理地址:`http://127.0.0.1:8003`
- 创建
然后 网站 → 选中 sincos.cc → **网站** → 确认 OpenResty 已启用(反向代理自动走 OpenResty)。
---
## 第六步:HTTPS 证书
1Panel → 网站 → sincos.cc → **HTTPS** → 申请证书:
- 类型:Let's Encrypt(推荐,自动续期)
- 勾选:强制 HTTPS、自动续期
- 申请成功后站点即带 https://
> 备案域名证书申请无特殊要求。若 Let's Encrypt 连不上,可改用腾讯云免费证书(DNSPod 申请 → 上传证书)。
---
## 第七步:防火墙放行
1Panel → 安全 → 防火墙:
- 放行端口:`80`、`443`(8003 不需要对外开放,只在服务器内网访问)
- 若之前有其他站点端口(30000/10000 等)保持原状
---
## 第八步:上线验证
| 地址 | 预期 |
|---|---|
| `https://sincos.cc/` | 科技首页(Hero + 研究平台 + 工具矩阵 + 最新文章) |
| `https://sincos.cc/research/` | 前沿技术研究聚合页 |
| `https://sincos.cc/tools/` | 工具开发产品页(6 个产品独立介绍页) |
| `https://sincos.cc/license/` | License 中心(申请 / 查询下载 / 资源包) |
| `https://sincos.cc/license/apply` | License 申请(MAC 输入) |
| `https://sincos.cc/license/status` | 查询/下载 |
| `https://sincos.cc/license/package` | 资源包获取(仅 approved) |
| `https://sincos.cc/resources/` | 资源中心(私有服务入口) |
| `https://sincos.cc/blog/` | 文章列表 |
| `https://sincos.cc/admin` | 管理后台(密码 = 第四步设置的) |
---
## 第九步:数据目录初始化
```bash
mkdir -p /opt/website/data/{requests,licenses,packages}
```
- `packages/` 放入真实资源包文件(zip 等),文件名即展示给用户的名字
- `requests/`、`licenses/` 由系统自动写入
---
## 日常维护
**写博客**
```powershell
# 本地
# 1. 新建 blog\posts\2026-xx-xx-标题.md(front matter: title/date/tags)
# 2. 构建
python -X utf8 blog\build.py
# 3. 将 website\static\home.html、about.html、blog\ 目录 上传覆盖到服务器 /opt/website/static/
```
**备份**(每周):备份 `/opt/website/data/` 目录即可(申请记录 + 授权文件)
```bash
tar czf /root/reslib-backup-$(date +%F).tar.gz /opt/website/data
```
**查看日志**
```bash
# 1Panel 进程守护 → reslib → 日志
```
**重启服务**
```bash
# 1Panel 进程守护 → reslib → 重启(或先停后启)
```
---
## 常见问题
| 问题 | 处理 |
|---|---|
| 80/443 访问超时 | 检查防火墙放行、1Panel 网站状态 |
| 反代 502 | `curl http://127.0.0.1:8003/` 检查后端是否在跑;1Panel 进程守护查看 reslib 状态 |
| 证书申请失败 | 确认 DNS A 记录解析完成且 80 端口可访问 |
| 申请提交后 txt 乱码 | 确认服务器 `python3` 默认编码 UTF-8(正常不会) |
| 忘记管理密码 | SSH 执行 `export RESLIB_ADMIN_PASSWORD=新密码` 后重启服务 |
## 待办清单
- [ ] 上传 website/ 到服务器
- [ ] 安装依赖
- [ ] 设置 RESLIB_ADMIN_PASSWORD
- [ ] 启动服务并 curl 验证 200
- [ ] 1Panel 建反代站 + SSL
- [ ] 防火墙放行 80/443
- [ ] 放真实资源包到 data/packages/
- [ ] 全站访问验证