Python 中如何快速启动一个 HTTP 服务器?
Python 一行命令启动静态文件服务器:python3 -m http.server 8000。本文介绍命令行用法、指定端口/目录、编程方式及安全提醒。
一行命令:python3 -m http.server(默认 8000 端口),把当前目录作为静态文件站点共享出去,浏览器访问 http://localhost:8000 即可。适合临时分享文件或本地调试前端页面。
命令行方式
cd /path/to/my/project
python3 -m http.server # 默认 8000 端口
python3 -m http.server 8080 # 指定端口
python3 -m http.server -d /srv/files # 指定目录(3.7+)
python3 -m http.server -b 0.0.0.0 # 允许局域网访问(默认只监听本机)
编程方式
from http.server import HTTPServer, SimpleHTTPRequestHandler
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
print("服务运行在 http://localhost:8000")
server.serve_forever()
重要安全提醒
http.server 只是开发/临时工具:
- 单线程(3.7+ 的 ThreadingHTTPServer 支持并发,但性能仍有限);
- 没有任何安全机制,目录下的所有文件都可被访问;
- 不要用于生产环境,生产用 Nginx、Caddy 或正式 WSGI/ASGI 服务器。
常见问题(FAQ)
Q:能支持 HTTPS 吗?
A:内置不支持,需要编程方式加 SSL context 包装 socket;临时测试可以用 mkcert + 几行代码,或直接上 Caddy。
Q:如何后台运行?
A:nohup python3 -m http.server 8000 &,或配 systemd service。长期共享文件建议还是用 Nginx。
Q:POST 上传支持吗?
A:SimpleHTTPRequestHandler 只支持 GET/HEAD。需要上传或 API 功能用 Flask/FastAPI 写个简单服务。