zoukankan      html  css  js  c++  java
  • CentOS7中配置基于Nginx+Supervisor+Gunicorn的Flask项目

     配置Nginx

    1、安装nginx

    yum install nginx  

    2、安装好后在/etc/nginx/default.d中添加location的配置,并指向8001端口,以后Gunicorn会监听8001端口

    location / {
       proxy_pass http://127.0.0.1:8001
    }  

    3、配置好后重新载入nginx配置

    systemctl reload nginx.service  

     安装Python

    CentOS自带Python2.7,如果使用Python3,需要单独安装 

    参考博客:http://www.cnblogs.com/python-gm/p/7728325.html  

     安装配置Gunicorn

    Gunicorn使用pip install gunicorn安装,注意需要在虚拟环境中使用pip安装,这样才对应虚拟环境中的Python版本。 

    pip3 install gunicorn  

     安装配置Supervisor

    1、使用yum可以直接安装Supervisor

    yum install supervisor
    

    2、安装后,在/etc/supervisord.d中建立配置文件xxx.ini,内容如下

    [program:Server]
    directory = /home/evescn/server
    command = /usr/local/python34/bin/gunicorn manage:app -b 0.0.0.0:8001 -w=4 --worker-class=gevent
    #autostart = True
    user = evescn  

    3、Server是项目名称,注意command中最好都写全路径,以区别系统环境和项目虚拟环境。完成后启动supervisord,使配置生效

    supervisord -c /etc/supervisord.conf  

    4、常见的gunicorn配置

    [program:usercenter]
    directory = /home/leon/projects/usercenter ; 程序的启动目录
    command = gunicorn -c gunicorn.py wsgi:app  ; 启动命令,可以看出与手动在命令行启动的命令是一样的
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = leon          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 20     ; stdout 日志文件备份数
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile = /data/logs/usercenter_stdout.log
     
    ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
    ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere  

     补充:Supervicor使用

    1、启动supervisor

    supervisord -c /etc/supervisord.conf  

    2、supervisorctl的使用

    supervisorctl status       # 查询进程状态
    supervisorctl stop node    # 关闭 [program:node] 的进程
    supervisorctl start node   # 启动 [program:node] 的进程
    supervisorctl restart node # 重启 [program:node] 的进程
    supervisorctl stop all     # 关闭所有进程
    supervisorctl start all    # 启动所有进程
    supervisorctl reload       # 重新读取配置文件,读取有更新(增加)的配置文件,不会启动新添加的程序
    supervisorctl update       # 重启配置文件修改过的程序  
  • 相关阅读:
    使用 JDBC 驱动程序
    (转载)SQL Server 2008 连接JDBC详细图文教程
    (转载)VB中ByVal与ByRef的区别
    (转载)Java里新建数组及ArrayList java不允许泛型数组
    在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)
    近期计划
    在服务器上使用python-gym出现的关于显示的问题
    字符串匹配
    Ubuntu18.04 桌面系统的个人吐槽(主要是终端)
    Ubuntu18.04上安装N卡驱动、CUDA、CUDNN三连
  • 原文地址:https://www.cnblogs.com/evescn/p/7729636.html
Copyright © 2011-2022 走看看