簡體   English   中英

django與nginx uwsgi壞網關502

[英]django with nginx uwsgi bad gateway 502

我想用nginx運行django我按照這個說明進行操作

在/ 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/02/06 09:46:41 [暴擊] 6867#6867:* 1連接()到unix:///root/cartoview_project/mysite.sock失敗(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.ini並在項目中出現mysite.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)用戶:root

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

根據描述,看起來你沒有運行你的uwsgi進程 - 此時502錯誤意味着nginx正確傳遞了響應,但沒有任何東西可以連接它,或者它沒有得到正確的響應。

which uwsgi會給你適當的uwsgi的路徑(如果你正在運行它,在你的virtualenv中做這個)。

例如

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

您應該從uwsgi中取出http-socket配置變量 - nginx正在偵聽端口80,並將其傳遞給您的.sock應用程序創建的.sock文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM