2013-03-13 84 views
1

嗨我想讓nginx和燒瓶在我的本地機器上運行。燒瓶+ nginx =連接被拒絕

我可以使用nginx很好的服務器靜態文件,但是我一直跟uwsgi發生連接問題。

我nginx的:

server { 
    listen  80; 
    server_name localhost; 

location /static { 
    alias /path/to/my/static; 
    autoindex on; 
} 

location /media { 
    alias /media; 
    autoindex on; 
} 


location/{ 
    include uwsgi_params; 
    uwsgi_pass unix:/tmp/uwsgi.sock; 
    uwsgi_param UWSGI_PYHOME /path/to/my/env; 
    uwsgi_param UWSGI_CHDIR /path/to/my/app; 
    uwsgi_param UWSGI_MODULE application; 
    uwsgi_param UWSGI_CALLABLE app; 
} 

error_page 404    /404.html; 

error_page 500 502 503 504 /50x.html; 
location = /50x.html { 
    root /usr/share/nginx/html; 
} 

}

/etc/uwsgi/apps-available/uwsgi.ini:

[uwsgi] 
plugins=python 
vhost=true 
socket=/tmp/uwsgi.sock 

但如果我嘗試本地主機/,我在nginx錯誤日誌中找到這個:

[error] 1021#0: *16 connect() to unix:/tmp/uwsgi.sock failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/tmp/uwsgi.sock:", host: "localhost" 

我試過改變權限,但我似乎無法解決這個問題。任何人有任何建議?

任何幫助將非常感謝。

回答

0

一些想法:

  • 確定uWSGI運行?
  • 您是否重新加載/在應用程序中編輯該文件後重新啓動它?
  • 根據名稱(應用程序可用)判斷是否有另一個名爲apps-enabled的目錄,您需要在應用程序中爲該文件添加符號鏈接 - 可用嗎?
  • 是否有一個日誌文件,其中uWSGI寫它自己的錯誤消息?

您可以使用lsof和uWSGI pid(例如lsof -n -p 12345)來查看它打開了哪些文件。你應該看到/ tmp中的套接字以及日誌文件/ var/log

+0

感謝這些觀點。所以,我的uwsgi.ini文件通過啓用的站點進行符號鏈接。如果我嘗試使用'uwsgi uwsgi.ini'運行該文件,則會得到以下輸出:http://dpaste.com/hold/1022942/如果以root身份運行它看起來很好。它可能是需要改變的權限還是所有權? – 2013-03-14 17:39:48

+0

是的,這是套接字文件/tmp/uwsgi.sock的權限問題。 'unlink():Permission denied [socket.c]'表示它試圖移除現有套接字來創建一個新套接字,並且由於權限錯誤而失敗。 'bind():已經使用的地址[socket.c]'意味着它不能在該套接字上偵聽,可能出於同樣的原因。 – Tobia 2013-03-14 21:59:45

+2

通常情況下,套接字不會在/ tmp中創建,因爲該服務器上的任何人或其他人都可以創建名爲'/ tmp/uwsgi.sock'的文件並佔用您的位置。你應該創建一個只有運行uwsgi的用戶可以寫入的目錄,並告訴uwsgi在那裏創建它的套接字。這樣的目錄通常是在'/ var/run'下面的系統守護進程或者你的主目錄下面的個人服務。 – Tobia 2013-03-14 22:01:12