Как автоматически разбудить virtualenv и gunicorn в nginx? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть цифровой сервер Ocean с проектом, который работает правильно, но каждый раз, когда я reboot сервер или закрываю ssh session, gunicorn service останавливается и я не могу подключиться.

На сервере установлены Ubuntu 18 и NGINX в качестве веб-сервера.

Мои gunicorn заявления:

gunicorn --bind unix:/tmp/gunicorn.sock computationalMarketing.wsgi:application

Также мне нужно перед выполнением этого оператора включить virtual environtment.

Есть ли способ каждый раз запускать virtualenv & gunicorn и не беспокоиться об этом?

Спасибо

EDIT:

Я создаю файл службы systemd (прикрепленный скрипт ниже), но он показывает следующую ошибку:

Warning: The unit file, source configuration file or drop-ins of gunicorn.service changed on disk. Run 'systemctl daemon-reload' to reload units.
● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2018-07-03 11:57:19 UTC; 10s ago
  Process: 8446 ExecStart=/var/www/computationalMarketing/bin/activate (code=exited, status=217/USER)
 Main PID: 8446 (code=exited, status=217/USER)

Jul 03 11:57:19 tfm-rius systemd[1]: Starting gunicorn daemon...
Jul 03 11:57:19 tfm-rius systemd[8446]: gunicorn.service: Failed to determine user credentials: No such process
Jul 03 11:57:19 tfm-rius systemd[8446]: gunicorn.service: Failed at step USER spawning /var/www/computationalMarketing/bin/activate: No such process
Jul 03 11:57:19 tfm-rius systemd[1]: gunicorn.service: Main process exited, code=exited, status=217/USER
Jul 03 11:57:19 tfm-rius systemd[1]: gunicorn.service: Failed with result 'exit-code'.
Jul 03 11:57:19 tfm-rius systemd[1]: Failed to start gunicorn daemon.
root@tfm-rius:/var/www/computationalMarketing/computationalMarketing/code/computationalMarketing#

Сценарий

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

[Service]
Type=oneshot
User=root
Group=www-data
WorkingDirectory=/var/www/computationalMarketing
ExecStart=/var/www/computationalMarketing/bin/activate
ExecStart=/var/www/computationalMarketing/computationalMarketing/code/computationalMarketing/gunicorn --access-logfile --bind unix:/tmp/gunicorn.sock computationalMarketing.wsgi:application

[Install]
WantedBy=multi-user.target

Вопрос

Эта ошибка связана с пользователем, используемым в теле службы, или, возможно, с одной из команд execStart?

Изменить цель : Показать мой следующий шаг для решения вопроса.

1 Ответ

0 голосов
/ 29 июня 2018

Вам не нужно явно запускать virtualenv. Вы можете установить gunicorn внутри вашего virtualenv и запустить его как /path/to/your/virtualenv/bin/gunicorn --pythonpath=/path/to/your/virtualenv/lib/python2.7/site-packages <other args>, и он будет работать под управлением virtualenv python

...