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;
    }
}
相关文章
|
3月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1538 4
|
3月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
191 5
|
11月前
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
441 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
5月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
172 6
|
8月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
592 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
8月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
375 14
|
10月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
1354 1
|
4月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
343 102

推荐镜像

更多