项目部署:flask+gunicorn/uwsgi/mod_wsgi+nginx/apache

Flask生产部署必学:Gunicorn+Nginx+Ubuntu 16.04实战 Web应用从开发到上线,核心在于理解WSGI协议与分层架构原理。Flask作为轻量级Python框架,其内置服务器仅适用于调试,无法支撑高并发、安全防护与静态资源服务等生产需求。Gunicorn作为符合WSGI标准的Python应用服务器,负责进程管理、请求分发与优雅重启;Nginx则承担反向代理、SSL终止、静态文件托管及跨域控制等网络层职责。二者协同构建了稳定、可扩展、易运维的部署链路,尤其适配Ubuntu 16.04等长期支持系统,在图书管理系统、Flask+Vue前后端分离等真实项目中成为事实标准。 阅读详情

flask应用程序

#flask_test.py
import os
from urllib.request import urlretrieve
import logging
from logging.handlers import RotatingFileHandler
from flask import Flask, request, jsonify
import requests
import json
import time

def generate_log(log_dir):
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    now_time = time.strftime('%Y-%m-%d-%H-%M-%S')
    formatter_base = '%(asctime)s: %(levelname)s %(message)s'
    logging.basicConfig(level=logging.DEBUG)
    formatter = logging.Formatter(formatter_base)
    Rthandler = RotatingFileHandler(filename='%s' % os.path.join(log_dir, now_time + '.log'), \
    maxBytes=50 * 1024 * 1024, backupCount=1)
    Rthandler.setLevel(logging.DEBUG)
    Rthandler.setFormatter(formatter)
    logging.getLogger('').addHandler(Rthandler)


app = Flask(__name__)
generate_log('/mnt/disk2/xxx/work/test/log/')
@app.route('/Test', methods=['GET', 'POST'])


def test():
    try:
        strs = request.values.get('strs')
    except Exception as e:
        return jsonify({'result': 'ERR', 'message' : 'hello %s faild: %s' % (strs, e)})
    return jsonify({'result': 'OK', 'message' : 'hello %s ' % strs})
if __name__ == '__main__':
    app.run(host='0.0.0.0', port='7000')

flask+gunicorn+nginx方式

  • 安装
# nginx
apt-get install nginx #安装
apt-get remove nginx #卸载
# uwsgi
pip3 install gunicorn --user #安装
pip3 uninstall gunicorn #卸载
  • 创建flask应用程序
  • 创建gunicorn配置文件
    在项目目录下创建gunicorn的配置文件config.py。
# config.py
import os
import gevent.monkey
gevent.monkey.patch_all()

import multiprocessing

debug = True

bind = '0.0.0.0:7000'
pidfile = 'log/gunicorn.pid'
accesslog = 'log/access.log'
errorlog = 'log/error.log'
capture_output = True
loglevel = 'warning'

daemon = True #后台启动
reload = True

#workers = multiprocessing.cpu_count()
workers = 1
worker_class = 'gevent'
x_forwarded_for_header = 'X-FORWARDED-FOR'
  • 启动gunicorn
# 添加配置文件后的启动方式
gunicorn -c config.py flask_test:app
  • 通过端口号查看程序是否启动
fuser -v -n tcp 端口号 #查看端口号
fuser -k 端口号/tcp  #关闭端口号

  • 测试gunicorn
    浏览器中输入http://10.27.1.20:7000/Test?strs=gunicorn-flask,如果返回{"message":"hello gunicorn-flask ","result":"OK"}则成功。

  • 创建nginx配置文件
    在/etc/nginx/sites-enabled/目录下创建nginx_gunicorn文件,并写入以下内容。

