2025年3月21日 星期五 甲辰(龙)年 月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

推荐收藏!Python Flask 项目生产环境部署指南

时间:08-06来源:作者:点击数:31
城东书院 www.cdsy.xyz

Flask 是一个轻量级的 Python web 框架,适合快速地开发小型到中型的web应用。

本文将详细介绍如何将Flask应用部署到生产环境中。文末有技术交流和练手项目,喜欢去练习一下

开始之前

在部署Flask应用之前,确保你有以下几点:

  • 一个Flask应用,经过彻底测试无误。
  • 基本的服务器知识,包括SSH连接远程服务器。
  • 一台可以访问的服务器,Ubuntu或其他Linux发行版。
  • 对于服务器的root或sudo权限。

准备部署环境

1. 更新服务器
  • sudo apt update
  • sudo apt upgrade
2. 安装依赖

Flask通常需要Werkzeug作为WSGI工具以及对应版本的Python。以下命令在Ubuntu上安装Python 3和pip。

  • sudo apt install python3 python3-pip
3. 设置虚拟环境

虚拟环境是Python的一个特性,使得项目的依赖独立于全局的Python环境。

  • sudo apt install python3-venv
  • python3 -m venv myprojectenv
  • source myprojectenv/bin/activate

安装Flask及依赖

将项目文件上传至服务器,激活虚拟环境后安装Flask和项目所需的其他依赖。

  • pip install flask gunicorn
  • pip install -r requirements.txt

配置Gunicorn

Gunicorn是一个Python WSGI HTTP服务器,用于在生产环境中运行Python web应用。

1. 运行Gunicorn
  • gunicorn -w 4 -b 0.0.0.0:8000 myapp:app
  • -w 4 表示使用4个工作进程。
  • -b 0.0.0.0:8000 绑定服务器的8000端口。
  • myapp:app 指的是你的Flask应用对象。
2. 配置systemd服务

创建一个systemd服务文件,使得应用可以在后台运行,并在系统启动时自动启动。

  • sudo nano /etc/systemd/system/myapp.service

添加以下内容到myapp.service

  • [Unit]
  • Description=Gunicorn instance to serve myapp
  • After=network.target
  • [Service]
  • User=user
  • Group=www-data
  • WorkingDirectory=/home/user/myapp
  • Environment="PATH=/home/user/myapp/myprojectenv/bin"
  • ExecStart=/home/user/myapp/myprojectenv/bin/gunicorn --workers 4 --bind unix:myapp.sock -m 007 wsgi:app
  • [Install]
  • WantedBy=multi-user.target

激活并启动服务:

  • sudo systemctl start myapp
  • sudo systemctl enable myapp

设置Nginx代理

Nginx是一个高性能的HTTP和反向代理服务器,可以作为Gunicorn的前端服务器,提供静态文件服务,负载均衡等。

1. 安装Nginx
  • sudo apt install nginx
2. 配置Nginx

创建一个Nginx服务器配置文件:

  • sudo nano /etc/nginx/sites-available/myapp

添加以下内容:

  • server {
  • listen 80;
  • server_name server_domain_or_IP;
  • location / {
  • proxy_pass http://unix:/home/user/myapp/myapp.sock;
  • 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;
  • }
  • location /static {
  • alias /home/user/myapp/static;
  • }
  • }
3. 激活Nginx配置
  • sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled
  • sudo nginx -t
  • sudo systemctl restart nginx

安全和维护

1. 配置防火墙

使用ufw配置基本的防火墙规则:

  • sudo ufw allow 'Nginx Full'
2. 定期更新

确保定期运行系统和应用的安全更新:

  • sudo apt update
  • sudo apt upgrade
3. 设置HTTPS

使用Let’s Encrypt提供的Certbot设置SSL/TLS证书。

  • sudo apt install certbot python3-certbot-nginx
  • sudo certbot --nginx -d your_domain

总结

您已经成功地部署了Flask应用到生产环境中。从更新服务器软件开始,您安装了所需的依赖程序,为应用配置了虚拟环境,并使用Gunicorn和Nginx部署了Flask应用。此外,您也实施了基本的安全措施来保护您的服务器和应用。别忘了定期维护和更新您的服务器和应用来确保一切平稳运行。

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