Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# 【P0】guanghuclip.cn 服务守护配置 · systemd持久化 · 关终端不掉线
|
||
|
||
任务ID: CAB-20260424-001
|
||
优先级: P0
|
||
创建时间: 2026年4月24日 16:57
|
||
开发步骤: ["1. SSH登录 ZY-SVR-005 (43.156.237.110)","2. 确认当前前端服务启动方式(python3 http.server / nginx直接托管 / node)","3. 如果是python3 http.server:创建 /etc/systemd/system/guanghuclip.service","4. 如果Nginx可以直接托管静态文件:改nginx配置把root指向/opt/guanghuclip/,去掉proxy_pass,不需要后端进程","5. systemctl daemon-reload && systemctl enable guanghuclip && systemctl start guanghuclip","6. 验证:curl http://localhost:3910 确认200","7. 验证:关掉终端后再curl,确认仍然200","8. nginx -t && systemctl reload nginx","9. 浏览器访问 http://guanghuclip.cn 确认正常显示"]
|
||
架构决策: 502原因:前端服务绑定在终端会话,终端关闭进程死亡,Nginx反向代理失去后端。
|
||
解决思路:
|
||
方案A(最优):纯静态文件直接Nginx托管,root指向/opt/guanghuclip/,不需要任何后端进程
|
||
方案B:systemd守护进程,开机自启+自动重启
|
||
映川自行判断当前是哪种情况,选最合适的方案。
|
||
状态: 待开发
|
||
约束: 1. 不动前端代码,只做部署层配置
|
||
2. /opt/guanghuclip/ 目录结构不变
|
||
3. Nginx配置文件: /etc/nginx/sites-available/http://guanghuclip.cn
|
||
4. SSL证书路径不变: /etc/letsencrypt/live/http://guanghuclip.cn/
|
||
5. 端口3910不变
|
||
6. 优先方案:如果index.html是纯静态文件,直接让Nginx托管(root指向目录),不需要python/node后端进程,最简单最稳
|
||
|
||
## 问题
|
||
|
||
妈妈在终端里手动启动前端服务后,关闭终端,[guanghuclip.cn](http://guanghuclip.cn) 立即显示 **502 Bad Gateway**。
|
||
|
||
原因:服务进程绑定在终端会话上,终端关闭 → 进程死亡 → Nginx proxy_pass 找不到后端 → 502。
|
||
|
||
## 目标
|
||
|
||
**关掉终端、断开SSH、服务器重启,[guanghuclip.cn](http://guanghuclip.cn) 都能正常显示。**
|
||
|
||
## 方案选择(映川自行判断)
|
||
|
||
### 方案A:Nginx直接托管静态文件(最优·最简)
|
||
|
||
如果 `/opt/guanghuclip/index.html` 是纯静态HTML+CSS+JS,不需要任何后端进程:
|
||
|
||
```
|
||
server {
|
||
listen 443 ssl;
|
||
server_name guanghuclip.cn;
|
||
|
||
ssl_certificate /etc/letsencrypt/live/guanghuclip.cn/fullchain.pem;
|
||
ssl_certificate_key /etc/letsencrypt/live/guanghuclip.cn/privkey.pem;
|
||
|
||
root /opt/guanghuclip;
|
||
index index.html;
|
||
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
}
|
||
```
|
||
|
||
这样完全不需要 python/node 后端进程,Nginx 自己就能把页面端出来。
|
||
|
||
### 方案B:systemd守护进程(如果需要后端)
|
||
|
||
如果确实需要一个后端进程(比如有API路由):
|
||
|
||
```
|
||
# /etc/systemd/system/guanghuclip.service
|
||
[Unit]
|
||
Description=GuanghuClip Frontend Service
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
WorkingDirectory=/opt/guanghuclip
|
||
ExecStart=/usr/bin/python3 -m http.server 3910
|
||
Restart=always
|
||
RestartSec=3
|
||
User=root
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable guanghuclip
|
||
sudo systemctl start guanghuclip
|
||
```
|
||
|
||
## 验证清单
|
||
|
||
- [ ] `curl -I https://guanghuclip.cn` 返回 200
|
||
- [ ] 关闭终端后再 curl,仍然 200
|
||
- [ ] `sudo reboot` 后自动恢复,仍然 200
|
||
- [ ] 浏览器访问 [guanghuclip.cn](http://guanghuclip.cn) 页面正常显示(星空+视频工作台UI) |