Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor

简介: Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor

几个工具的关系结构如下


请求 -> Nginx -> supervisor进程管理[gunicorn、gevent容器[flask]]

安装


pip install gunicorn gevent flask

一、flask应用

# -*- coding: utf-8 -*-
# run.py
from flask import Flask
from werkzeug.middleware.proxy_fix import ProxyFix
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)
@app.route('/')
def hello_world():
    return 'Hello World!'

二、gunicorn+gevent配置

命令行启动


gunicorn -w 2 -b 127.0.0.1:8000 run:app

配置文件


# -*- coding: utf-8 -*-
# config.py
from __future__ import print_function, absolute_import, unicode_literals
import multiprocessing
import os
import gevent.monkey
gevent.monkey.patch_all()
if not os.path.exists('log'):
    os.mkdir('log')
# debug = True
loglevel = 'debug'
bind = "0.0.0.0:5000"
pidfile = "log/gunicorn.pid"
accesslog = "log/access.log"
errorlog = "log/debug.log"
daemon = True
# 启动的进程数
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'gevent'
x_forwarded_for_header = 'X-FORWARDED-FOR'

指定配置文件启动


gunicorn -c config.py run:app

如果启动失败,可以加一个参数,查看具体报错的原因和位置


gunicorn -c config.py run:app --preload

关闭


# 查看PID号
ps -ef | grep gunicorn
# 或者
cat log/gunicorn.pid
# 停止
kill -9 PID号
# 重启
kill -HUP PID号

整合成命令行 service.sh

此方法仅为参考,可以使用supervisor管理进程


#!/bin/bash
# service.sh
# 添加启动命令
function start(){
    echo "start..."
    # 此处修改为项目路径
    gunicorn -c config.py app:app
    echo "start successful"
    return 0
}
# 添加停止命令
function stop(){
    echo "stop..."
    kill -9 `cat log/gunicorn.pid`
    echo "stop successful"
    return 0
}
# 重启
function restart(){
    echo "restart..."
    kill -HUP `cat log/gunicorn.pid`
    echo "restart successful"
    return 0
}
case $1 in
"start")
    start
    ;;
"stop")
    stop
    ;;
"restart")
    restart
    ;;
*)
    echo "请输入: start, stop, restart"
    ;;
esac

三、supervisor配置

[program: myweb] 
command=python server.py
directory=/home/python/tornado_server

开机自启

Python编程:supervisor模块管理进程实例


四、Nginx配置

server {
    listen 80;
    server_name _;
    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;
    location / {
        proxy_pass         http://127.0.0.1:5000/;
        proxy_redirect     off;
        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;
    }
}
相关文章
|
1月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
|
4月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
476 77
|
4月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
303 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
8月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
6月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
643 1
|
10月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
553 3
|
Ubuntu Docker Python
部署你的flask应用到docker
部署你的flask应用到docker
320 0
|
Linux Docker Python
centos 启动停止docker,并部署 flask 容器化应用
centos 启动停止docker,并部署 flask 容器化应用
170 0
|
API 网络安全 Docker
docker 部署flask&matplotlib应用
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Flask是一个使用 Python 编写的轻量级 Web 应用框架。本文介绍通过Dockerfile生成镜像,对外部署通过API接口的方式调用绘图服务。
1073 0
docker 部署flask&matplotlib应用
|
Ubuntu 安全 应用服务中间件
部署 Flask 应用
部署 Flask 应用
948 0

推荐镜像

更多