vim nginx_gunicorn #创建文件
server{
    listen 8002 default_server;
    listen [::]:8002 default_server;
    server_name 10.27.1.20;
    location / {
        proxy_pass http://127.0.0.1:7000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 启动nginx
cd /etc/sbin
./nginx -t #测试配置
./nginx #启动
./nginx -s reload #重新加载
./nginx -s stop #停止

  • 查看进程是否起来
fuser -v -n tcp 端口号 #查看端口号
fuser -k 端口号/tcp  #关闭端口号

  • 测试nginx
    浏览器中输入http://10.27.1.20:8002/Test?strs=nginx-gunicorn-flask,如果返回{"message":"hello nginx-gunicorn-flask ","result":"OK"}则成功。

flask+uwsgi+nginx方式

  • 安装
# nginx
apt-get install nginx #安装
apt-get remove nginx #卸载
# uwsgi
pip3 install uwsgi --user #安装
pip3 uninstall uwsgi #卸载

  • 创建flask应用程序
  • 创建uwsgi配置文件
    在项目目录下创建uwsgi的配置文件uwsgi.ini,跟flask的启动脚本放在同一目录下。
[uwsgi]
#使用nginx时需要该关键字
#socket = 0.0.0.0:7000
#不使用nginx是需要该关键字
http = 0.0.0.0:7000 
pythonpath = /mnt/disk2/xxx/work/xxx/
module = flask_test:app
#起用process manager,管理worker进程,worker进程都是这个master进程的子进程
master = true
# 进程
processes = 2
# 每个worker进程中创建两个线程
threads = 2
#不设置该关键字,请求超过4k就会报错
buffer-size = 65536
#使进程在后台运行,并将日志打到指定的日志文件或udp服务器
daemonize = ./log/uwsgi.log
#指定pid文件
pidfile = ./log/uwsgi.pid
#设置最大日志文件大小
log-maxsize = 50000000
#禁用请求日志记录
#disable-logging = true 
#只在开发时使用,监控项目的py文件的mtime来出发重载,py-autoreload表示多长时间检测一次,单位秒
python-autoreload = 1 
#在每个worker而不是master中加载应用,默认为false,表示先加载应用,再fork出worker,这样可以让work尽量共用内存,只有当写时才copy。
#由于先加载再fork,单有些东西是不支持fork的,比如socket连接,所以lazy-apps=false时,不要在加载应用时自动创建数据连接等
lazy-apps = true 
#为每个工作进程设置请求数的上限,当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启),可以使用这个选项俩默默对抗内存泄露。
max-requests = 5000

  • 启动uwsgi
    uwsgi.ini在项目目录下,所以在项目目录下运行下面的命令。
uwsgi --ini uwsgi.ini #启动
uwsgi -d --ini uwsgi.ini #后台启动
uwsgi --reload ./log/uwsgi.pid #重启
uwsgi --stop ./log/uwsgi.pid #停止
  • 通过端口号查看程序是否启动
fuser -v -n tcp 端口号 #查看端口号
fuser -k 端口号/tcp  #关闭端口号

  • 测试uwsgi
    在uwsgi.ini中配置http方式才可以用浏览器访问,sock方式不可以。
    浏览器中输入http://10.27.1.20:7000/Test?strs=uwsgi-flask,如果返回{"message":"hello uwsgi-flask ","result":"OK"}则成功。

  • 创建nginx配置文件
    在/etc/nginx/sites-enabled/目录下创建nginx_uwsgi文件,并写入以下内容。

vim nginx_uwsgi #创建文件
server{
    listen 8001 default_server;
    listen [::]:8001 default_server;
    server_name 10.27.1.20;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:7000;

    }
}

  • 启动nginx
cd /etc/sbin
./nginx -t #测试配置
./nginx #启动
./nginx -s reload #重新加载
./nginx -s stop #停止

  • 查看进程是否起来
fuser -v -n tcp 端口号 #查看端口号
fuser -k 端口号/tcp  #关闭端口号

  • 测试nginx
    浏览器中输入http://10.27.1.20:8001/Test?strs=nginx-uwsgi-flask,如果返回{"message":"hello nginx-uwsgi-flask ","result":"OK"}则成功。

flask+mod_wsgi+apache方式

  • 安装
#apache2
apt-get install apache2
apt-get remove apache2
#mod_wsgi
apt-get install libapache2-mod-wsgi #python2
apt-get install libapache2-mod-wsgi-py3 #python3
  • 创建flask应用程序
  • 创建.wsgi配置文件
    在项目test目录下创建mod_wsgi.wsgi,因为test目录在非root用户下,需要用chmod 777 mod_wsgi.wsgi命令将mod_wsgi.wsgi文件改成可读可写模式,是root用户下,apache运行后能调用该文件。
#mod_wsgi.wsgi
#!/usr/bin/python3

import sys
import os
import logging
import site

logging.basicConfig(level=logging.DEBUG, stream=sys.stderr)
site.addsitedir('/home/xxx/.local/lib/python3.5/site-packages')
sys.path.insert(0, '/mnt/disk2/xxx/work/test')

#logging.info(sys.path)

#import torch
#logging.debug(torch.__version__)

#def application(environ,start_response):
#    status='200 OK'
#    output=b'Hello wsgi!'
#    print(environ['wsgi.errors'], sys.path)
#    print (environ['wsgi.errors'], sys.prefix)
#    print (environ['wsgi.errors'], sys.executable)
#    response_headers=[('Content-type','text/plain'),
#                       ('Content-Length',str(len(output)))]
#    start_response(status,response_headers)
#    return[output]


from test_hello import app as application

  • 创建apache2配置文件
    在/etc/apache2/sites-available/目录下创建flask_app.conf配置文件,在该文件中同样需要对mod_wsgi.wsgi文件、项目test目录、日志test/log目录设置可读写权限,并且还需要用命令chmod 777 xxx修改可读写权限。
#flask_app.conf
WSGIPythonHome /home/xxx/.local/lib/python3.5/site-packages
ServerName 10.27.1.20
Listen 7000
<VirtualHost *:7000>
    ServerAdmin webmaster@localhost
    WSGIDaemonProcess test python-path=/mnt/disk2/xxx/work/test:/home/xxx/.local/lib/python3.5/site-packages python-home=/home/xxx/.local/lib/python3.5/site-packages display-name=%{GROUP}

    WSGIScriptAlias / /mnt/disk2/xxx/work/test/mod_wsgi.wsgi process-group=test application-group=%{GLOBAL}
    <Directory /home/xxx/.local/lib/python3.5/site-packages/>
    Require all granted
    </Directory>
    <Directory /mnt/disk2/xxx/work/test/>
        WSGIScriptReloading On
        Require all granted
        <Files mod_wsgi.wsgi>
            Require all granted
        </Files>
    </Directory>

    <Directory /mnt/disk2/xxx/work/test/log/>
    Require all granted
    </Directory>
    LogLevel debug
    ErrorLog /mnt/disk2/xxx/work/test/log/apache_error.log
    CustomLog /mnt/disk2/xxx/work/test/log/apache_access.log combined
</VirtualHost>


  • 启动站点配置文件
    可在任意目录下启动
a2ensite flask_app.conf # 激活站点
a2dissite flask_app.conf # 屏蔽站点
  • 启动mod_wsgi
    可在任意目录下启动
a2enmod wsgi # 查看是否启动
a2dismod wsgi # 禁用
  • 启动apache服务
apache2ctl start # 启动
apache2ctl configtest #检测配置
apache2ctl restart # 重启
apache2ctl reload # 重新加载站点
apache2ctl stop # 关闭
  • 通过端口号查看服务是否运行
    关闭该端口网络站点和wsgi都会被关闭。
fuser -v -n tcp 7000 # 查看端口服务
fuser -k 7000/tcp #关闭端口,关闭该端口网络站点和wsgi都会被关闭
  • 测试
    浏览器中输入http://10.27.1.20:7000/Test?strs=apache-wsgi-flask,如果返回{"message":"hello apache-wsgi-flask ","result":"OK"}则成功。

参考资料
项目部署:flask+mod_wsgi+apache
项目部署:nginx+uwsgi+flask
深度学习多线程部署—学习笔记
Flask—学习笔记

pgAdmin 4服务器模式部署实战:Apache+mod_wsgi+Python虚拟环境 pgAdmin 4 是 PostgreSQL 官方推荐的图形化管理工具,其服务器模式(Server Mode)将传统桌面客户端升级为支持多用户、身份认证与审计日志的企业级 Web 服务。该模式基于 WSGI 规范运行,核心原理是通过反向代理(如 Apache)将 HTTP 请求转发至 Python 后端应用,实现连接管理、SQL 执行与元数据解析的集中化控制。技术价值在于满足等保合规、细粒度权限分发和跨团队协作运维需求,典型应用于 DBA 统一管控上百 PostgreSQL 实例、DevOps 集成数据库健 阅读详情

相关推荐

Ubuntu 14.04下用uWSGI+Nginx部署web2py实战指南

WSGI服务器是Python Web应用生产部署的核心中间件,它负责将HTTP请求安全、高效地桥接到Python应用代码。其核心原理在于实现PEP 3333标准接口,通过进程隔离、请求路由与生命周期管理提升稳定性与并发能力。技术价值体现在资源可控、故障隔离和协议解耦,广泛应用于Django、Flask及web2py等框架的高可用部署场景。在老旧硬件、教育环境或资源受限的Linux服务器(如Ubuntu 14.04)上,uWSGI凭借对Python 2.7的深度兼容、prefork预加载机制和Unix Soc

weixin_33924312的博客 412

nginx mod_wsgi安装配置笔记

做个笔记,防止忘记。 安装环境: ubuntu8.04 首先确定有了python的头文件(/usr/include/python2.5),没有的话apt一下:) sudo apt-get install python2.5-dev 1.nginx安装 $ ./configure --add-module=/path/to/mod_wsgi/ --prefix=/usr/local...

