Svn для розгортання веб-додатки

Система керування версіями Subversion такою великою. що підходить не тільки для розробки, а й розгортання (викочування) всього сервісу / додатки / сайту на продакшн-сервер.

Svn для розгортання веб-додатки

Методів кілька, так що постараємося розібрати кожен з них.

Використовуючи SVN Hooks

Хукі (hooks) - це, по суті, скрипти, які запускаються з певних подій, зміні ревізії, наприклад. Вони виконуються в автоматичному режимі, тому як не можна краще підходять для автоматичного розгортання додатків.

шаблони хуков

Репозиторій SVN за замовчуванням містить директорію hooks. в якій розміщені шаблони різних хуков:

# Вміст директорії hooks за замовчуванням

Їх назви коротко описують, коли ці скрипти запускаються. В даному випадку нас цікавить post-commit. який запускається відразу ж після коммітов нової ревізії, коли вже є номер ревізії.

Схема роботи

Найімовірніше ви не захочете скидати версію з розробки відразу ж в продакшн. Логічніше спочатку її запустити і перевірити на тестовому сервері, щоб провести всю необхідну налагодження і вчасно позбутися від багів, якщо вони є. А вже після цього розгортати додаток на загальнодоступному сервері.

Так що процес буде приблизно таким:
  1. розробка на стороні клієнта;
  2. Комміт змін в репозиторій;
  3. автоматичне внесення змін на тестовий сервер;
  4. налагодження, перевірка працездатності;
  5. розгортання поновлення (по команді, в автоматичному режимі) на продакшн сервер.

реальні приклади

Для початку потрібно скласти скрипти для SVN, які можуть бути написані на будь-якому зрозумілою сервера мовою (Bash, Python і т.д.).

Фактично потрібно всього два скрипта: один для відправки на тестовий сервер і перевірки команди на розгортання; і другий для безпосередньої вивантаження на продакшн-сервер.

Скрипт post-commit матиме такий вигляд:

В даному прикладі всі версії, які пройшли Комміт, вивантажуються на тестовий сервер, але якщо в повідомленні коммітов міститься комманда на деплоймент, то файли додатково вивантажуються і на загальнодоступний сервер. В цьому випадку запускається другий скрипт:

# Використовується команда svn export, яка робить чисту копію сховища без файлів .svn

Напівавтоматичне розгортання додатків

Деплоймент за допомогою Subversion може бути таким же простим, як виконання svn up. Для цього потрібен встановлений клієнт svn на продакшн-сервері, чистий репозиторій і пара додаткових заходів безпеки.

приховування конфігов

Швидше за все конфігурації на продакшн і тестовому серверах відрізняються, так що потрібні файли необхідно убезпечити і виключити з поновлення в svn. Для початку краще створити директорію типу / defaults. скопіювати в неї всі потрібні файли, а потім додати в svn і закоммітіть.

Тепер можна видалити конфіги сайту з svn:

# Локальні копії файлів будуть збережені

# Все внесені в .svn_ignore файли будуть ігноруватися

Безпека

Директорії .svn за замовчуванням доступні широкому інтернету, якщо вони лежать на сервері. Так що найкращим і одночасно простим рішенням буде заборона на доступ до цих папок на стороні веб-сервера. Для цього в файлі конфігурації Nginx в секцію http потрібно додати подібне:

# Заборона доступу до всіх файлів з необхідним розширенням

А в Apache це робиться так:

# Настроюється блок сайту або головний конфіг веб-сервера

Деплоймент

Тепер достатньо підключитися до свого продакшн-сервреру по SSH, перейти в директорію document_root і виконати:

# Все файли і зміни будуть скопійовані на сервер

Примітно, що такий спосіб дозволить швидко відкотитися на необхідну ревізію і взагалі проводити всі необхідні маніпуляції з svn прямо на продакшн-сервері.

Найголовніше

Після невеликої настройки і написання пари скриптів, ви зможете розгортати веб-додаток або сайт на виробничий сервер в автоматичному режимі. Головне не забувати перевірити працездатність розробки перед викочуванням.

Svn для розгортання веб-додатки

матеріали по темі