使用 pcre 支持重建 uwsgi

Posted

技术标签:

【中文标题】使用 pcre 支持重建 uwsgi【英文标题】:Rebuild uwsgi with pcre support 【发布时间】:2014-03-07 07:41:53 【问题描述】:

运行 uwsgi 时,我收到以下消息:

!!! no internal routing support, rebuild with pcre support !!!

我已经使用以下命令安装了 pcre(我认为):

sudo apt-get install libpcre3 libpcre3-dev

为什么我安装了pcre 包后仍然收到此消息,如果我需要重新安装uwsgi 并激活pcre,我该怎么做?

另外,内部路由重要吗?

我认为它确实如此,否则uwsgi 的制造者不会让消息出现。我正在运行Ubuntu 12.04 LTS

【问题讨论】:

【参考方案1】:
pip install uwsgi -I

不会重新编译 uwsgi 二进制文件,它只是重新安装 python egg。您需要使用 pcre 库重建 uwsgi 二进制文件。

sudo apt-get install libpcre3 libpcre3-dev

我认为最简单的方法就是卸载 uwsgi,然后再次运行 pip 安装程序。

pip uninstall uwsgi
sudo apt-get remove uwsgi

然后

pip install uwsgi

您应该会看到 pip 运行 setup.py 脚本和一堆编译器消息。最后一条消息应该向您显示如下内容:

################# uWSGI configuration #################

pcre = True
kernel = Linux
malloc = libc
execinfo = False
ifaddrs = True
ssl = True
zlib = True
locking = pthread_mutex
plugin_dir = .
timer = timerfd
yaml = embedded
json = False
filemonitor = inotify
routing = True
debug = False
capabilities = False
xml = libxml2
event = epoll

############## end of uWSGI configuration #############

现在注意 pcre = true 的方式

【讨论】:

我遵循了这个过程,但我没有从编译器得到这个输出。你知道我在哪里可以找到 ubuntu 下的配置吗?我在 /etc 下找不到它 我在 CentOS 上遇到了同样的问题。我安装了gcc*pcre-devel 而不是libpcre3libpcre3-dev,UWSGI 现在可以正常工作了。 您也可以使用sudo /opt/storwizerest-venv/bin/pip install --force-reinstall -U --no-deps uwsgi 使用 pip 一次性重新安装。 --force-reinstall 将使-U 重新安装相同的版本(令人困惑的是,--force-reinstall 没有-U 什么都不做),--no-deps 将阻止尝试更新所有依赖项。 如果使用 alpine 发行版会怎样? @EsseTi:这家伙很聪明,知道如何在他的发行版上查找和安装库:apk install pcre pcre-dev【参考方案2】:

pip install uwsgi -I --no-cache-dir

它会按照@leech 的说法重新安装 (-I),但会忽略已编译的缓存 (--no-cache-dir) 并使用新的库重新编译。

【讨论】:

这是对我有用的答案,而不是公认的答案。 这对我也有用。这是我认为只需几分钟就能解决的问题之一,但最终却需要数小时。 对我来说效果很好,一旦你完成了pip uninstall uwsgi,这是一个多合一的解决方案。谢谢!【参考方案3】:
pip uninstall uwsgi

sudo apt-get install libpcre3 libpcre3-dev

pip install uwsgi

我用上面的命令解决了。

【讨论】:

【参考方案4】:

完成@alanjds 回答,以下是向您已安装的uWSGI 添加pcre 支持的过程。

sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi -I --no-cache-dir

你不需要卸载uWSGI

【讨论】:

【参考方案5】:

你试过了吗:

pip install uwsgi -I 

-I 标志将强制它重新安装

【讨论】:

运行命令并重新安装了 uwsgi。但是当我运行它时,我仍然收到关于使用 PCRE 支持重建的相同消息。 @johnmic07 libpcre3-dev 就足够了,你不太可能需要路由 如果你有一个 virtualenv 设置(我希望你这样做),你的系统可能会在本地 uwsgi、全局 uwsgi(当你使用sudo pip 安装时)和系统(像apt-get) 包。我会在 virtualenv 中构建它,然后在构建输出中查找 pcre = yes 并在 virtualenv bin 目录中找到程序 而且,正如 jwalker 所说,如果你不使用内部路由,你真的不需要这个。 我不使用内部路由,所以我不会担心。希望那里也没有其他人需要它;)【参考方案6】:

对于那些想要在 amazon linux 2 或任何红帽家族发行版上解决此问题的人

首先,卸载uwsgi

pip uninstall uwsgi

然后,安装pcrepcre-devel

yum install pcre pcre-devel

然后,重新安装uwsgi

pip install uwsgi

【讨论】:

【参考方案7】:

如果您已经尝试了以上所有方法,但仍然有相同的错误,并且以下错误,请检查您的命令参数,特别是 --http-socket /path/to/your.sock。那就是 path = '/path/to' 必须存在

thunder lock: disabled (you can enable it with --thunder-lock)
bind(): No such file or directory [core/socket.c line 230]

【讨论】:

以上是关于使用 pcre 支持重建 uwsgi的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7环境部署——uwsgi

用于构建具有 SSL 支持的 uWSGI 的 Dockerfile

!!! no internal routing support, rebuild with pcre support !!!解决方案

python 使用Nginx和uWSGI来运行Python应用

ubantu18.04 配置nginx与uwsgi(前后端分离)

69. Django项目部署 nginx + uwsgi + dwebsocket