Найти в Дзене
OS LAB

Автоматическая перезагрузка сервера Flask после получения обновлений из репозитория Git Pull

#githooks #wsgi Небольшое вступление WSGI это стандарт взаимодействия между Python и веб-сервером, веб-сервер отслеживает изменения WSGI, по сути он наблюдает только за файлом указанным в конфигах WSGIScriptAlias / /var/www/mysite/wsgi.py В нашем случае это /var/www/luchoffice_pythonanywhere_com_wsgi.py Сервер автоматически перезагрузится при изменении сценария WSGI, при этом менять содержимое совсем не обязательно, достаточно выполнить команду touch /var/www/luchoffice_pythonanywhere_com_wsgi.py Этот метод, позволяет автоматически перезагружать сайт WSGI в производственной среде без перезапуска всего сервера. Про гит хуки Что бы связать событие pull с перезагрузкой сервера, использовать вебхуки как мы делали это здесь не получится. Для этой задачи у git есть свои хуки - githook. Для события pull хука не предусмотрено, но в этом и нет смысла, т.к. pull это комбинация из двух команду git fetch и git merge, будем использовать хук post-merge В репозитории на сервере PythonAnywhere в папк
Оглавление

#githooks #wsgi

Небольшое вступление

WSGI это стандарт взаимодействия между Python и веб-сервером, веб-сервер отслеживает изменения WSGI, по сути он наблюдает только за файлом указанным в конфигах WSGIScriptAlias / /var/www/mysite/wsgi.py

В нашем случае это /var/www/luchoffice_pythonanywhere_com_wsgi.py

Сервер автоматически перезагрузится при изменении сценария WSGI, при этом менять содержимое совсем не обязательно, достаточно выполнить команду

touch /var/www/luchoffice_pythonanywhere_com_wsgi.py

Этот метод, позволяет автоматически перезагружать сайт WSGI в производственной среде без перезапуска всего сервера.

Про гит хуки

Что бы связать событие pull с перезагрузкой сервера, использовать вебхуки как мы делали это здесь не получится.

Для этой задачи у git есть свои хуки - githook. Для события pull хука не предусмотрено, но в этом и нет смысла, т.к. pull это комбинация из двух команду git fetch и git merge, будем использовать хук post-merge

В репозитории на сервере PythonAnywhere в папке .git/hooks создаем файл touch post-merge и записываем команду для перезагрузки сервера

#!/bin/sh
touch /var/www/luchoffice_pythonanywhere_com_wsgi.py

делаем файл исполняемым chmod +x post-merge

и проверяем работу системы с новым коммитом...