# 【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）