【发布时间】:2019-05-13 09:19:13
【问题描述】:
如果我直接在端口上运行,我的一个 django 应用程序运行正常
# uwsgi --http :8000 --home /home/hsn/Env/site --chdir /home/hsn/djangy/site -w Blog.wsgi
但是当我通过带有套接字的反向代理设置的网络服务器运行它时,我得到内部服务器错误
套接字配置有什么问题吗?需要我改用端口方法吗??
这是我的应用程序的树结构..
# tree -L 2 djangy/site/
djangy/site/
├── account
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── templates
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── apps
│ ├── blog
│ ├── blogs
│ ├── gallery
│ ├── __init__.py
│ ├── myapp
│ ├── mysensing
│ ├── __pycache__
│ └── qrcreate
├── Blog
│ ├── __init__.py
│ ├── __pycache__
│ ├── settings.py
│ ├── static
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── db.sqlite3
├── images
│ ├── preview2.2.png
│ └── preview.png
├── LICENSE.md
├── manage.py
uWSGI 站点配置
# cat site.ini
[uwsgi]
project = site
uid = hsn
base = /home/%(uid)
chdir = %(base)/djangy/%(project)
home = %(base)/Env/%(project)
module = %(project).Blog.wsgi:application
master = true
processes = 5
socket = /run/uwsgi/%(project).sock
chown-socket = %(uid):www-data
chmod-socket = 660
vacuum = true
req-logger = file:/tmp/reqlog
logger = file:/tmp/errlog
nginx 站点配置
# cat site.conf
server {
listen 80;
server_name site.vm www.site.vm;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/hsn/djangy/site;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
另外,如果我列出了套接字文件,它会在文件名旁边显示 = 符号,如下所示
# ls -l /run/uwsgi/site.sock
srw-rw---- 1 hsn www-data 0 May 13 09:15 /run/uwsgi/site.sock=
这意味着什么??
现在是问题部分,如果套接字不工作,我应该通过 uwgsi 转移到端口方法吗?以及如何做到这一点?
我在阅读 /tmp/errlog 文件时收到此错误
--- no python application found, check your startup logs for errors ---
【问题讨论】:
-
但是 nginx 正在寻找端口,而不是套接字。
-
uwsgi_pass 127.0.0.1:8000;说您将 nginx 配置为代理到端口 8000,但您应该代理到您创建的套接字。 -
@dirkgroten 我也使用过套接字,但出现内部服务器错误。参数为 uwsgi_pass unix:/run/uwsgi/site.sock;
-
确切的错误是什么?可以看看 nginx 日志吗?
-
对于 uwsgi,您应该在您的 site.ini 文件中添加
logger设置,请参阅 here