- 原生 Python
http.server(适用于快速测试和静态文件) - 使用 Flask 框架 (适用于构建小型 Web 应用)
- 使用 Gunicorn + Nginx (适用于生产环境,高性能)
准备工作:安装 Python 和 Pip
在开始之前,请确保你的 Ubuntu 系统已经安装了 Python 和包管理工具 pip。

-
更新软件包列表
sudo apt update
-
安装 Python 和 pip Ubuntu 22.04 及更高版本默认安装了 Python 3,我们直接安装
pip和venv(虚拟环境工具)。sudo apt install python3-pip python3-venv -y
-
验证安装
python3 --version # 应该显示 Python 3.x.x pip3 --version # 应该显示 pip 的版本
使用 Python 内置 http.server
这是最简单的方法,无需安装任何第三方库,适合临时分享文件、测试静态网站或快速启动一个简单的服务器。

优点:
- 开箱即用,无需额外安装。
- 非常适合快速验证代码或共享目录。
缺点:
- 功能非常有限,不适合处理动态请求。
- 性能较差,不适合生产环境。
- 不安全,直接暴露在公网上有风险。
步骤:
-
创建一个测试目录和文件
mkdir my_test_server cd my_test_server echo "<h1>Hello from Python Server!</h1>" > index.html
-
启动服务器 在
my_test_server目录下,运行以下命令,这会在8000端口启动一个服务器,监听所有网络接口 (0.0.0)。
(图片来源网络,侵删)python3 -m http.server 8000 --bind 0.0.0.0
你会看到类似下面的输出:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... -
访问服务器
- 在同一台机器上:打开浏览器,访问
http://localhost:8000或http://127.0.0.1:8000。 - 在同一局域网内:找到你 Ubuntu 的 IP 地址 (
ip a命令查看),然后用其他设备访问http://<你的Ubuntu_IP地址>:8000。
- 在同一台机器上:打开浏览器,访问
-
停止服务器 在终端按
Ctrl + C即可停止。
使用 Flask 框架
Flask 是一个轻量级的 Python Web 框架,非常适合构建中小型的 Web 应用和 API。
优点:
- 简单易学,文档清晰。
- 灵活,可以从小项目扩展到大项目。
- 功能强大,支持路由、模板、请求处理等。
缺点:
- 默认的开发服务器(
flask run)性能不高,不适合生产环境。
步骤:
-
创建项目目录和虚拟环境 虚拟环境可以隔离项目依赖,避免包冲突。
mkdir my_flask_app cd my_flask_app python3 -m venv venv source venv/bin/activate # 激活虚拟环境 # 你的命令提示符前面会出现 (venv)
-
安装 Flask
pip install Flask
-
编写 Flask 应用 创建一个名为
app.py的文件:# app.py from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "<h1>Hello from Flask Server!</h1><p>This is a running web app.</p>" if __name__ == '__main__': # 生产环境不要使用这个 debug 模式 app.run(host='0.0.0.0', port=5000, debug=True) -
运行 Flask 应用 确保虚拟环境已激活,然后运行:
flask run
你会看到输出:
* Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://<你的Ubuntu_IP地址>:5000 -
访问服务器 在浏览器中访问
http://<你的Ubuntu_IP地址>:5000。 -
停止服务器 按
Ctrl + C停止。
生产环境部署 (Gunicorn + Nginx)
当你准备将应用上线时,Flask 自带的服务器就不够用了,这时,我们需要一个更强大的应用服务器(如 Gunicorn)和一个反向代理服务器(如 Nginx)。
- Gunicorn: 一个 Python WSGI HTTP 服务器,它可以在你的 Flask 应用和客户端之间高效地处理请求。
- Nginx: 一个高性能的反向代理和 Web 服务器,它接收来自外部的所有请求,然后将它们转发给 Gunicorn,它还可以处理静态文件(CSS, JS, 图片)、负载均衡和提供 HTTPS。
优点:
- 高性能:Gunicorn 和 Nginx 的组合性能远超 Flask 开发服务器。
- 高并发:能同时处理大量请求。
- 安全性:Nginx 作为屏障,隐藏了 Gunicorn 的细节。
- 稳定性:Gunicorn 可以在后台运行,并管理多个工作进程。
步骤:
-
安装 Gunicorn 和 Nginx
# 安装 Gunicorn pip install gunicorn # 安装 Nginx sudo apt install nginx -y
-
使用 Gunicorn 运行 Flask 应用 确保你在
my_flask_app目录下并且虚拟环境已激活,我们告诉 Gunicorn 去运行app.py文件中的app这个应用实例。gunicorn --bind 0.0.0.0:8000 app:app
--bind 0.0.0.0:8000指定监听所有网络接口的 8000 端口。app:app第一个app是app.py文件名,第二个app是文件中的Flask实例名。你的应用已经在 8000 端口上运行,但直接暴露在外,我们需要 Nginx 来做代理。
-
配置 Nginx Nginx 的配置文件在
/etc/nginx/sites-available/目录下,我们创建一个新的配置文件。sudo nano /etc/nginx/sites-available/my_flask_app
粘贴进去,请将
server_name替换为你的域名或公网 IP。server { listen 80; server_name your_domain.com; # 替换成你的域名或公网IP location / { # 将所有请求转发给 Gunicorn proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } -
启用 Nginx 配置 创建一个符号链接来启用这个站点配置。
sudo ln -s /etc/nginx/sites-available/my_flask_app /etc/nginx/sites-enabled/
-
测试并重启 Nginx 测试配置文件是否有语法错误,然后重启 Nginx 服务。
sudo nginx -t # 如果显示 syntax is ok 和 test is successful,则继续 sudo systemctl restart nginx
-
访问服务器 你可以直接通过浏览器访问
http://your_domain.com或http://<你的Ubuntu_IP地址>,Nginx 会在幕后将你的请求转发给在 8000 端口运行的 Gunicorn。 -
让 Gunicorn 在后台运行 (使用 Systemd) 手动运行 Gunicorn 会在终端关闭后停止,我们使用
systemd来让它作为服务在后台运行。-
创建一个 systemd 服务文件:
sudo nano /etc/systemd/system/my_flask_app.service
-
粘贴以下内容。请务必修改
User,Group,WorkingDirectory, 和ExecStart的路径为你自己的实际路径。[Unit] Description=Gunicorn instance to serve my_flask_app After=network.target [Service] User=your_username # 替换成你的用户名 Group=www-data WorkingDirectory=/home/your_username/my_flask_app # 替换成你的项目绝对路径 Environment="PATH=/home/your_username/my_flask_app/venv/bin" # 替换成你的虚拟环境路径 ExecStart=/home/your_username/my_flask_app/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app [Install] WantedBy=multi-user.target
-
启动并启用服务:
sudo systemctl start my_flask_app sudo systemctl enable my_flask_app # 开机自启
-
检查服务状态:
sudo systemctl status my_flask_app
-
你的 Flask 应用已经作为一个稳定的服务在后台运行了!
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
Python http.server |
快速测试、共享文件 | 极简,无需安装 | 功能弱,性能差,不安全 |
| Flask 开发服务器 | 本地开发、小型项目 | 开发便捷,功能完整 | 不适合生产环境,性能低 |
| Gunicorn + Nginx | 生产环境部署 | 高性能,高并发,安全稳定 | 配置相对复杂 |
对于任何正式的项目,强烈推荐使用 方法三 (Gunicorn + Nginx) 的部署方式,它遵循了现代 Web 应用的最佳实践,能够保证你的服务稳定、高效地运行。
