Как исправить ошибку "Не удалось перезапустить службу 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.