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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月26日 08时18分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
数据库复习(4)
2019-05-02
1小时点击量破千万!阿里巴巴首发:MySQL高级调优笔记!全是技术重点
2019-05-02
这个GItHub上的Java项目开源了 2021最全的Java架构面试复习指南
2019-05-02
Proftpd MySQL [Step by Step]
2019-05-02
HP-UX oracle RAC 双机实践
2019-05-02
解决SHELL脚本中的export无法生效的问题【转】
2019-05-02
linux中的sh脚本语法【转】
2019-05-02
区别数据结构中的堆栈与内存中的堆栈的个人总结【转】
2019-05-02
c++中冒号(:)和双冒号(::)的用法【转】
2019-05-02
谭浩强《C++面向对象程序设计》知识点总结
2019-05-02
Android深入浅出之Binder机制
2019-05-02
linux查看硬件信息
2019-05-02
linux支持大于4G内存
2019-05-02
WM_GETINFO相关
2019-05-02
填入空隙(setbkcolor,setbkmode)
2019-05-02
[收藏] FC交换机基础知识详解
2019-05-02
关于数据中台系统,需要了解哪些技术?
2019-05-02
Linux调试工具
2019-05-02