![Не удалось запустить gunicorn.service: Модуль gunicorn.service не найден. Ubuntu 18.04](https://rvso.com/image/922397/%D0%9D%D0%B5%20%D1%83%D0%B4%D0%B0%D0%BB%D0%BE%D1%81%D1%8C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%20gunicorn.service%3A%20%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%20gunicorn.service%20%D0%BD%D0%B5%20%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD.%20Ubuntu%2018.04.png)
Я слежуэтотРуководство по настройке Django с Postgres, Nginx и Gunicorn в Ubuntu 18.04.
Я создал следующий файл .socket
sudo nano /etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
Я создал следующий файл .service
sudo nano /etc/systemd/system/gunicorn.service
Оригинальные RECOMMENDED_FORMATTING-ы вгид
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=sammyRECOMENDED_FORMATTING
Group=www-data
WorkingDirectory=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING
ExecStart=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING/myprojectenvRECOMENDED_FORMATTING/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myprojectRECOMENDED_FORMATTING.wsgi:application
[Install]
WantedBy=multi-user.target
Как я отформатировал свою версиюУ меня виртуальная среда находилась за пределами папки проекта на сервере
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=SERVER_USER
Group=www-data
WorkingDirectory=/home/SERVER_USER/MAIN_PROJECT_FOLDER
ExecStart=/home/SERVER_USER/ven/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/home/SERVER_USER/MAIN_PROJECT_FOLDER/MAINAPPLICATION_FOLDER.sock \
MAINAPPLICATION_FOLDER.wsgi:application
[Install]
WantedBy=multi-user.target
Я также пробовал оставить их такими, как было рекомендовано изначально.
--bind unix:/run/gunicorn.sock \
Затем я попытался выполнить следующий код
sudo systemctl start gunicorn
сообщение об ошибке 1
Failed to start gunicorn.service: Unit gunicorn.service not found.
и я также пробовал с 2
sudo systemctl start gunicorn.socket
Сообщение об ошибке 2
Failed to start gunicorn.socket: Unit gunicorn.socket is not loaded properly: Invalid argument.
See system logs and 'systemctl status gunicorn.socket' for details.
Чтобы решить эту проблему, я попробовал
- https://stackoverflow.com/questions/40711747/не удалось запустить-gunicorn-service-unit-gunicorn-service-not-foundЭто отсылает нас к тому же руководству, которое я сейчас делаю, только для более старой версии Linux.
- это не тот же код и на него нет ответаНе удалось загрузить модуль gunicorn.service: Нет такого файла или каталога
- Запуск:
systemctl status gunicorn.socket
Результат:Warning: The unit file, source configuration file or drop-ins of gunicorn.socket changed on disk ● gunicorn.socket - gunicorn daemon Loaded: error (Reason: Invalid argument) Active: inactive (dead)
- Запуск:
systemctl is-enabled gunicorn.socket
Результат:enabled
- Запуск:
systemctl is-enabled gunicorn.service
Результат:Failed to get unit file state for gunicorn.service: No such file or directory
решение1
В вашей службе есть раздел [Install], который означает, что вам необходимо выполнить команду sudo systemctl enable gunicorn.service
для запуска службы при запуске системы.
После запуска команды в каталоге будет создана символическая ссылка на этот файл /etc/systemd/system/multi-user.target.wants/
.
Обратите внимание, что вам также нужно создать файл сокета с именем gunicorn.socket
и включить его. После включения вы можете активировать сокет, выполнив команду sudo systemctl start gunicorn.socket
. Вам не нужно запускать службу, так как systemd выяснит зависимость.
Вы можете проверить статус услуги с помощью systemctl status gunicorn.service
.
решение2
в моем случае сервер не создал файл gunicorn.socket
, поэтому мне пришлось создать файл самостоятельно и включить его.
перейдите по адресу: /etc/systemd/system
и проверьте все доступные файлы и каталоги с помощью команды ls
.
если файла там нет, попробуйте заново создать файл с самого начала с помощью: sudo nano ~/etc/systemd/system/gunicorn.socket
, или sudo nano gunicorn.socket
.
и затем сначала включите его с помощью: sudo systemctl enable gunicorn.socket
, после включения выполните: sudo systemctl start gunicorn.socket
.
если все работает нормально, вы увидите статус файла gunicorn.socket
«активен», после выполнения команды sudo systemctl status gunicorn.socket
вы увидите:
gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor prese>
Active: active (listening) since Fri 2020-06-26 17:53:10 UTC; 14s ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
Tasks: 0 (limit: 1137)
Memory: 0B
CGroup: /system.slice/gunicorn.socket