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天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
|
3天前
|
API 数据库 开发者
Flask:Python的轻量级Web框架
Flask:Python的轻量级Web框架
10 2
|
13天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
14天前
|
数据采集 NoSQL 调度
flask celery python 每月定时任务
flask celery python 每月定时任务
|
16天前
|
Python
python flask跨域处理
python flask跨域处理
29 1
|
3天前
|
测试技术 iOS开发 MacOS
Python和Web--使用Web框架之Flask简单用例
Python和Web--使用Web框架之Flask简单用例
|
17天前
|
Linux Python
linux之部署python环境&创建虚拟环境
linux之部署python环境&创建虚拟环境
|
2月前
|
搜索推荐 数据可视化 数据挖掘
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
本文介绍了一个基于Python Flask框架的招聘数据分析推荐系统,该系统具备用户登录注册、数据库连接查询、首页推荐、职位与城市分析、公司性质分析、职位需求分析、用户信息管理以及数据可视化等功能,旨在提高求职者的就业效率和满意度,同时为企业提供人才匹配和招聘效果评估手段。
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
|
4月前
|
关系型数据库 MySQL 数据库
如何使用Python的Flask框架来构建一个简单的Web应用
如何使用Python的Flask框架来构建一个简单的Web应用
82 0
|
24天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架