Простая внутренняя ошибка сервера, поскольку запущенный uwsgi продолжает удалять файл .sock
Я пытаюсь развернуть свое первое приложение django, следуя этим шагам. Проблема в том, что по какой-то причине запуск uwsgi --emperor venv/vassals/ --uid www-data --gid www-data
после активации venv
просто удаляет файл .sock
в моем корневом каталоге. Я предполагаю, что это вызывает проблему, потому что просмотр журналов nginx на /var/log/nginx/error.log
предполагает следующее:
2021/10/11 22:09:57 [crit] 4281#4281: *6 connect() to unix:///var/www/dolphin/dolphin.sock failed (2: No such file or directory) while connecting to upstream, client: 81.102.82.13, server: example.com, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:///var/www/dolphin/dolphin.sock:", host: "example.com", referrer: "https://example.com/
Вот мой конфигурационный файл в /etc/nginx/sites-available (симлинк на sites-enabled):
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# the upstream component nginx needs to connect to
upstream django {
server unix:///var/www/dolphin/dolphin.sock;
#server unix:/var/www/dolphin/dolphin.sock;
}
# configuration of the server
server {
listen 443 ssl;
server_name example.com;
charset utf-8;
# max upload size
client_max_body_size 75M;
# Django media and static files
location /media {
alias /var/www/dolphin/app/media;
}
location /static {
alias /var/www/dolphin/app/static;
}
# Send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /var/www/dolphin/uwsgi_params;
}
}
Мой файл dolphin_uwsgi.ini:
[uwsgi]
# full path to Django project's root directory
chdir = /var/www/dolphin/
# Django's wsgi file
module = /var/www/dolphin/app/app/wsgi.py
# full path to python virtual env
home = /var/www/dolphin/venv/
# enable uwsgi master process
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /var/www/dolphin/dolphin.sock
# socket permissions
chmod-socket = 666
# clear environment on exit
vacuum = true
# daemonize uwsgi and write messages into given log
daemonize = /var/www/dolphin/uwsgi-emperor.log
Я продолжаю получать внутреннюю ошибку сервера при загрузке сайта в браузере по какой-то причине (то есть после активации моего venv и запуска uwsgi --emperor venv/vassals/ --uid www-data --gid www-data
) и я не знаю почему, так как инструктор, кажется, делает это так же, как и я, но это работает для него.
Может ли кто-нибудь предложить здесь какую-либо точку зрения? Спасибо
В случае, если это может помочь, вот некоторые потенциально значимые части settings.py
:
from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
ALLOWED_HOSTS = ['example.com']
WSGI_APPLICATION = 'app.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'app/static')
]
MEDIA_URL = '/images/'
# full path to Django project's root directory chdir = /var/www/dolphin/ # Django's wsgi file module = /var/www/dolphin/app/app/wsgi.py
Поскольку manage.py находится внутри dolphin/app, это корневой каталог вашего Django проекта.
# full path to Django project's root directory
chdir = /var/www/dolphin/app
# Django's wsgi file
wsgi-file = app/wsgi.py
В командной строке: uwsgi --socket dolphin.sock --chdir app --wsgi-file app/wsgi.py
Ссылка: https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html