Как исправить ошибку "Не удалось перезапустить службу gunicorn.service: Unit gunicorn.socket not found." ошибка?

Я пытаюсь развернуть приложение django на дроплете DigitalOcean. Я создал службу systemd для запуска gunicorn при загрузке.

Вот мой файл конфигурации: (/etc/systemd/system/gunicorn.service)

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=root
Group=www-data
Environment="DJANGO_SETTINGS_MODULE=core.settings.production"
WorkingDirectory=/home/myproject-api/src
ExecStart=/home/myproject-api/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock core.wsgi:application

[Install]
WantedBy=multi-user.target

Когда я запускаю строку "ExecStart" непосредственно на терминале, она работает. Но я не могу запустить службу gunicorn.

Я получаю эту ошибку, когда пытаюсь запустить gunicorn: Failed to start gunicorn.service: Unit gunicorn.socket not found.

Я проверил исполняемый файл gunicorn, он существует:

test -f /home/myproject-api/env/bin/gunicorn && echo "Gunicorn exists."

Я могу запустить сервер с помощью команды gunicorn --bind 0.0.0.0:8000 core.wsgi. Когда я запускаю сервер таким образом, я могу получить доступ к нему, используя IP-адрес сервера.

В норме файл сокета должен быть создан при запуске сервера. Также я пытался создать файл сокета с помощью "touch /run/gunicorn.sock", но это не помогло.

Я дважды проверил имена файлов и каталогов. Ошибки нет.

Как я могу решить эту проблему?

Я решил эту проблему, создав /etc/systemd/system/gunicorn.socket файл:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

В Ubuntu 20 мы должны создать этот файл для запуска службы gunicorn.

Вернуться на верх