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

07-11 1140阅读

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

推荐收藏!Python Flask 项目生产环境部署指南
(图片来源网络,侵删)

本文将详细介绍如何将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应用。此外,您也实施了基本的安全措施来保护您的服务器和应用。别忘了定期维护和更新您的服务器和应用来确保一切平稳运行。

      技术交流

      技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

      技术交流、资料干货、数据&源码,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

      方式①、微信搜索公众号:Python学习与数据挖掘,后台回复: tkinter

      方式②、添加微信号:dkl88194,备注:来自CSDN +交流

      毕设/大作业系列

      • 毕设/大作业:基于Python+Flask+MySQL的豆瓣电影可视化系统
      • 毕设/大作业:搭建基于 Python+Flask+MySQL 的学生培养计划管理系统(附源码)
      • 毕设/大作业:一款基于 Python+flask 的态势感知系统(附完整源码)
      • 毕设/大作业:基于 Python 的 Flask 框架开发的在线电影网站系统(附完整源码)
      • 毕设/大作业:基于 Echarts + Python Flask 动态实时大屏轻松可以实现
      • 毕设/大作业:基于 Python+Django 构建智能互动拍照系统
      • 毕设/大作业:基于 Python+Flask+SQLite 的网易云音乐评论情感分析系统
      • 毕设/大作业:基于 Python 和Surprise库,新手轻松搭建推荐系统
      • 毕设/大作业:基于 Python+Django+MySQL 数据库的租房数据可视化系统
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]