Python Flask 项目部署指南
文章目录
概述
在 Windows 上使用 Waitress 部署 Flask 应用是一个不错的选择,因为 Waitress 是一个纯 Python 编写的 WSGI 服务器,它兼容 Windows 系统。以下是具体步骤来帮助你在 Windows 上通过 Waitress 部署 Flask 应用。
windows 部署
准备工作
- 确保你已经安装了 Python:Waitress 需要 Python 环境,请确保你的系统上已经安装了 Python,并且版本适合你的项目需求。
- 创建虚拟环境(可选但推荐):为了管理项目的依赖关系,建议为你的 Flask 项目创建一个虚拟环境。
python -m venv venv
激活虚拟环境:
.\venv\Scripts\activate
- 安装 Flask 和 Waitress:如果你还没有安装 Flask 和 Waitress,可以通过 pip 安装它们。
pip install flask waitress
使用 Waitress 部署 Flask 应用
假设你已经有了一个简单的 Flask 应用,文件名为 app.py
。接下来,我们将使用 Waitress 来运行这个应用。
-
修改你的 Flask 应用:确保你的 Flask 应用可以被外部访问。通常情况下,你需要指定主机和端口。但是,Waitress 在 Windows 上运行时,你可以直接使用以下命令而不需要特别修改代码。
-
使用 Waitress 运行 Flask 应用:打开命令提示符或 PowerShell,激活你的虚拟环境(如果使用的话),然后运行下面的命令来启动你的 Flask 应用。
waitress-serve --port=8080 --call "app:create_app"
这里有几个关键点需要注意:
--port=8080
:指定服务监听的端口号,可以根据需要进行调整。"app:create_app"
:这是告诉 Waitress 如何加载你的 Flask 应用。这里的app
是包含 Flask 应用实例的 Python 文件名(不包括.py
扩展名),而create_app
是该文件中返回 Flask 应用实例的函数名称。
如果你的 Flask 应用实例是直接定义的(如app = Flask(__name__)
),可以直接引用它,而无需使用--call
参数。app
是包含工厂函数的 Python 文件名。create_app
是返回 Flask 应用实例的函数。
waitress-serve --port=8080 app:app
如果你希望使用 --call
参数,可以通过工厂函数来创建 Flask 应用实例。修改 app.py
文件如下:
# app.py
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, World!"
return app
然后运行以下命令:
waitress-serve --port=8080 --call "app:create_app"
这里 --call "app:create_app"
表示:
linux 部署
2. 使用 WSGI 服务器
Flask 内置的开发服务器不适合生产环境。推荐使用以下 WSGI 服务器:
示例:使用 Gunicorn
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:app
-w 4
:启动 4 个工作进程(根据 CPU 核心数调整)。-b 0.0.0.0:8000
:绑定到所有网络接口的 8000 端口。app:app
:第一个 app
是文件名(如 app.py
),第二个 app
是 Flask 实例名称。nginx反向代理
ubuntu 配置
- 安装 Nginx:
sudo apt update sudo apt install nginx
- 创建 Nginx 配置文件(例如
/etc/nginx/sites-available/flask_app
):server { listen 80; server_name your_domain_or_ip; location / { 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/flask_app /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置是否正确 sudo systemctl restart nginx
5. 使用进程管理工具
为了确保 Flask 应用在后台持续运行并能够自动重启,可以使用进程管理工具,如:
示例:使用 Systemd
- 创建服务文件(例如
/etc/systemd/system/flask_app.service
):[Unit] Description=Gunicorn instance to serve Flask app After=network.target [Service] User=your_user Group=www-data WorkingDirectory=/path/to/your/app ExecStart=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app [Install] WantedBy=multi-user.target
- 启动并启用服务:
sudo systemctl start flask_app sudo systemctl enable flask_app
windows 可以使用之前 winsw的介绍
winsw 介绍
作者:心之语歌