Flexus L 上用 systemd 托管静态页面:自动重启与开机自启实测

举报
yd_223504780 发表于 2026/10/23 13:55:14 2026/10/23
【摘要】 在 Flexus L 实例上不装 Nginx,用 Python 内置服务器加 systemd 托管静态页面:单元文件写法、安全组放通、崩溃自动拉起与开机自启的验证方法,以及几个常见坑。

最近在一台华为云 Flexus 应用服务器 L 实例(2 核 2G)上部署了一个纯静态的小页面。需求很简单:外网能访问、进程挂了能自己拉起、服务器重启后自动恢复。没有装 Nginx,直接用系统自带的 Python 加 systemd 完成,记录一下步骤和几个容易踩的点。

一、准备静态文件

把页面放到一个固定目录,例如 /opt/hc-activity/,入口文件是 index.html。目录权限保持 root 可读即可,服务用 root 跑 80 端口最省事;如果想用普通用户,要么换 1024 以上端口,要么给 python3 加 cap_net_bind_service 能力。

mkdir -p /opt/hc-activity
cp index.html /opt/hc-activity/
python3 --version   # 华为云公共镜像一般自带 Python 3

二、编写 systemd 单元

新建 /etc/systemd/system/hc-activity-web.service:

[Unit]
Description=hc-activity static site
After=network-online.target
Wants=network-online.target

[Service]
WorkingDirectory=/opt
ExecStart=/usr/bin/python3 -m http.server 80 --bind 0.0.0.0
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

注意 WorkingDirectory 设为 /opt,这样访问路径就是 http://公网IP/hc-activity/index.html;如果希望根路径直接出页面,把它设成 /opt/hc-activity,或者 Python 3.7+ 用 --directory 参数。

systemctl daemon-reload
systemctl enable --now hc-activity-web.service
systemctl status hc-activity-web.service

三、放通安全组

服务起来后本机 curl -I http://127.0.0.1/ 返回 200,但外网访问不通,原因几乎都是安全组。Flexus L 实例在控制台的「防火墙」页签里添加入方向规则,协议 TCP、端口 80、源地址 0.0.0.0/0。如果系统里还开了 firewalld 或 ufw,也要同步放通。

四、验证自动恢复

三件事都要实际测一下,而不是只看配置:

  1. 外网可达:在自己电脑上 curl -s -o /dev/null -w "%{http_code}" http://公网IP/hc-activity/index.html,应输出 200。
  2. 进程崩溃自动拉起:kill -9 $(systemctl show -p MainPID --value hc-activity-web),3 秒后 systemctl status 应显示新的 PID,日志里有 “Scheduled restart job”。
  3. 开机自启:systemctl is-enabled hc-activity-web 输出 enabled;条件允许的话重启一次实例,确认无需登录即可访问。

五、几个坑

  • Restart=always 默认有启动频率限制(10 秒内 5 次),如果程序本身起不来会被 systemd 放弃,状态变成 failed。排查时看 journalctl -u hc-activity-web -n 50,修好后需要 systemctl reset-failed。
  • After=network.target 不等于网络已就绪,绑定具体 IP 时建议用 network-online.target;绑定 0.0.0.0 则影响不大。
  • http.server 是单线程开发服务器,适合演示页、活动页这类低流量场景;正式业务还是建议 Nginx,并配合 HTTPS。
  • 修改单元文件后一定要 daemon-reload,否则 systemd 用的还是旧配置。

小结

对于轻量的静态页面,“Python 内置服务器 + systemd + 安全组放通”三步就能在 Flexus L 上得到一个可自愈、可开机自启的服务,整个过程不到十分钟,也不需要额外安装软件。验证时以外网 curl 的返回码和 kill 之后的自动恢复为准,比只看 status 更可靠。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。