在华为云 ECS 上用 Python 部署一个最小 Web 服务:从开通到访问的完整记录
最近在华为云上做了一次完整的练手:开通一台 ECS,用 Python 起一个最小的 Web 服务,并让它能被外网访问。整个过程不复杂,但每个环节都有一个容易踩的小坑,记录下来供同样在练手的朋友参考。
1. 开通 ECS 并登录
在控制台创建弹性云服务器时,镜像我选了常见的 Linux 发行版,规格选最小的练手就够用。创建时要特别注意两件事:一是密钥对或密码要保存好,这是后面登录的唯一凭证;二是记下分配的弹性公网 IP。创建完成后,在本地终端用 SSH 登录:
ssh root@<你的公网IP>
能顺利进入命令行,第一步就完成了。
2. 安装运行环境
登录后先更新软件包列表,再安装 Python 3 和 pip。大多数云镜像自带 Python,但版本和 pip 不一定齐全,装一遍最稳妥。安装完成后用 python3 --version 确认版本,避免后面运行报错才发现环境没装好。
3. 写一个最小 Web 服务
不用框架,Python 标准库就能起服务。新建 app.py:
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.end_headers()
self.wfile.write("Hello from Huawei Cloud ECS!".encode("utf-8"))
HTTPServer(("0.0.0.0", 8000), Handler).serve_forever()
注意监听地址要写 0.0.0.0,只写 127.0.0.1 的话外网是访问不到的,这是我第一次部署时踩过的坑。然后运行:
python3 app.py
先在服务器本机用 curl 访问 127.0.0.1:8000 验证服务本身是好的。
4. 放行安全组端口
本机 curl 通了、外网打不开,十有八九是安全组没放行。在 ECS 的安全组入方向规则里添加一条:协议 TCP、目的端口 8000、源地址 0.0.0.0/0。保存后在浏览器访问 <公网IP>:8000,就能看到返回的那行文字了。
需要提醒的是,练手时对全网放行图省事,正式环境一定要把源地址收窄到实际需要的 IP 段,并改用 HTTPS。
5. 让服务常驻
终端一关,python3 app.py 就停了。练手阶段可以用 nohup 让它在后台运行:
nohup python3 app.py > app.log 2>&1 &
更正式的做法是写一个 systemd 服务单元,设置开机自启和异常自动重启。无论用哪种方式,上线后都要再从外网完整访问一遍,并查看日志确认没有报错,才算真正部署完成。
小结
这次练手的完整链路是:开通 ECS → SSH 登录 → 装 Python → 写最小服务 → 本机验证 → 放行安全组 → 外网访问 → 后台常驻。其中最容易卡住的是安全组和监听地址这两处,排查时按「服务在本机通不通、端口在安全组放没放行、监听的是哪个地址」的顺序逐段确认,基本都能定位到问题。
- 点赞
- 收藏
- 关注作者
评论(0)