Я слежу этот Как настроить 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
Исходные RECOMENDED_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.
Чтобы решить эту проблему, я попробовал
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
Это исправило это:
sudo systemctl enable gunicorn.service