bobning 758

pgAdmin 4 服务器模式部署全指南:Apache+WSGI+PostgreSQL生产实践

pgAdmin 4 本质是一个基于 Flask 和 SQLAlchemy 的 Web 应用,其‘桌面模式’仅限单机调试,而真正支持多用户协同、HTTPS、LDAP集成与审计合规的,是可部署于标准 Web 容器的‘服务器模式’。该模式依托 WSGI 协议实现 Python 应用与 Apache/Nginx 的高效通信,核心价值在于可运维性、权限可控性与企业级安全能力。典型应用场景包括金融级 PostgreSQL 运维平台、混合数据库管理门户及与现有 Apache 生态(如 phpMyAdmin、SSO)深度集

闲谈 463

django+nginx+mod_wsgi+apache网站部署

软件安装 0.如果对selunix不熟就先把它停掉   vi /etc/selinux/config   改动selinux=diabled   然后重启计算机 1.编译安装python   mod_wsgi的安装需要使用到python的共享库,编译安装python时要启用共享库   ./congifure --enable-shared   make &&amp...

dinght2000的博客 339

nginx 的 mod_wsgi 模块

文件名: mod_wsgi-8994b058d2db.tar.gz 大小: 52044 字节 md5: be3ce7485c385089592b564db432132c nginx的mod_wsgi模块, 适用于nginx 0.5.34, 其他版本有对应的patch(尚不支持0.7.x, 对于0.6.x版本打过附带的patch之后编译可能还会有问题). 建议: python编译的时候推荐使用--eneble-shared, 否则需要修改mod_wsgi的Makefile, 即使编译通过, 运行时也可能有问题. 主页: aHR0cDovL2hnLm1wZXJpbGxvLmF0aC5jeC9uZ2lueC9tb2Rfd3NnaS8= (base64编码过, 直接贴可能导致本页无法显示, 见谅) 国内可能无法访问

