Flexus L 实例零成本托管静态页面:python3 + systemd 十分钟上线实践
背景
手上有一台华为云 Flexus 应用服务器 L 实例(华东-上海一,2C2G,宝塔面板镜像)。最近参加开发者闯关活动,需要把一个静态 2048 小游戏页面托管成可公网访问的地址。实例的 80/443 端口在安全组和 ufw 里都已放通,但检查后发现宝塔自带的 Nginx 并没有在运行,/www/wwwroot 也是空目录——网站服务其实处于停跑状态。
思路
不想为了一个小页面重装整套 Nginx/宝塔站点,最轻的做法是直接用系统自带的 python3 起一个静态文件服务,再用 systemd 托管保证持久化(这正是活动里「持久化部署」的要求:进程挂了能自动拉起、重启后能自启)。
实施步骤
1. 建目录放页面:mkdir -p /www/wwwroot/hc-activity,scp 上传 index.html。
2. 写 systemd 单元 /etc/systemd/system/hc-activity-web.service:
[Service]
ExecStart=/usr/bin/python3 -m http.server 80 --directory /www/wwwroot --bind 0.0.0.0
Restart=always
RestartSec=3
3. systemctl daemon-reload && systemctl enable --now hc-activity-web,本机 curl http://127.0.0.1/hc-activity/index.html 返回 200。
4. 外网验证:curl -I http://<公网IP>/hc-activity/index.html,HTTP 200 上线完成。
验证与踩坑
一开始外网 curl 80 端口是 000,排查链路是:安全组入方向(控制台已放通 80/443)→ ufw(80/tcp ALLOW)→ 端口监听(ss -tlnp 发现 80 根本没人 listen)。问题不在防火墙,在服务没起。教训:安全组放通≠服务在线,排查连通性先看监听再怪防火墙。
小结
python3 -m http.server 不是生产级方案,但配合 systemd 的 Restart=always 对活动页、临时演示、验收 URL 这类场景足够稳,全程零新增组件、零成本。后续如果站点恢复,可以把宝塔 Nginx 配回 80,把这个服务切到子路径或备用端口。
- 点赞
- 收藏
- 关注作者
评论(0)