#django #nginx #uwsgi
Вопрос:
Я застрял на несколько часов, пытаясь заставить эту конфигурацию работать. Вот мои данные о конфигурации ниже:
[uwsgi] uid = ubuntu gid = ubuntu plugins = python3 wsgi-file = /home/ubuntu/core/core/wsgi.py virtualenv = /home/ubuntu/virtual chdir = /home/ubuntu/core home = /home/ubuntu/virtual env = DJANGO_SETTINGS_MODULE=core.settings socket = /run/uwsgi/app.sock logto = /var/log/uwsgi/%n.log module = core.wsgi:application chown-socket = ubuntu:ubuntu chmod-socket = 666 enable-threads = True
и для nginx:
# nginx -c /etc/nginx/nginx.conf server { listen 80; server_name example.com; proxy_hide_header X-Frame-Options; if ($http_x_forwarded_proto = 'http') { return 301 https://$server_name$request_uri; } proxy_set_header X-Forwarded-Proto https; location /static { root /home/ubuntu/core/assets; } location / { include uwsgi_params; uwsgi_pass unix:/run/uwsgi/app.sock; } }
Я не вижу никаких ошибок в журналах, но там все равно написано 500 ошибок. Я внимательно прочитал документацию по uwsgi и nginx. Я чего-то не понимаю? Любая помощь будет признательна!
ПРАВКА 1
Вот моя LOGGING
со стороны Джанго:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '[%(levelname)s %(asctime)s %(thread)d] ' '%(module)s:%(funcName)s - %(message)s' }, 'simple': { 'format': '%(levelname)s %(message)s' }, 'loggly': { 'format': 'loggly: %(message)s', }, }, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'handlers': { 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, "mail_admins": { "level": "ERROR", "filters": ["require_debug_false"], "class": "django.utils.log.AdminEmailHandler", "include_html": True, }, 'console': { 'level': 'DEBUG', 'formatter': 'verbose', 'class': 'logging.StreamHandler' }, 'file': { 'level': 'DEBUG', 'class': 'logging.handlers.TimedRotatingFileHandler', 'formatter': 'verbose', 'filename': str(Path(BASE_DIR, 'logs', 'django.log').resolve()), 'when': 'midnight', 'interval': 1 }, }, 'loggers': { 'django.security.DisallowedHost': { 'handlers': ['null'], 'propagate': False, }, 'main': { 'handlers': ['file', 'console', 'mail_admins'], 'level': 'INFO', 'propagate': True, }, 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, } } }
Комментарии:
1. Я не знаком с ведением журнала uwsgi, поэтому я не уверен, что делает %n in
/var/log/uwsgi/%n.log
, но даже если uwsgi правильно записывает в файл журнала, вы, вероятно, не увидите точную ошибку, только то, что произошла ошибка. 500 означает, что служба работает правильно, но при обработке вашего запроса произошла ошибка. Вам нужно будет заглянуть в журнал Django. Что такое значениеLOGGING
в настройках Django?2. Обновлено с помощью ведения журнала Django.
3. Общий доступ к журналам nginx в
/var/log/nginx/*.log
4. Разве вы не должны видеть 500 ошибок, зарегистрированных в
django.log
файле?5. Это была проблема с разрешениями! Спасибо за помощь.