Настройка Gunicorn
Для начала, необходимо создать пользователя www под которым будет работать Gunicorn:
useradd www --gid www-data --shell /bin/false --no-create-home
Теперь перейдём в директорию /var/www/mysite_03/mysite и создадим конфиг для Gunicorn с именем gunicorn_config.py:
cd mysite
vi gunicorn_config.py
Со следующим содержимым:
command = '/var/www/mysite_03/env/bin/gunicorn'
python_path = '/var/www/mysite_03/mysite'
bind = '0.0.0.0:8001'
workers = 5
user = 'www'
raw_env = 'DJANGO_SETTINGS_MODULE=mysite.settings'
Примечание: если имя проекта отличается от mysite, необходимо изменить конфиг следующим образом:
command = '/var/www/your_project_dir/env/bin/gunicorn'
python_path = '/var/www/your_project_dir/your_project_name'
bind = '0.0.0.0:8001'
workers = 5
user = 'www'
raw_env = 'DJANGO_SETTINGS_MODULE=your_project_name.settings'
Не забываем сохранить файл(Нажимаем Esc и вводим :wq, нажимаем Enter. Если по каким-то причинам не нужно сохранять изменения в редактируемом файле вводим :q!. А если редактор использовался только для просмотра содержимого файла то тогда для выхода используем :q)
Теперь перейдём в директорию /var/www/mysite_03 и создадим скрипт для запуска Gunicorn с именем gunicorn.sh:
cd ..
vi gunicorn.sh
Со следующим содержимым:
#!/bin/bash
source /var/www/mysite_03/env/bin/activate
exec gunicorn -c "/var/www/mysite_03/mysite/gunicorn_config.py" mysite.wsgi
Примечание: если имя проекта отличается от mysite, необходимо изменить скрипт следующим образом:
#!/bin/bash
source /var/www/your_project_dir/env/bin/activate
exec gunicorn -c "/var/www/your_project_dir/your_project_name/gunicorn_config.py" your_project_name.wsgi
Сохраняем файл(нажимаем Esc и вводим :wq, нажимаем Enter).
Теперь устанавливаем права на запуск этого файла и проверяем:
chmod 755 gunicorn.sh
ls -la gunicorn.sh
Сервер приложений Gunicorn должен постоянно работать, перезагружаться в случае сбоя и автоматически загружаться при старте виртуального сервера или после перезагрузки виртуального сервера.
Воспользуемся systemd для создания демон-процесса.
Для этого перейдём в директорию /etc/systemd/system и создадим файл с именем gunicorn.service:
cd /etc/systemd/system
vi gunicorn.service
Со следующим содержимым:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www
Group=www-data
WorkingDirectory=/var/www/mysite_03
ExecStart=/var/www/mysite_03/gunicorn.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Примечание: если имя проекта отличается от mysite, необходимо изменить этот файл следующим образом:
WorkingDirectory=/var/www/your_project_dir
ExecStart=/var/www/your_project_dir/gunicorn.sh
Сохраняем файл(нажимаем Esc и вводим :wq, нажимаем Enter).
Теперь устанавливаем права на запуск этого файла и проверяем:
chmod 755 gunicorn.service
ls -la gunicorn.service
Обновим список юнитов командой:
systemctl daemon-reload
Запускаем службу Gunicorn:
systemctl start gunicorn
И сразу проверяем её состояние:
systemctl status gunicorn
Служба Gunicorn запустилась и работает, завершаем просмотр нажатием клавиши Q.
Теперь добавим службу Gunicorn в автозагрузку, выполним:
systemctl enable gunicorn
Теперь откроем наш сайт в браузере: http://<имя вашего домена>:8001:
Сайт заработал, но с ошибкой. Чтобы её устранить необходимо отредактировать файл настроек settings.py, это будет рассмотрено в следующем шаге.