我试图在dotcloud上在nginx(v 1.3.14)后面部署gunicorn + gevent.我有几个问题.我的目标是改编python-on-dotcloud示例.到目前为止,我还没有能够使用此设置使用websockets部分.换句话说,我必须手动刷新页面以获取更新,而不是通过socket.io.这对我来说都很新鲜,所以它可能是一个总的noob错误.这是一个相关的问题.
以下是我对python-on-dotcloud示例所做的更改.
显然nginx(从版本1.3.13开始)支持Web套接字.我从python-on-dotcloud示例更新了构建器脚本以指向此开发版本:nginx_download_url="http://nginx.org/download/nginx-1.3.14.tar.gz"
我设置gunicorn绑定到unix套接字,然后从nginx.conf设置proxy_pass,将流量上行发送到gunicorn proxy_pass http://appserver;,我已经定义了appserver.
我正在使用gevent-socket.io运行一个django应用程序,在没有运行nginx的情况下工作正常.(我只是将gunicorn绑定到dotcloud.yml中的0.0.0.0:$PORT_WWW)
我的问题是这些.
我想解决一个没问题吗?
一个.我已经做了相当多的阅读,建议将枪支放在nginx后面.在dotcloud的前线负载平衡器的背景下,这仍然是真的吗?
湾 如果我不期望我会受到DoS攻击,那么将gunicorn置于nginx后面仍然很重要吗?
我试图设置是否可以通过unix套接字运行websockets?
unix套接字是否会在dotcloud上打破缩放?
如果我需要使用端口,那么如何设置呢?我不认为我可以在同一个应用程序中分配两个http端口.如果我将它拆分为两个应用程序,那么我不确定如何将来自gunicorn应用程序的PORT_WWW环境变量传递到nginx应用程序,以便最终可用于nginx postinstall脚本,从而生成nginx.conf.
关于为什么这不起作用的任何想法?
我在下面包含了三个配置文件.让我知道其他人是否会有所帮助.谢谢!
dotcloud.yml
www:
type: custom
buildscript: python/builder
systempackages:
# needed for the Nginx rewrite module
- libpcre3-dev
# needed to support python versions 2.7, 3.1, 3.2.
- python3-all
ports:
www: http
processes:
nginx: nginx
app: /home/dotcloud/env/bin/gunicorn -c /home/dotcloud/gunicorn.conf -b unix:/tmp/gunicorn.sock wsgi:application
#app: /home/dotcloud/env/bin/gunicorn -c /home/dotcloud/gunicorn.conf -b 0.0.0.0:$PORT_WWW wsgi:application
config:
# python_version can …Run Code Online (Sandbox Code Playgroud) 我的堆栈包括 django (1.4.3)、psycopg2 (0.0.3) 和 postgres (9.1)。此外,我正在使用 psycogreen.gevent.patch_psycopg,因为我正在使用 gunicorn 和 gevent 提供我的 django。
一切似乎都很愉快,但我得到了很多(约 40 个)打开的数据库连接。直到我在 django 数据库设置中将 'autocommit' 设置为 True 之前,它们都处于“事务空闲”状态。现在他们都只是“空闲”。
这是我的 pg_top 输出示例。
last pid: 22043; load avg: 0.09, 0.05, 0.05; up 6+21:49:58 16:21:08
45 processes: 45 sleeping
CPU states: 3.0% user, 0.9% nice, 0.2% system, 96.0% idle, 0.0% iowait
Memory: 871M used, 130M free, 32M buffers, 530M cached
Swap: 10M used, 246M free, 2192K cached
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
10035 …Run Code Online (Sandbox Code Playgroud)