Flask 是一个轻量级的 Python Web 框架,以简洁、灵活著称。它采用“微框架”设计,核心功能精简,但可通过扩展(如 Flask-SQLAlchemy、Flask-Login)轻松增强功能。适合快速开发小型到中型 Web 应用,强调开发者自由度,适合 RESTful API 和简单网站开发。在这篇文章中,老左将会记录如何在 Ubuntu环境中部署 flask轻量框架。
第一、安装环境的准备
1、更新系统
sudo apt update && sudo apt upgrade -y
2、安装 Python 和 pip
Ubuntu 通常预装 Python 3,但建议确保版本较新(如 Python 3.8+):
sudo apt install python3 python3-pip python3-venv -y
安装后检查版本:
python3 --version # 推荐 Python 3.8+
pip3 --version
第二、创建 Flask 应用
1、创建项目目录
mkdir myflaskapp && cd myflaskapp
2、创建虚拟环境
python3 -m venv venv
source venv/bin/activate # 激活虚拟环境
3、安装Flask
pip install flask gunicorn
4、创建简单的应用
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Flask on Ubuntu!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
访问 http://<服务器IP>:5000,应该能看到 Hello, Flask on Ubuntu!。
第三、使用 Gunicorn 运行 Flask
Gunicorn 比 Flask 内置服务器更适合生产环境。
1、使用 Gunicorn 启动 Flask
gunicorn -w 4 -b 0.0.0.0:8000 app:app
测试访问 http://<服务器IP>:8000,应该能看到相同的内容。
2、创建 Systemd 服务(可选,让 Gunicorn 开机自启)
创建 /etc/systemd/system/myflaskapp.service:
sudo nano /etc/systemd/system/myflaskapp.service
写入内容:
[Unit]
Description=Gunicorn instance to serve my Flask app
After=network.target
[Service]
User=ubuntu # 替换为你的用户名
Group=www-data
WorkingDirectory=/home/ubuntu/myflaskapp # 替换为你的项目路径
Environment="PATH=/home/ubuntu/myflaskapp/venv/bin"
ExecStart=/home/ubuntu/myflaskapp/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 app:app
[Install]
WantedBy=multi-user.target
启动并启用服务:
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp # 开机自启
检查状态
sudo systemctl status myflaskapp
第四、配置 Nginx 反向代理
Nginx 作为前端代理,处理静态文件和 HTTPS,并将请求转发给 Gunicorn。
1、安装 Nginx
sudo apt install nginx -y
2、配置Nginx
创建 /etc/nginx/sites-available/myflaskapp:
sudo nano /etc/nginx/sites-available/myflaskapp
写入测试内容
server {
listen 80;
server_name your_domain_or_ip; # 替换为你的域名或IP
location / {
proxy_pass http://127.0.0.1:8000; # 转发到 Gunicorn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 可选:静态文件处理(如果 Flask 有 static 文件夹)
location /static {
alias /home/ubuntu/myflaskapp/static; # 替换为你的静态文件路径
}
}
启动:
sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
第五、配置SSL证书
第六、防火墙配置
sudo ufw allow 'Nginx Full'
sudo ufw enable