Xiaojie雷达之路---使用CCS创建一个毫米波雷达的工程(AWR1843)

前些天,在工具箱中下载了一个基于毫米波雷达(AWR1843)自动停车的案例,并成果导入CCS中,可以完美运行,但是如何新建一个新的工程呢?这篇文章就会对其进行讲述。

XiaoJie的博客 4550

使用WSGI部署Django的几种方式

使用WSGI部署Django的几种方式,包括gunicorn托管,uWSGI托管和使用Apache的mod_wsgi托管方式介绍

u011089760的博客 1549

华为2288H-V5服务器做raid的详细步骤

操作步骤 服务器启动界面 按del键进入设置输入密码,2288H-v5默认密码是Admin@9000 移动光标选择device manager 驱动管理选择configurationutility 配置管理 选择main menu 主菜单 选择第一个 configuration management 配置管理 选择create virtual driver 创建虚拟驱动选择select RAID level 选择RAID等级选择level-5 选择select drivers 选择驱......

weixin_46041124的博客 1万+

Nginx 编译, UBUNTU

编译Nginx + Mod_Wsgi (折腾了好几个小时,不知值不值) * libpcre3 要dev版本的 apt-get install libpcre3-dev。通常lib分为二进制版本和带头文件的dev版本,编译东西的时候要选择带头文件的dev版本 * sudo apt-get install zlib1g-dev * UBUNTU里有时候安装的新的lib时要重启一

