2013-09-16 88 views
0

我想在ec2微型实例上安装nginx,uwsgi,bottle.py。到目前为止,我已经安装了组件,并且nginx正在正确地提供一个测试index.html页面。如果我停止nginx服务器并在python的内部开发服务器上运行测试瓶应用程序,它也可以工作。运行nginx,uwsgi,在ec2微型实例上的瓶子

但是,我的uwsgi不工作。这是我的“默认”文件在etc/nginx/site-enabled /中。我使用附加到我的微型实例的弹性IP(xx.xx.xx.xx)。

upstream _bottle { 
    server xx.xx.xx.xx:80; 
} 

server { 
    listen 80; 
    server_name xx.xx.xx.xx; 
    root /var/www/app; 

    location/{ 
     try_files $uri @uwsgi; 
    } 

    location @uwsgi { 
     include uwsgi_params; 
     uwsgi_pass _bottle; 
    } 
} 

这里是我的uwsgi配置文件:

[uwsgi] 
chdir = /var/www/app 
master = true 
plugins = python 
file = index.py 
uid = www-data 
gid = www-data 

,我也做了确认:

sudo chown -R www-data:www-data /var/www/app 

当我重新启动nginx的和uwsgi,去弹性IP地址用我的浏览器,我得到了nginx的坏门户页面。

nginx的错误日志给我:

*1 upstream prematurely closed connection while reading response header from upstream, client..... 

我读过,“上游过早关闭”的错误表示内存/ CPU /资源的问题?这与使用微型实例并没有足够的资源有关吗?但唯一通过浏览器访问这个微型实例的人就是我。

回答

0

似乎你在你的uwsgi配置文件中缺少socket指令。您的设置不正确。

NGINX将请求传递给通道上的uWSGI进程。它可能是网络套接字或文件套接字(命名管道)。 您没有配置此频道。

在你uwsgi配置声明像

socket = /tmp/bottle.socket 

而在你的nginx的配置文件插座使用插座上游:

upstream _bottle { 
    server unix:/tmp/bottle.socket; 
} 

还记得通过uwsgi PARAMS在你的位置指令

include uwsgi_params; 

欲了解更多信息,请参考official documentation