Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor
发布日期:2021-07-01 06:13:41 浏览次数:3 分类:技术文章

本文共 2223 字,大约阅读时间需要 7 分钟。

几个工具的关系结构如下

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

安装

pip install gunicorn gevent flask

一、flask应用

# -*- coding: utf-8 -*-# run.pyfrom flask import Flaskfrom werkzeug.middleware.proxy_fix import ProxyFixapp = 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.pyfrom __future__ import print_function, absolute_import, unicode_literalsimport multiprocessingimport osimport gevent.monkeygevent.monkey.patch_all()if not os.path.exists('log'):    os.mkdir('log')# debug = Trueloglevel = '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 + 1worker_class = 'gevent'x_forwarded_for_header = 'X-FORWARDED-FOR'

指定配置文件启动

gunicorn -c config.py run:app

关闭

# 查看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.pydirectory=/home/python/tornado_server

开机自启

四、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; }}

转载地址:https://pengshiyu.blog.csdn.net/article/details/108710248 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python:Jinja2模板语法整理
下一篇:JS:ES6(ES2015)新特性之常量、箭头函数、解构赋值

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月26日 08时18分25秒