Попытка настроить Gunicorn - PullRequest
0 голосов
/ 05 мая 2019

Я следовал этому учебнику , чтобы развернуть мой проект django в Digital Ocean. Я пытаюсь настроить gunicorn .

Структура моего проекта выглядит примерно так:

enter image description here

На моем settings.py Я использую DEBUG=False

Я создаю gunicorn.socket и gunicorn.service.

/ и т.д. / Systemd / система / gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

/ и т.д. / Systemd / система / gunicorn.service

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

[Service]
User=someuser
Group=www-data
WorkingDirectory=/home/someuser/myproject
ExecStart=/home/someuser/myproject/myprojectenv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          Myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Я запускаю и включаю сокет Gunicorn:

sudo systemctl start gunicorn.socket 
sudo systemctl enable gunicorn.socket

Проверьте состояние процесса, чтобы узнать, удалось ли запустить его:

sudo systemctl status gunicorn.socket

Это то, что я получаю, а затем оно возвращается в командную строку.

Failed to dump process list, ignoring: No such file or directory
β—� gunicorn.socket - gunicorn socket
   Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Sat 2019-05-04 23:12:03 UTC; 13s ago
   Listen: /run/gunicorn.sock (Stream)
   CGroup: /system.slice/gunicorn.socket

May 04 23:12:03 myproject systemd[1]: Listening on gunicorn socket.

Далее я проверяю наличие файла gunicorn.sock в каталоге / run:

file /run/gunicorn.sock
/run/gunicorn.sock: socket

Кажется, что файл или каталог не существует, но он не предоставляет больше подробностей. Gunicorn.sock, кажется, существует.

Я знаком с Python, но не с серверами и развертыванием, поэтому я в растерянности.

Несколько месяцев назад я успешно выполнил аналогичное руководство для Ubuntu 16.04, но теперь продолжаю сталкиваться с проблемами.

1 Ответ

0 голосов
/ 05 мая 2019

Это на самом деле проблема с использованием systemd. Вы должны ссылаться на название услуги в своих вызовах на systemctl, а не на сокет, как вы делаете. В вашем случае сервис будет называться gunicorn, потому что вы назвали файл модуля systemd как gunicorn.service.

systemctl enable gunicorn
systemctl start gunicorn
...