运行 Django 与 nginx 和 uwsgi 在 Ubuntu 中的问题
Problem with running Django with nginx and uwsgi in Ubuntu
我正在尝试安装新服务器,但我无法 运行 Django 与 nginx 和 uwsgi。我收到错误“502 Bad Gateway”,错误日志中有一些我不理解的消息:
2019/07/20 10:50:44 [error] 2590#2590: *1 upstream prematurely closed connection while reading response header from upstream, client: 79.183.208.33, server: *.speedy.net.3.speedy-technologies.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/run/uwsgi/app/speedy_net/socket:", host: "3.speedy-technologies.com"
我有 4 个网站,这里是主要(默认)配置文件:
server {
listen [::]:80 default_server;
listen 80 default_server;
server_name *.speedy.net.3.speedy-technologies.com speedy.net.3.speedy-technologies.com;
access_log /var/log/nginx/speedy-net.access.log;
error_log /var/log/nginx/speedy-net.error.log;
client_max_body_size 50M;
root /home/ubuntu/speedy-net/speedy/net/static_serve/root;
try_files $uri @uwsgi;
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/speedy_net/socket;
}
location /admin/ {
auth_basic "admin site";
auth_basic_user_file /etc/nginx/htpasswd_admin;
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/speedy_net/socket;
}
location /static {
alias /home/ubuntu/speedy-net/speedy/net/static_serve;
access_log off;
# expires max;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_vary on;
gzip_comp_level 6;
}
}
并且:
[uwsgi]
project = net
chdir = /home/ubuntu/speedy-net
home = %(chdir)/env
module = speedy.%(project).wsgi:application
plugins = python3
master = true
processes = 4
chmod-socket = 666
vacuum = true
uid = ubuntu
gid = ubuntu
touch-reload = /run/uwsgi/app/speedy_%(project)/reload
我尝试使用 sudo nginx -t
进行测试,但收到一条消息,表明我的配置没有问题。有什么问题?
编辑:
旧服务器(正在运行):
$ find /run/uwsgi/ -ls
489 0 drwxr-xr-x 3 root root 60 Jul 20 08:41 /run/uwsgi/
490 0 drwxr-xr-x 6 root root 120 Jul 20 08:41 /run/uwsgi/app
500 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_net
523 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_net/reload
501 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_net/socket
457 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_net/pid
498 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_match
524 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_match/reload
499 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_match/socket
413 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_match/pid
495 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:43 /run/uwsgi/app/speedy_mail
528 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_mail/reload
497 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_mail/socket
496 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_mail/pid
491 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_composer
527 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_composer/reload
494 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_composer/socket
493 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_composer/pid
新服务器:
$ find /run/uwsgi/ -ls
554 0 drwxr-xr-x 3 root root 60 Jul 20 10:15 /run/uwsgi/
555 0 drwxr-xr-x 6 root root 120 Jul 20 11:14 /run/uwsgi/app
573 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_net
598 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_net/socket
584 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_net/pid
568 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_match
572 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_match/socket
569 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_match/pid
565 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_mail
567 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_mail/socket
566 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_mail/pid
499 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_composer
564 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_composer/socket
561 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_composer/pid
旧服务器Ubuntu 16.04.6 LTS
,新服务器Ubuntu 18.04.2 LTS
。
我检查了 /var/log/uwsgi/app/speedy_net.log
,它包含很多行。这是最后 5 行:
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7fe09b2ac393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7fe09b277b70]
*** end of backtrace ***
Sun Aug 11 11:24:35 2019 - DAMN ! worker 2 (pid: 6874) died :( trying respawn ...
Sun Aug 11 11:24:35 2019 - Respawned uWSGI worker 2 (new pid: 6906)
最后 7 行现在是:
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x13a) [0x7f4d7c245e2a]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7f4d7c31a393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
*** end of backtrace ***
Sun Aug 11 11:37:17 2019 - DAMN ! worker 2 (pid: 7915) died :( trying respawn ...
Sun Aug 11 11:37:17 2019 - Respawned uWSGI worker 2 (new pid: 7944)
Sun Aug 11 11:37:17 2019 - epoll_ctl(): File exists [core/event.c line 524]
并且:
Sun Aug 11 11:42:56 2019 - epoll_ctl(): File exists [core/event.c line 524]
Sun Aug 11 11:42:56 2019 - epoll_ctl(): File exists [core/event.c line 524]
Sun Aug 11 11:42:56 2019 - !!! uWSGI process 8118 got Segmentation Fault !!!
Sun Aug 11 11:42:56 2019 - *** backtrace of 8118 ***
/usr/bin/uwsgi(uwsgi_backtrace+0x2a) [0x563d84f5098a]
/usr/bin/uwsgi(uwsgi_segfault+0x23) [0x563d84f50d73]
/lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f4d7ff98f20]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_cleanup_key_block+0xb) [0x7f4d773d4cab]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_clear+0x16) [0x7f4d773d25a6]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(tls1_clear+0x9) [0x7f4d773de219]
/usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_new+0x3f2) [0x7f4d80c11a22]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x23969) [0x7f4d77669969]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x24fc5) [0x7f4d7766afc5]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectPoll+0xb78) [0x7f4d77654ba8]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0xfa28) [0x7f4d77655a28]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectdb+0x1f) [0x7f4d7765841f]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x12b01) [0x7f4d778a9b01]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x1388f) [0x7f4d778aa88f]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_CallFunction_SizeT+0x124) [0x7f4d7c334ce4]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0xc258) [0x7f4d778a3258]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyCFunction_Call+0x96) [0x7f4d7c2460a6]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x7a50) [0x7f4d7c2e8450]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyEval_EvalCodeEx+0x3e) [0x7f4d7c31a67e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1beeb3) [0x7f4d7c2bceb3]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyObject_Call+0x48) [0x7f4d7c334b08]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x4001) [0x7f4d7c2e4a01]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c29e) [0x7f4d7c31a29e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c29e) [0x7f4d7c31a29e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3ea5) [0x7f4d7c2e48a5]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1c85ec) [0x7f4d7c2c65ec]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1bc496) [0x7f4d7c2ba496]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1bc970) [0x7f4d7c2ba970]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c058) [0x7f4d7c31a058]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyFunction_FastCallDict+0x2c3) [0x7f4d7c319fb3]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x131) [0x7f4d7c333ec1]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_Call_Prepend+0xcd) [0x7f4d7c334a9d]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x270821) [0x7f4d7c36e821]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0xb8ef5) [0x7f4d7c1b6ef5]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1ec989) [0x7f4d7c2ea989]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x13a) [0x7f4d7c245e2a]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7f4d7c31a393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
*** end of backtrace ***
Sun Aug 11 11:42:57 2019 - DAMN ! worker 2 (pid: 8118) died :( trying respawn ...
Sun Aug 11 11:42:57 2019 - Respawned uWSGI worker 2 (new pid: 8124)
Sun Aug 11 11:42:57 2019 - epoll_ctl(): File exists [core/event.c line 524]
从命令行连接到数据库 (PostgreSQL),例如这段代码工作正常:
import django
django.setup()
from django.contrib.sites.models import Site
for site in Site.objects.all().order_by('pk'):
print(site.id, site.domain)
尝试在 uwsgi 配置文件中添加一个套接字指令。
socket = /run/uwsgi/app/speedy_%(project)/socket
你必须告诉 uwsgi 在哪里可以找到套接字。也许在旧服务器上,套接字路径作为命令行标志传递?
nginx 用户和 uswgi 用户都应该拥有对套接字本身的 rw
权限和对每个父目录的 rx
权限。您可以通过 运行 touch
检查两个用户是否可以作为相应用户写入套接字。
sudo --user=nginx touch /run/uwsgi/app/speedy_net/socket
sudo --user=uwsgi touch /run/uwsgi/app/speedy_net/socket
如果其中任何一个失败,则存在权限问题。
可能存在多个问题,你需要调试看看哪里出了问题
1. ALLOWED_HOSTS 未设置
如果您的 django 配置没有设置 ALLOWED_HOSTS
那么这可能会产生错误
2。 nginx 配置缺少一些指令
一些人能够使用以下方法解决他们的问题
sendfile on;
client_max_body_size 20M;
keepalive_timeout 0;
large_client_header_buffers 8 32k;
看看将其添加到您的路线是否有帮助
3。 Django 应用因一些未处理的异常而崩溃
这需要您查看 uwsgi
日志。您可以通过 运行 一个终端中的 uwsgi
进程而不是作为一项服务来实现,或者在 uwsgi.ini
中设置日志路径
[uwsgi]
logto=/var/log/uwsgi.log
log-ioerror=1
然后查看日志以了解导致崩溃的原因
4.您的请求正在耗时并且超时
在这种情况下,您需要增加 uwsgi
超时。您可以通过在 uwsgi.ini
中添加以下内容来完成此操作
[uwsgi]
harakiri = 120
及以下到 nginx 配置
uwsgi_read_timeout 120s;
uwsgi_send_timeout 120s;
- uwsgi 因分段错误而崩溃
如果您查看您分享的日志
/usr/bin/uwsgi(uwsgi_segfault+0x23) [0x563d84f50d73]
/lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f4d7ff98f20]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_cleanup_key_block+0xb) [0x7f4d773d4cab]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_clear+0x16) [0x7f4d773d25a6]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(tls1_clear+0x9) [0x7f4d773de219]
/usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_new+0x3f2) [0x7f4d80c11a22]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x23969) [0x7f4d77669969]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x24fc5) [0x7f4d7766afc5]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectPoll+0xb78) [0x7f4d77654ba8]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0xfa28) [0x7f4d77655a28]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectdb+0x1f) [0x7f4d7765841f]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x12b01) [0x7f4d778a9b01]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x1388f) [0x7f4d778aa88f]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
这些表明崩溃是由于 Postgres 数据库连接和 ssl 而发生的。现在有很多线程讨论可以帮助您解决问题的不同解决方案
uwsgi segmentation fault when serving a django application
参考资料
https://serverfault.com/questions/276462/nginx-uwsgi-gives-502-bad-gateway
uWSGI request timeout in Python
uwsgi + nginx + flask: upstream prematurely closed
nginx, uwsgi, DJango, 502 when DEBUG=False, "upstream prematurely closed connection"
最后是。我必须 运行 以下 2 个命令:
/home/ubuntu/speedy-net/env/bin/pip uninstall psycopg2
/home/ubuntu/speedy-net/env/bin/pip install --no-binary :all: psycopg2==2.7.7
然后服务器开始工作了。
我正在尝试安装新服务器,但我无法 运行 Django 与 nginx 和 uwsgi。我收到错误“502 Bad Gateway”,错误日志中有一些我不理解的消息:
2019/07/20 10:50:44 [error] 2590#2590: *1 upstream prematurely closed connection while reading response header from upstream, client: 79.183.208.33, server: *.speedy.net.3.speedy-technologies.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/run/uwsgi/app/speedy_net/socket:", host: "3.speedy-technologies.com"
我有 4 个网站,这里是主要(默认)配置文件:
server {
listen [::]:80 default_server;
listen 80 default_server;
server_name *.speedy.net.3.speedy-technologies.com speedy.net.3.speedy-technologies.com;
access_log /var/log/nginx/speedy-net.access.log;
error_log /var/log/nginx/speedy-net.error.log;
client_max_body_size 50M;
root /home/ubuntu/speedy-net/speedy/net/static_serve/root;
try_files $uri @uwsgi;
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/speedy_net/socket;
}
location /admin/ {
auth_basic "admin site";
auth_basic_user_file /etc/nginx/htpasswd_admin;
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/speedy_net/socket;
}
location /static {
alias /home/ubuntu/speedy-net/speedy/net/static_serve;
access_log off;
# expires max;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_vary on;
gzip_comp_level 6;
}
}
并且:
[uwsgi]
project = net
chdir = /home/ubuntu/speedy-net
home = %(chdir)/env
module = speedy.%(project).wsgi:application
plugins = python3
master = true
processes = 4
chmod-socket = 666
vacuum = true
uid = ubuntu
gid = ubuntu
touch-reload = /run/uwsgi/app/speedy_%(project)/reload
我尝试使用 sudo nginx -t
进行测试,但收到一条消息,表明我的配置没有问题。有什么问题?
编辑:
旧服务器(正在运行):
$ find /run/uwsgi/ -ls
489 0 drwxr-xr-x 3 root root 60 Jul 20 08:41 /run/uwsgi/
490 0 drwxr-xr-x 6 root root 120 Jul 20 08:41 /run/uwsgi/app
500 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_net
523 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_net/reload
501 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_net/socket
457 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_net/pid
498 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_match
524 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_match/reload
499 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_match/socket
413 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_match/pid
495 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:43 /run/uwsgi/app/speedy_mail
528 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_mail/reload
497 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_mail/socket
496 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_mail/pid
491 0 drwxr-xr-x 2 ubuntu ubuntu 100 Jul 20 08:42 /run/uwsgi/app/speedy_composer
527 0 -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 08:43 /run/uwsgi/app/speedy_composer/reload
494 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 08:41 /run/uwsgi/app/speedy_composer/socket
493 4 -rw-r--r-- 1 root root 5 Jul 20 08:41 /run/uwsgi/app/speedy_composer/pid
新服务器:
$ find /run/uwsgi/ -ls
554 0 drwxr-xr-x 3 root root 60 Jul 20 10:15 /run/uwsgi/
555 0 drwxr-xr-x 6 root root 120 Jul 20 11:14 /run/uwsgi/app
573 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_net
598 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_net/socket
584 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_net/pid
568 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_match
572 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_match/socket
569 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_match/pid
565 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_mail
567 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_mail/socket
566 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_mail/pid
499 0 drwxr-xr-x 2 ubuntu ubuntu 80 Jul 20 11:14 /run/uwsgi/app/speedy_composer
564 0 srw-rw-rw- 1 ubuntu ubuntu 0 Jul 20 11:14 /run/uwsgi/app/speedy_composer/socket
561 4 -rw-r--r-- 1 root root 5 Jul 20 11:14 /run/uwsgi/app/speedy_composer/pid
旧服务器Ubuntu 16.04.6 LTS
,新服务器Ubuntu 18.04.2 LTS
。
我检查了 /var/log/uwsgi/app/speedy_net.log
,它包含很多行。这是最后 5 行:
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7fe09b2ac393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7fe09b277b70]
*** end of backtrace ***
Sun Aug 11 11:24:35 2019 - DAMN ! worker 2 (pid: 6874) died :( trying respawn ...
Sun Aug 11 11:24:35 2019 - Respawned uWSGI worker 2 (new pid: 6906)
最后 7 行现在是:
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x13a) [0x7f4d7c245e2a]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7f4d7c31a393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
*** end of backtrace ***
Sun Aug 11 11:37:17 2019 - DAMN ! worker 2 (pid: 7915) died :( trying respawn ...
Sun Aug 11 11:37:17 2019 - Respawned uWSGI worker 2 (new pid: 7944)
Sun Aug 11 11:37:17 2019 - epoll_ctl(): File exists [core/event.c line 524]
并且:
Sun Aug 11 11:42:56 2019 - epoll_ctl(): File exists [core/event.c line 524]
Sun Aug 11 11:42:56 2019 - epoll_ctl(): File exists [core/event.c line 524]
Sun Aug 11 11:42:56 2019 - !!! uWSGI process 8118 got Segmentation Fault !!!
Sun Aug 11 11:42:56 2019 - *** backtrace of 8118 ***
/usr/bin/uwsgi(uwsgi_backtrace+0x2a) [0x563d84f5098a]
/usr/bin/uwsgi(uwsgi_segfault+0x23) [0x563d84f50d73]
/lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f4d7ff98f20]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_cleanup_key_block+0xb) [0x7f4d773d4cab]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_clear+0x16) [0x7f4d773d25a6]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(tls1_clear+0x9) [0x7f4d773de219]
/usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_new+0x3f2) [0x7f4d80c11a22]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x23969) [0x7f4d77669969]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x24fc5) [0x7f4d7766afc5]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectPoll+0xb78) [0x7f4d77654ba8]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0xfa28) [0x7f4d77655a28]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectdb+0x1f) [0x7f4d7765841f]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x12b01) [0x7f4d778a9b01]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x1388f) [0x7f4d778aa88f]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_CallFunction_SizeT+0x124) [0x7f4d7c334ce4]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0xc258) [0x7f4d778a3258]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyCFunction_Call+0x96) [0x7f4d7c2460a6]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x7a50) [0x7f4d7c2e8450]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyEval_EvalCodeEx+0x3e) [0x7f4d7c31a67e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1beeb3) [0x7f4d7c2bceb3]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyObject_Call+0x48) [0x7f4d7c334b08]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x4001) [0x7f4d7c2e4a01]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c29e) [0x7f4d7c31a29e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21bbab) [0x7f4d7c319bab]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c29e) [0x7f4d7c31a29e]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3ea5) [0x7f4d7c2e48a5]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1c85ec) [0x7f4d7c2c65ec]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1bc496) [0x7f4d7c2ba496]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1bc970) [0x7f4d7c2ba970]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c058) [0x7f4d7c31a058]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c472) [0x7f4d7c31a472]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21a953) [0x7f4d7c318953]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyFunction_FastCallDict+0x2c3) [0x7f4d7c319fb3]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x131) [0x7f4d7c333ec1]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_Call_Prepend+0xcd) [0x7f4d7c334a9d]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x89) [0x7f4d7c333e19]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x270821) [0x7f4d7c36e821]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0xb8ef5) [0x7f4d7c1b6ef5]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x1ec989) [0x7f4d7c2ea989]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x13a) [0x7f4d7c245e2a]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x21c393) [0x7f4d7c31a393]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x5170) [0x7f4d7c2e5b70]
*** end of backtrace ***
Sun Aug 11 11:42:57 2019 - DAMN ! worker 2 (pid: 8118) died :( trying respawn ...
Sun Aug 11 11:42:57 2019 - Respawned uWSGI worker 2 (new pid: 8124)
Sun Aug 11 11:42:57 2019 - epoll_ctl(): File exists [core/event.c line 524]
从命令行连接到数据库 (PostgreSQL),例如这段代码工作正常:
import django
django.setup()
from django.contrib.sites.models import Site
for site in Site.objects.all().order_by('pk'):
print(site.id, site.domain)
尝试在 uwsgi 配置文件中添加一个套接字指令。
socket = /run/uwsgi/app/speedy_%(project)/socket
你必须告诉 uwsgi 在哪里可以找到套接字。也许在旧服务器上,套接字路径作为命令行标志传递?
nginx 用户和 uswgi 用户都应该拥有对套接字本身的 rw
权限和对每个父目录的 rx
权限。您可以通过 运行 touch
检查两个用户是否可以作为相应用户写入套接字。
sudo --user=nginx touch /run/uwsgi/app/speedy_net/socket
sudo --user=uwsgi touch /run/uwsgi/app/speedy_net/socket
如果其中任何一个失败,则存在权限问题。
可能存在多个问题,你需要调试看看哪里出了问题
1. ALLOWED_HOSTS 未设置
如果您的 django 配置没有设置 ALLOWED_HOSTS
那么这可能会产生错误
2。 nginx 配置缺少一些指令
一些人能够使用以下方法解决他们的问题
sendfile on;
client_max_body_size 20M;
keepalive_timeout 0;
large_client_header_buffers 8 32k;
看看将其添加到您的路线是否有帮助
3。 Django 应用因一些未处理的异常而崩溃
这需要您查看 uwsgi
日志。您可以通过 运行 一个终端中的 uwsgi
进程而不是作为一项服务来实现,或者在 uwsgi.ini
[uwsgi]
logto=/var/log/uwsgi.log
log-ioerror=1
然后查看日志以了解导致崩溃的原因
4.您的请求正在耗时并且超时
在这种情况下,您需要增加 uwsgi
超时。您可以通过在 uwsgi.ini
[uwsgi]
harakiri = 120
及以下到 nginx 配置
uwsgi_read_timeout 120s;
uwsgi_send_timeout 120s;
- uwsgi 因分段错误而崩溃
如果您查看您分享的日志
/usr/bin/uwsgi(uwsgi_segfault+0x23) [0x563d84f50d73]
/lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f4d7ff98f20]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_cleanup_key_block+0xb) [0x7f4d773d4cab]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(ssl3_clear+0x16) [0x7f4d773d25a6]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/./libssl-c0c2ede4.so.1.0.2q(tls1_clear+0x9) [0x7f4d773de219]
/usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_new+0x3f2) [0x7f4d80c11a22]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x23969) [0x7f4d77669969]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0x24fc5) [0x7f4d7766afc5]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectPoll+0xb78) [0x7f4d77654ba8]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(+0xfa28) [0x7f4d77655a28]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/.libs/libpq-bd31fe2b.so.5.11(PQconnectdb+0x1f) [0x7f4d7765841f]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x12b01) [0x7f4d778a9b01]
/home/ubuntu/speedy-net/env/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x1388f) [0x7f4d778aa88f]
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x122342) [0x7f4d7c220342]
这些表明崩溃是由于 Postgres 数据库连接和 ssl 而发生的。现在有很多线程讨论可以帮助您解决问题的不同解决方案
uwsgi segmentation fault when serving a django application
参考资料
https://serverfault.com/questions/276462/nginx-uwsgi-gives-502-bad-gateway
uWSGI request timeout in Python
uwsgi + nginx + flask: upstream prematurely closed
nginx, uwsgi, DJango, 502 when DEBUG=False, "upstream prematurely closed connection"
最后是。我必须 运行 以下 2 个命令:
/home/ubuntu/speedy-net/env/bin/pip uninstall psycopg2
/home/ubuntu/speedy-net/env/bin/pip install --no-binary :all: psycopg2==2.7.7
然后服务器开始工作了。