uWSGI

本文最后更新于:2021年3月22日 下午

信息

uWSGI项目旨在为构建托管服务开发全栈。

使用通用的API和通用的配置风格来实现应用服务器 (对于各种编程语言和协议),代理,进程管理器和监控器

官方文档:https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/

安装

安装 gcc

1
yum install make automake gcc gcc-c++ kernel-devel

安装uwsgi

1
pip install uwsgi

补全环境

创建uwsgi.in配置文件来测试

1
vim uwsgi.ini

这个文件仅用于测试,根据情况写入一些内容

1
2
3
4
5
[uwsgi]
socket = 0.0.0.0:5000
chdir = /root/myProject # 项目文件存放位置
wsgi-file = app.py # 项目运行入口
callable = app # Flask对象

试运行测试

1
uwsgi --ini uwsgi.ini

如果没有报错,那么安装就完成了

报错与修正

  • 错误:error while loading shared libraries:xxx
    解决办法:复制 Anaconda 里面的lib到系统 /lib64 中,以补全缺失的文件
    例如: 启动uwsgi时报错为:uwsgi: error while loading shared libraries: libcrypto.so.1.1 表示缺少了 libcrypto.so.1.1
    Anaconda下的对应文件复制到 /lib64 即可
    1
    cp /path/anaconda3/lib/libcrypto.so.1.1 /lib64
  • 错误:uwsgi: /lib64/./libstdc++.so.6: version ‘CXXABI_xxx’ not found
    解决方法:用 Anacondalibstdc++.so.6.0.25 替换/lib64/libstdc++.so.6
    1
    2
    3
    4
    cd /lib64 # 进入目录
    rm -rf libstdc++.so.6 # 删除原文件
    cp /path/anaconda/lib/libstdc++.so.6.0.25 /lib64 # 复制
    ln -s libstdc++.so.6.0.25 libstdc++.so.6 # 创建替换链接

    简易配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [uwsgi]
    # 外部访问地址,可以指定多种协议,此处使用socket
    socket = 127.0.0.1:9191
    # 指向项目目录
    chdir = /home/manager/Code/web_example
    # 这里是flask启动程序文件,此处切忌填错py文件的名称,或者是app不在if之下,否则报错:no python application found, check your startup logs for errors 无法找到你的app实例
    wsgi-file = main.py
    # Flask在 main.py文件中的app名
    callable = app
    processes = 1 # 处理器数
    threads = 2 # 线程数

    # 用于记录状态与重启
    stats=/home/manager/Code/web_example/uwsgi.status
    pidfile = /home/manager/Code/web_example/uwsgi.pid

    virtualenv = /home/manager/envs/anaconda/envs/the_env
    # daemonize项的出现表示把uwsgi服务器作为后台进程启动,项的值指向一个文件表明后台中的所有输出都重定向到这个日志中去
    daemonize = /home/manager/Code/LearnSpider/web_example/Back/uwsgi.log



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!