kzjay的专栏 676

python怎样按某一列值拆分Excel表格

pd.ExcelWriter@python #用python按某一列拆分Excel工作表,将内容写入一个工作簿 本次以“按照表中的某一列,将一张表格拆分为多张表”的需求为例,简单介绍这个过程中用到的pd.ExcelWriter,及每一句的作用。 如上表《学生.xlsx》,假设有14万行28列,请按照学校名,拆分表格(不想用复制粘贴)。 ##代码及解释如下 import pandas as pd from time import time#用来计算时间,展示进度,减少焦虑 in_ws='学生.xlsx'#

learn_get的博客 6785

063.CI/CD for ML:给YOLO项目装上自动化流水线

本文分享了为YOLO目标检测项目搭建CI/CD流水线的实践经验。作者通过手动调试模型导出问题的经历,意识到重复验证工作比模型改进更耗时,提出需要自动化解决方案。文章详细介绍了四阶段流水线设计:1)代码质量检查;2)快速训练验证;3)推理性能基准测试;4)模型注册部署。同时总结了环境不一致、GPU资源争抢等常见问题及解决方案,建议从简单规则开始逐步完善,强调模型版本管理的重要性。实施后不仅提高了效率,还促使团队形成更规范的开发习惯。

2603_95664987的博客 235

Python服务部署 Flask/Django + uWSGI/Gunicorn

Python Web Server

lijianping962464的博客 1485

嵌入式软考必备知识点:嵌入式系统开发中的重要概念和示例代码

在嵌入式软考中,有一些重要的知识点需要掌握,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口等。实时操作系统是一种专门设计用于嵌入式系统的操作系统,可以提供对任务调度、中断处理和资源管理等方面的支持。GPIO(通用输入输出):GPIO是嵌入式系统中常用的硬件接口,用于连接外部设备和嵌入式系统。以上是嵌入式软考中的一些必备知识点,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口。通过配置串口的波特率、数据位数和校验位等参数,可以实现与其他设备的可靠通信。一、嵌入式系统的基本概念。

PixeGO的博客 313

404/400、Flask、WSGI

WSGI(Web Server Gateway Interface)服务器是一种遵循 WSGI 规范的服务器,用于在 Python Web 应用和 Web 服务器之间进行通信。WSGI 是 Python 社区定义的一种标准接口,旨在促进不同 Web 服务器和 Python Web 应用之间的兼容性。### WSGI 的作用1. 应用和服务器之间的桥梁- WSGI 服务器负责接收来自 Web 服务器的 HTTP 请求,并将这些请求传递给 Python Web 应用处理。

weixin_60246228的博客 1382

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与Teacher forcing(教师强制)

作者:安静到无声作者简介:人工智能和硬件设计博士生、优快云与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。o( ̄▽ ̄)d。

安静到无声 2143

⭐️【2024年新版教程】vmware tools安装步骤(Windows、Linux、MacOS版本)

VMware Tools是VMware提供的一套实用工具,它可以增强虚拟机与宿主机之间的交互性能,如改进显示性能、优化鼠标和键盘性能、提供时间同步功能等。无论是在Windows、Linux还是MacOS虚拟机上,安装VMware Tools都可以提高虚拟机的使用体验。以上就是在不同操作系统上安装VMware Tools的步骤,希望对您有所帮助。

Python老吕的博客 6万+

Flask生产部署:uWSGI+Nginx在Ubuntu 18.04上的实战配置

Web应用部署中,Python Web框架(如Flask)需通过WSGI服务器与反向代理协同工作,才能满足生产环境对并发处理、安全防护和静态资源服务的要求。其核心原理是分层解耦:Flask专注业务逻辑,uWSGI负责协议转换与进程管理,Nginx承担连接处理、SSL终止、请求缓冲及动静分离。这种架构显著提升系统稳定性、安全性与性能,广泛应用于轻量API网关、内部管理系统及教学实验平台。本文基于长期运维实践,详解uWSGI与Nginx在Ubuntu 18.04这一稳定LTS环境下的协同配置要点,涵盖socke

