Я следую за этим, Как Настроить Django с Пост-ГРЭС, 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
Исходный RECOMENDED_FORMATTING-s в руководстве
[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.
Для решения этого я попробовал
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
У Вас есть раздел [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
.