目标:静态 HTML 课件稳定对外服务 + 一键更新。参考实现:腾讯云 111.231.0.226(OpenCloudOS 9.6),端口 1234。
# 1) 目录与解压(/var/www/spm 为站点根)
mkdir -p /var/www/spm && tar xzf /root/spm-courseware.tar.gz -C /var/www/spm
# 2) systemd 服务(开机自启 + 崩溃重启)—— 不依赖 nginx,零依赖
cat > /etc/systemd/system/spm-web.service <<'EOF'
[Unit]
Description=Courseware static web
After=network.target
[Service]
ExecStart=/usr/bin/python3 -m http.server 1234 --bind 0.0.0.0 --directory /var/www/spm
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now spm-web
systemctl is-active spm-web # → active
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:1234/ # → 200
# 打包(排除内部文件):在课件项目根目录执行
tar czf /tmp/spm-courseware.tar.gz --exclude='_素材' --exclude='*.py' \
--exclude='__pycache__' index.html styles.css quiz.js logo.png assets lecture*
# 上传(SSH/scp 助手,expect 自动输密码——先按你的服务器改 IP/用户/密码)
~/Downloads/scp_cloud.sh /tmp/spm-courseware.tar.gz /root/spm-courseware.tar.gz
# 服务器解压覆盖并重启
~/Downloads/ssh_cloud.sh 'tar xzf /root/spm-courseware.tar.gz -C /var/www/spm && systemctl restart spm-web && sleep 1 && systemctl is-active spm-web'
若更新只动了 styles.css/quiz.js(无新页面),只需上面的 tar→scp→解压→restart,无需本地 rebuild; 若动了内容模块,先
python3 _build.py再打包含新页面。
| 项 | 值 |
|---|---|
| 公网 URL | http://<公网IP>:<端口>/ (本案例 http://111.231.0.226:1234/) |
| 端口冲突 | 80 常被其他服务占用 → 选非常用端口(1234/8899/8080),必须同时:控制台安全组放行 TCP 入站 |
| 安全组 | 腾讯云控制台 → 安全组 → 入站规则 → TCP <端口> 0.0.0.0/0(或限定来源段) |
| 服务端防火墙 | 若 firewalld 开启:firewall-cmd --permanent --add-port=<端口>/tcp && firewall-cmd --reload |
| 排障 | 公网不通先 curl 127.0.0.1:<端口> 区分"服务没起/被墙/安全组"三因 |
127.0.0.1:<端口>;dl-hub/22-软件项目管理教学包/课件云发布记录.md。每个项目维护一份 课件云发布记录.md(照 22-软件项目管理教学包/课件云发布记录.md 抄):服务器信息、目录、systemd 单元、更新命令、注意事项(端口/安全组/占位页/素材排除)。