aibi9196的博客 451

数字信号处理----数字上变频和下变频都FPGA实现

** 数字信号处理基础----信号下变频和解调 一、 任务介绍 数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率转换。DUC或DDC的结构主要取决于所需要的转换率。例如,WiMAX (全球互通微波接入)系统典型的转换率为8—10阶。对于如此低的转换率,DUC和DDC只需采用FIR滤波器架构。

Born_toward的博客 3万+

从开发到生产:如何为Flask应用选择合适的WSGI服务器

本文详细解析了为何Flask开发服务器不适用于生产环境,并对比了Gunicorn、uWSGI等主流WSGI服务器的特性。重点提供了从零开始的Flask应用生产部署指南,采用经典的Flask + Gunicorn + Nginx架构,涵盖环境准备、服务配置、性能调优与安全加固等关键步骤,帮助开发者实现稳定高效的生产部署。

weixin_28312391的博客 362

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

CentOS 7下uWSGI+Nginx部署Python Web应用实战指南

Web服务器与应用服务器分离是现代Python Web生产部署的基础架构原则。Nginx作为高性能反向代理,负责SSL终止、静态资源服务与连接管理;uWSGI作为WSGI协议实现,专注Python进程调度与请求处理。二者协同构建了高并发、易监控、可伸缩的部署范式。该架构在CentOS 7等企业级Linux发行版上具备深度兼容性,尤其适配systemd服务管理、SELinux安全策略及稳定内核特性。典型应用场景包括Django/Flask/FastAPI等框架的公网上线、政务系统迁移、教育平台扩容等对稳定性与

weixin_30315435的博客 1086

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

flask 部署

案例 # hello.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return '<h1>hello world</h1>' if __name__ == '__main__': app.run(debug=True) 当我们执行上面的hell...

干燥的空气,湿润的呼吸 1695

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Nginx + Gunicorn + Flask 集成配置

想要配置好 Apache + mod_wsgi + Flask 问题真是太多了,随便换一个 Linux 发行版,或者不同的 Python 版本就得让 Google 排很多温室气体。Nginx 可以使用 uWSGI 和 Flask 串联起来,配置起来第一直觉好像也不容易,所以打算换一种方式,直接用一个 Python 的 WSGI HTTP Server, 必要的话再往前面加一个反向代理的 Nginx。这里就来试下 Nginx + Gunicorn + Flask 的完整配置。 在 Flask 的官方网站..

一叶不知秋 326

Windows/Linux下部署Flask

flask server部署

tianxing009的专栏 678

Python WSGI规范PEP 3333详解与应用实践

WSGI(Web Server Gateway Interface)是Python Web开发的核心规范,定义了Web服务器与应用程序间的通用接口标准。作为PEP 3333标准的具体实现,它通过解耦服务器与应用框架,解决了早期Python Web生态的兼容性问题。技术原理上采用可调用对象设计,规范了environ环境变量和start_response回调机制,支持中间件扩展。在工程实践中,Gunicorn、uWSGI等服务器与Flask、Django等框架基于此规范构建了成熟的技术栈,广泛应用于高并发RES

weixin_30512043的博客 283

Flask–部署和分发

到目前为止,我们启动Flask应用都是通过app.run()方法,在开发环境中,这样固然可行,不过到了生产环境上,势必需要采用一个健壮的,功能强大的Web应用服务器来处理各种复杂情形。同时,由于开发过程中,应用变化频繁,手动将每次改动部署到生产环境上很是繁琐,最好有一个自动化的工具来简化持续集成的工作。本篇,我们就会介绍如何将Flask的应用程序自动打包,分发,并部署到像Apache, Nginx等服务器中去。 使用setuptools打包Flask应用 首先,你要了解基本的使用setupt...

hhd1988的专栏 818

Flask 框架秘籍第三版(四)

原文:zh.annas-archive.org/md5/414c4d9bab5f024306f1ffe2cc266dc5。

龙哥盟 1027
上一篇: 项目部署:flask+mod_wsgi+apache
下一篇: python生成requirements.txt的方法
studyeboy
博客等级 码龄15年 365粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值