2017-02-06 129 views
1

我想運行nginx的Django的我遵循了這一instructions的Django nginx的uwsgi壞網關502

的/ etc/nginx的/網站可用/ cartoview_one

upstream django { 
    server unix:///root/cartoview_project/mysite.sock; # for a file socket } 

server { 
    listen  80; 
    server_name xx.xx.xx.xx; 
    charset  utf-8; 

    # max upload size 
    client_max_body_size 2048M; # adjust to taste 

    # Django media 
    location /media { 
     alias /root/cartoview_project/uploaded; 
    } 

    location /static { 
     alias /root/cartoview_project/static; 
    } 
    location/{ 
     uwsgi_pass django; 
     include  /root/cartoview_project/uwsgi_params; # the uwsgi_params file you installed 
    } 
} 

然後創建符號鏈接使用:

sudo ln -s /etc/nginx/sites-available/cartoview_one /etc/nginx/sites-enabled 

並在項目文件夾mysite_uwsgi.ini

[uwsgi] 
project = cartoview_project 
chdir   = /root/cartoview_project 
module   = %(project).wsgi:application 
home   = /root/env 
master   = true 
processes  = 10 
socket   = /root/cartoview_project/mysite.sock 
chmod-socket = 666 
vacuum   = true 
http-socket = 0.0.0.0:80 

項目結構:

. 
|-- apps 
|-- cartoview_project 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- local_settings.py 
| |-- local_settings.pyc 
| |-- local_settings.py.sample 
| |-- settings.py 
| |-- settings.pyc 
| |-- urls.py 
| |-- wsgi.py 
| `-- wsgi.pyc 
|-- default_oauth_apps.json 
|-- initial_data.json 
|-- manage.py 
|-- mysite_uwsgi.ini 
`-- uwsgi_params 

當我試着使用MYIP此消息訪問網站出現:

502網關錯誤

的nginx/1.10。 0(Ubuntu)

error.log中:

2017年2月6日9時46分41秒[暴] 6867#6867:* 1 connect()以 UNIX:///根/ cartoview_project/mysite的。 socks失敗(13: 權限被拒絕),同時連接到上游,客戶端: xx.xx.xxx.xxx,服務器:xxx.xxx.xxx.xxx,請求:「GET/HTTP/1.1」,上游: 「uwsgi :// UNIX:///root/cartoview_project/mysite.sock:」主持人: 「xxx.xxx.xxx.xxx」

更新:

我刪除http-socket並運行以下命令/root/env/bin/uwsgi --ini mysite_uwsgi.inimysite.sock出現在項目中,然後重新啓動nginx,但沒有任何更改。

:~/cartoview_project# stat mysite.sock 
    File: 'mysite.sock' 
    Size: 0    Blocks: 0   IO Block: 4096 socket 
Device: 802h/2050d  Inode: 17172079 Links: 1 
Access: (0666/srw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root) 
Access: 2017-02-06 10:44:56.188168371 +0100 
Modify: 2017-02-06 10:44:56.188168371 +0100 
Change: 2017-02-06 10:44:56.188168371 +0100 
Birth: - 

機:VPS(Ubuntu的16.04)用戶:根

解決: 通過改變include /root/cartoview_project/uwsgi_paramsinclude /etc/nginx/uwsgi_params;

+0

您可以使用此命令在uwsgi uwsgi --http 0.0.0.0:8134 --wsgi-file UniservedWebsite/wsgi.py&'生產後臺運行您的應用程序,並將您的nginx引用到'0.0.0.0: 8134'並添加'http-timeout' –

回答

0

從描述,它看起來像你還沒有運行uwsgi過程 - 此時的502錯誤意味着nginx正確傳遞響應,但沒有任何連接,或者它沒有得到正確的響應。

which uwsgi將爲您提供相應uwsgi的路徑(如果您正在運行,請在virtualenv中執行此操作)。

例如

/root/cartoview_project/uwsgi --ini mysite_uwsgi.ini

你應該採取的http-socket配置變量出uwsgi的雖然 - nginx的正在偵聽端口80,並使其通過由您uwsgi應用程序創建了.sock文件。

+0

我刪除了'http-socket'並運行以下命令'/ root/env/bin/uwsgi --ini mysite_uwsgi.ini'並重新啓動nginx但沒有任何更改注意:'mysite.sock '出現在項目 – Hisham

+0

是否wsgi肯定在運行?入住頂部。如果你在'mysite.sock'文件上運行'stat',你得到了什麼用戶/組和權限? – Withnail

+0

看一下http://imgur.com/a/IJpAf – Hisham