godaddy dns + aliyun host - django app, uwsgi, nginx - 顯示“502 Bad Gateway”
我在 Godaddy 中有域 mydomain.me 我將其設置為指向我在阿里雲 ecs 中的 ip
在我的 diango 設置中,我有:
ALLOWED_HOSTS = [".mydomain.me","x.x.x.x"]
在 /etc/nginx/sites-avaiable/Django 我有
upstream django { server unix:/tmp/uwsgi.sock; } server { listen x.x.x.x:80; server_name .mydomain.me; location /static/ { include uwsgi_params; alias /root/DjangoApps/mydomain_me/public; } location / { include uwsgi_params; uwsgi_pass django; } }
編輯: 我為此創建了符號連結 /etc/nginx/sites-enabled/Django,並刪除了預設符號連結。
在 uwsgi.ini 我有
[uwsgi] chdir = /root/DjangoApps/mydomain_me module = mydomain_me.wsgi:application processes = 1 threads = 1 stats = 127.0.0.1:9000 daemonize = /tmp/daemon_app pidfile = /tmp/uwsgi.pid chmod-socket = 777 master = True vaccum = True socket = /tmp/uwsgi.sock
我用pycharm按如下方式執行:
ssh://root@x.x.x.x:22/opt/miniconda3/envs/DjangoApps/bin/python3.6 -u /root/DjangoApps/mydomain_me/manage.py runserver 0.0.0.0:8080 ssh://root@x.x.x.x:22:bash root@mydomain:~/DjangoApps/mydomain_me# . activate DjangoApps (DjangoApps) root@mydomain:~/DjangoApps/mydomain_me# uwsgi uwsgi.ini (DjangoApps) root@mydomain:~/DjangoApps/mydomain_me# service nginx restart
還行吧:
http://mydomain.me:8080
有效!
祝賀你的第一個 Django 頁面。
接下來,通過執行 python manage.py startapp 啟動您的第一個應用程序
$$ app_label $$. 您看到此消息是因為您的 Django 設置文件中有 DEBUG = True 並且您沒有配置任何 URL。開始工作吧!
但 rhis 不是:
http://mydomain.me
輸出:
歡迎使用 nginx!
為什麼它不工作?
編輯
現在 mydomain.me 給出輸出:
502錯誤的網關
nginx / 1.10.3 (Ubuntu)
這是我的授權規則:
出境:
Allow Custom TCP 8080/8080 and 80/80 and 22/22 and 3389/3389 Address Field Access 0.0.0.0/0
入境:
none
我應該改變什麼嗎?我的域也指向網際網路 IP 地址,而不是彈性的。
編輯1: cat /var/log/nginx/error.log 給我輸出:
> 2017/08/13 03:00:34 [error] 19132#19132: *11 connect() to > unix:/tmp/uwsgi.sock failed (111: Connection refused) while connecting > to upstream, client: x.x.x.x, server: mydomain.me, request: > "GET /favicon.ico HTTP/1.1", upstream: > "uwsgi://unix:/tmp/uwsgi.sock:", host: "mydomain.me", referrer: > "http://mydomain.me/"
並且文件 /tmp/uwsgi.sock 存在,但是當:
cat /tmp/uwsgi.sock
它說:
> cat: /tmp/uwsgi.sock: No such device or address
所以之後
cat /tmp/daemon_app
問題在這裡:
可能另一個 uWSGI 實例正在同一地址(127.0.0.1:9000)上執行。
解決方案是使用埠 9000 終止程序並再次執行 uwsgi…
sudo fuser -k 9000/tcp && uwsgi uwsgi.ini
雖然,我不知道原因……任何提示都會很好。我昨天剛打開這個伺服器,除了我是網路新手。
看起來您的 Nginx 配置未連結/包含。如果它位於名為 的目錄中
sites-available
,則需要從 符號連結到它sites-enabled
。編輯/etc/nginx/nginx.conf
並檢查它從哪些目錄載入配置文件。符號連結名為 的配置的範例
default.conf
:cd /etc/nginx/sites-enabled sudo ln -s ../sites-available/default.conf sudo service nginx restart