我在 godaddy 上有一个域名 mydomain.me,我将它设置为指向我在 aliyun 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://[email protected]:22/opt/miniconda3/envs/DjangoApps/bin/python3.6 -u /root/DjangoApps/mydomain_me/manage.py runserver 0.0.0.0:8080
ssh://[email protected]: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。开始工作吧!
但事实并非如此:
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 地址,而不是弹性 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
答案1
您的 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
答案2
因此之后
cat /tmp/daemon_app
问题出在这里:
可能另一个 uWSGI 实例正在同一地址 (127.0.0.1:9000) 上运行。
解决方案是终止使用端口 9000 的进程并再次运行 uwsgi...
sudo fuser -k 9000/tcp && uwsgi uwsgi.ini
不过,我不知道原因...任何提示都很好。我昨天才打开这个服务器,而且我对网络一窍不通。