我拥有的:
ubuntu 14.4
uwsgi用烧瓶(python)运行,nginx作为反向代理。
我想要的是:
运行WebSockets的这个例子:
https://github.com/zeekay/flask-uwsgi-websocket/blob/master/examples/echo/echo.py
当我在端口5000上使用chromepy运行此应用程序时,它工作正常,但当我尝试运行时没有chromepy我得到一个错误
错误:
Thu Jun 12 12:58:24 2014 - you need to build uWSGI with SSL support to use the websocket handshake api function !!!
Traceback (most recent call last):
File "/home/lab_alglab/rep/car/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/home/lab_alglab/rep/car/local/lib/python2.7/site-packages/flask_uwsgi_websocket/websocket.py", line 54, in __call__
uwsgi.websocket_handshake(environ['HTTP_SEC_WEBSOCKET_KEY'], environ.get('HTTP_ORIGIN', ''))
IOError: unable to complete websocket handshake
我不得不通过brew安装OpenSSL。然后运行此命令。
CFLAGS="-I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/opt/openssl/lib" UWSGI_PROFILE_OVERRIDE=ssl=true pip install uwsgi -Iv
作为下面提到的海报之一,你需要openssl标题,如果它们在非传统的地方(例如在Mac OS-X上),你必须让uWSGI知道。
在Debian / Ubuntu上安装“apt-get install libssl-dev”。他们将进入/ usr / include /“这是UWSGI自动路径的一部分。你应该完成。
Mac OS-X El Capitan(10.11)删除了openssl标头。您可以使用此命令检查常见位置 - 它们可能已由包管理器(如brew或macports)安装。
find /usr/local/include /usr/include /opt/local/include /usr/local/ssl/include -name openssl -type d 2> /dev/null
如果该命令不返回任何内容,则需要安装标头。您可以使用MacPorts(端口安装openssl)将它们安装在/ opt / local / include中,并在/ usr / local / include中添加链接。您也可以通过下载和解压缩openssl,运行“./Configure darwin64-x86_64-cc”,然后“make”,最后“sudo make install”直接安装它们。
Xcode的构建实用程序打包整个预定义的构建环境。使用XCode项目意味着开发人员可以使用共同的基础,并且基础中的任何内容都必须在XCode项目中。在基础之外构建开源项目会变得有点混乱,因为像openssl这样的依赖项存在于基本目录之外。您可以给uwsgi的构建链ONE包含要使用的目录。它不支持PATH样式:分隔符。
在大多数安装情况下,以下内容应适用于OpenSSL。
UWSGI_INCLUDES=/usr/local/include/ pip install uwsgi
只需安装openssl开发头文件(libssl-dev)并重建uwsgi(其构建系统将自动检测ssl可用性)
我通过pip(在venv之外)安装uwsgi,并更改init脚本(Ubuntu)/etc/init.d/uwsgi来运行新安装的2.x分支(而不是1.9)来修复我的这个问题的版本。
Pip安装到/ user / local / bin,所以我将行守护进程更改为:DAEMON =“/ usr / local / bin / uwsgi”
您可以使用指定开发标头的位置 LDFLAGS
。顺便说一句,这可能发生在OS X上,因为El Capitan不再提供标题。
LDFLAGS="-L/usr/local/lib" pip install uwsgi --no-use-wheel
不要安装uwsgi pip install uwsgi
!
正确的方法是
安装 libssl-dev
通过apt-get
从中下载源文件 https://github.com/unbit/uwsgi然后解压缩
构建并安装它 python setup.py install