编写简单cgi web服务器
创建简单cgi web服务的方法有两种,一种是命令行方式,还有一种通过运行python文件方式:
- 可以通过执行
python3 -m http.server --cgi 8000
命令创建一个8000端口的简单web服务。 - 也可以通过文件创建一个cgi服务器,名为http_server.py:
from http.server import HTTPServer, CGIHTTPRequestHandler
PORT = 8000
with HTTPServer(("", PORT), CGIHTTPRequestHandler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
执行python3 http_server.py
命令,运行这个web服务器:
# python3 http_server.py
serving at port 8000
提示运行在8000端口上,服务即可运行。
编写cgi脚本
在当前运行web服务的cgi-bin/里,创建一个date.py文件,内容如下:
#!/usr/bin/env python3
import os
result = os.popen("date").read()
content = f"""
<html>
<body>
{result}
</body>
</html>
"""
print(content)
给这个文件增加x
执行权限
chmod +x date.py
浏览器访问
通过浏览器或curl命令,打开http://
# curl http://192.168.50:8000/cgi-bin/date.py
<html>
<body>
Fri 9 Dec 17:50:37 CST 2022
</body>
</html>
# curl http://192.168.50:8000/cgi-bin/date.py
<html>
<body>
Fri 9 Dec 17:50:42 CST 2022
</body>
</html>
内容输出正常。
其他
如果只需要创建一个简单的http服务:
- 可以执行
python3 -m http.server 8000
启动 - 也可以可以这样启动:
from http.server import HTTPServer, SimpleHTTPRequestHandler
PORT = 8000
with HTTPServer(("", PORT), SimpleHTTPRequestHandler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
简单http服务,会完全把文件内容输出,不会运行文件。也可以用来创建个临时的web文件下载服务器。