zoukankan      html  css  js  c++  java
  • Flask项目部署(nginx+supervisor+uwsgi)

    一、引入

      本文根据个人对于Flask项目的部署经历,详细描述了Flask项目的部署步骤,主要采用Nginx+Supervisor+Uwsgi的部署方式。仅供参考。

    二、项目准备

       准备好自己的项目代码,放至服务器指定目录,如:/data/project/okr/leadevo

    三、配置uwsgi

      在服务器指定位置新建uwsgi.ini文件,如下所示:

     1 [uwsgi]
     2 #配合nginx使用
     3 socket = 127.0.0.1:5005
     4 #项目路径 /自己项目路径
     5 chdir = /data/project/okr/leadevo.okr
     6 #wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象 
     7 module = manage:app
     8 #指定工作进程
     9 processes = 1
    10 #主进程
    11 master = true
    12 #每个工作进程有2个线程
    13 threads = 2
    14 #指的后台启动 日志输出的地方,如果配合supervisor使用,该行需要注释
    15 #daemonize =/data/project/okr/uwsgi.log
    16 #保存主进程的进程号
    17 pidfile = /data/project/okr/uwsgi.pid

    四、配置supervisor

      这里直接说如何新增supervisor的配置文件,至于supervisor相关的操作,请自行查阅相关文档。

      在服务器的/etc/supervisor/conf.d目录下新增supervisor的配置文件:okr.ini,详细配置如下所示:

     1 [program:okr_uwsgi]
     2 command= /root/okr/bin/uwsgi /data/project/okr/uwsgi.ini
     3 numprocs=1                    ; 启动1个进程
     4 directory=/data/project/okr/leadevo.okr       ; 执行前先cd到目录去
     5 priority=999                  ; the relative start priority (default 999)
     6 autostart=true                ; start at supervisord start (default: true)
     7 autorestart=true              ; retstart at unexpected quit (default: true)
     8 stopasgroup=true              ; send stop signal to the UNIX process group (default false)
     9 killasgroup=true              ; SIGKILL the UNIX process group (def false)
    10 startsecs=10                  ; number of secs prog must stay running (def. 10)
    11 startretries=10               ; max # of serial start failures (default 3)
    12 exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
    13 stopsignal=QUIT               ; signal used to kill proce conftopwaitsecs=10     ; max num secs to wait before SIGKILL (default 10)
    14 user=root                      ; setuid to this UNIX account to run the program
    15 log_stdout=true               ; if true, log program stdout (default true)
    16 log_stderr=true               ; if true, log program stderr (def false)
    17 redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    18 stdout_logfile=/data/project/okr/logs/uwsgi.log   ; child log path, use NONE for none; default AUTO
    19 logfile_maxbytes=10MB         ; max # logfile bytes b4 rotation (default 50MB)
    20 logfile_backups=10            ; # of logfile backups (default 10)
    21 environment=
    22     MODE="TESTING",
    23     FLASK_ENV="development"
    24 
    25 [program:okr_celery]
    26 command=celery -A tasks.celery_app worker --loglevel=info
    27 directory=/data/project/okr/leadevo.okr
    28 environment=PATH="/root/okr/bin"
    29 user=root
    30 autostart=true
    31 autorestart=true
    32 stdout_logfile=/data/project/okr/logs/uwsgi_supervisor.log
    33 stderr_logfile=/data/project/okr/logs/uwsgi_supervisor_err.log
    34 #startsecs=10
    35 #stopwaitsecs=20
    36 
    37 
    38 [group:okr]
    39 programs=okr_uwsgi,okr_celery

      配置好了之后,需要将该配置文件更新到supervisor的进程中:

      执行命令:supervisorctl update

      成功之后,启动相应的supervisor进程,supervisorctl  start  okr:*,

      重启supervisor指定进程:supervisorctl  restart okr:*

       启动之后。执行命令supervisorctl,可在控制台看到所有的进程启动情况,如下图所示:

    四、配置Nginx

      在服务器nginx的配置文件夹(一般为:/etc/nginx/conf.d)下面新增配置文件:okr.conf

     1 server {
     2         listen       80;
     3         server_name okr.zhangtao1994.com;
     4        access_log  /var/log/nginx/okr_access.log  main;
     5         location / {
     6         include uwsgi_params;
     7             uwsgi_pass 127.0.0.1:5005;
     8         proxy_read_timeout 150;
     9         client_max_body_size 20M;
    10         }
    11 }

      配置之后重启nginx,执行命令:nginx -s reload

      重启之后查看端口情况,执行命令:netstat -anpl|grep 5005,如下图所示则表示项目启动成功,之后域名解析之后就可用通过域名访问Flask项目了。

      

    五、总结

      此博客为项目部署成功之后凭记忆编写,缺少相关细节的部分。但是本人项目目前正常运行,如有疑问,可以留言交流。

    好记性不如烂笔头!
  • 相关阅读:
    Hyper-V自定义专用网络网段
    mongodb导入,导出实例
    kafka介绍二 快速开始
    常用代理IP服务商
    kafka介绍一
    链接汇总
    心态,决定你的人生
    hibernate入门(三)hibernate的三种状态解析
    hibernate入门(二)一级缓存和三种状态解析
    css动画之颤动的动画
  • 原文地址:https://www.cnblogs.com/JentZhang/p/15625137.html
Copyright © 2011-2022 走看看