zoukankan      html  css  js  c++  java
  • Flask + uWSGI+ Linux 指南及避坑

    0x00 背景

      生产环境要求使用uWSGI将server部署于Linux系统; 系统已安装uwsgi.

      OS: RedHat 7

      Python: Python3.6.5


    0x10 配置文件

      uwsgi.ini是uwsgi的配置文件, 除了ini外, uwsgi还支持使用json以及yaml格式的配置文件

    # 声明该文件为uwsgi的配置文件
    [uwsgi]
    # http服务所运行的host以及port
    http = 12.12.12.12:8954  
    # 项目路径
    chdir = /home/{username}/workspace/project  
    # wsgi文件, flask中是app.run()所在的脚本文件
    wsgi_file = %(chdir)/run.py
    # wsgi模块名称, flask中是app.run()所在的脚本文件名, 不需要后缀
    module = run
    # 实例名称, 也可以直接写在module后面, 用"."连接
    callable = app 
    # 输出日志路径, 文件不存在会自动创建, 也可以是UDP服务器的地址
    daemonize = %(chdir)/logs/uwsgi.log
    # 显式指定service所运行的解释器路径, 当系统中有多个python环境时需要指定, 否则会使用默认的, 注意避坑
    pythonpath = /usr/local/lib64/python3.6/site-packages

    0x20 启动\重启\停止

    0x21 启动

    uwsgi --ini uwsgi.ini

    0x22 重启

    uwsgi --reload uwsgi.pid

    0x23 停止

    uwsgi --stop uwsgi.pid

    0x30 坑

    uwsgi no python application found

      一般是缺包导致出现该异常, 而此处缺包是因为最初在配置文件中未指定python的运行环境, 故uwsgi就使用了linux中默认的python2.7导致缺包; 查看log有可能会有解释器抛出的相关异常(ModuleNotFoundError), 也有可能什么都没有.

    0x31 解决

      在配置文件中增加pythonpath字段, 显式指定service的运行环境.

      如何找到所需环境的路径方法很多, 此处给一条命令但不一定适用于全部情况. 

    hod@JNotepad:~$ pip3 show flask | grep -i location
    Location: /home/hod/.local/lib/python3.8/site-packages

      将取得的路径添加到配置文件uwsgi.ini

    pythonpath =  /home/hod/.local/lib/python3.8/site-packages

      停止, 重新加载并重启

    uwsgi --stop uwsgi.pid
    uwsgi --ini uwsgi.ini

  • 相关阅读:
    Windows Phone 7 利用计时器DispatcherTimer创建时钟
    杭电1163 Eddy's digital Roots
    随感1
    杭电 1194 Beat the Spread!
    杭电 1017 A Mathematical Curiosity
    杭电1202 The calculation of GPA
    关于递归的思想
    杭电1197 Specialized FourDigit Numbers
    杭电 1062 Text Reverse
    杭电1196 Lowest Bit
  • 原文地址:https://www.cnblogs.com/HoD7/p/15816819.html
Copyright © 2011-2022 走看看