2013-09-16 119 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