Використання vcs для поновлення і підтримки веб-сайтів - адміністрування серверів

Що б не зіткнуться з проблемами і помилками злиття і поновлення на веб-серверах застосовують системи управління версіями, які полегшать розподілену розробку сайту

Як це працює

(Version Control System, VCS) системи управління версіями використовуються для контролю змін і можливості створення декількох версій розроблювального проекту. Під час розподіленої розробки вони допомагають систематизувати роботу з декількома версіями одних і тих же документів.

Всі зміни в проекті розміщуються в структурованому сховищі (репозиторії), за допомогою которго взаємодіють розробники. Репозиторій містить службові файли проекту - це проіндексовані і шифровані зміни. Крім того містить робочу версію проектів. Завдяки цьому всі розробники можуть отримувати різні версії документів зі сховищ, створювати свою гілку змін, фіксувати зміни (створювати ревізію), а також відкочувати робочу копію до будь-якої попередньої версії. Даний метод дозволяє забезпечити синхронізацію оновлень.

Як це використовується при супроводі сайту?

Стандартна схема підтримки веб-проекту виглядає наступним чином: розробники вносять зміни на web-сервер сайту, який в свою чергу переглядають користувачі. Якщо кілька розробників змінюють один і той же документ, то перше зміни буде стерто другим, і користувач отримає некоректну інформацію. Буде потрібно знайти попередні версії, щоб відкотити проект, і з'ясувати причину отриманого невідповідності.

Подібні конфлікти змін призводять до потреби створення складних правил зміни і заважає розподіленої роботі програмістів.

Рішенням даної проблеми є система контролю версій, причому для підтримки веб-сайтів найбільш ефективна та схема, при якій на веб-сервері знаходиться два сховища.

Перший репозиторій використовується для збору змін, що приходять від усіх розробників. Який містить гілку з основною версією сайту, master, і додаткових, наприклад, гілка розробки dev і гілка змін hotfix. Програмісти працюють з репозиторієм через VCS консоль і клієнти. Таким чином відбувається зв'язок розробників і проекту. У першому репозиторії немає робочих файлів сайту, тільки службові, що містять зміни.

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

Відбувається синхронізація і установка змін, сайт містить найсвіжішу версію. У разі проблем проект можна відкотити на засобами VCS на попередню версію.

Яку систему вибрати

В даний час існує безліч систем управління версіями. Хоча схема налаштування на веб-сайті описана в загальному випадку, щоб показати її універсальність, все-таки варто згадати про основні різновиди VCS.

Централізовані системи управління (наприклад, Subversion. CVS) припускають наявність єдиного сховища для всіх розробників, на якому зберігаються всі гілки проекту.

У розподілених системах (Git, Mercurial, Bazaar) історія змін зберігається в локальних сховищах розробників, і необхідні її фрагменти синхронізуються між собою через центральний репозиторій.

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

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

Таким чином, відбувається синхронізація і установка оновлень, а сайт завжди містить найсвіжішу версію. У разі необхідності проект можна буде відкотити на попередній етап засобами VCS.

Яку систему вибрати

В даний час існує безліч систем управління версіями. Хоча схема налаштування на веб-сайті описана в загальному випадку, щоб показати її універсальність, все-таки варто згадати про основні різновиди VCS.

Централізовані системи управління (наприклад, Subversion, CVS) припускають наявність єдиного сховища для всіх розробників, на якому зберігаються всі гілки проекту.

У розподілених системах (Git, Mercurial, Bazaar) історія змін зберігається в локальних сховищах розробників, і необхідні її фрагменти синхронізуються між собою через центральний репозиторій.

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

Тепер необхідно розмежувати доступ для розробників засобами сервера і VCS.

Системи управління версіями дають більше свободи розробникам, зменшуючи залежність один від одного.

Налаштування завершено. Для перевірки необхідно створити ревізію в основний гілці першого сховища, і поновлення з'являться на сайті.

Переваги і нюанси

Давайте з вами зважимо гідності описаної нами схеми роботи:
> Виключення конфлікту злиття змін. Завдяки синхронізації сховищ не потрібні спеціальні правила для виконання оновлень.
> Розподілена розробка. Система управління версіями дозволяє використовувати розгалуження, тобто створення різних варіантів документа із загальною історією змін до точки розгалуження і з різними після неї. Коли гілка досягає стабільності, відбувається злиття. Паралельне виконання декількох завдань є особливо актуальним для сучасної веб-розробки, так як зазвичай при створенні і підтримці проекту точне планування неможливо.
> Збереження історії змін. Так як основна інформація про оновлення фіксується, і при необхідності є можливість однією командою відновити будь-яку з попередніх версій документа.
> Простота управління вихідним кодом. Засоби системи дозволяють порівнювати версії файлів через підрядник, контролюючи їх зміни.
> Простота інтеграції. Дану систему можна застосувати до запущеного сайту без закриття на обслуговування і переміщення файлів.
> Безкоштовне програмне забезпечення. Більшість систем управління версіями є вільно поширюваними

А що ж на іншій чаші ваг?

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

По-друге, варто потурбуватися виділенням місця на сервері для репозиторіїв. Так як в них зберігаються всі змінювані файли, то при наявності великої кількості графіки на сайті переповнення може виявитися несподіваною проблемою, незважаючи на те що дані в сховищах містяться в стислому вигляді. В цьому випадку необхідно правильно налаштувати перевірку видалення старих гілок і змін.
Також, якщо ваш сайт використовує бази даних, може виникнути питання з контролем їх оновлень. Так як вихідний код таких файлів не є наочним, іноді має сенс використовувати функції збереження сценарію запитів до СУБД. Нарешті, не треба забувати про спеціалізовані продукти, службовців для розгортання та оновлення програм, наприклад, Capistrano. У деяких випадках краще скористатися ними.
• • •
Системи управління версіями дають більше свободи розробникам, зменшуючи залежність один від одного, і час, витрачений на розуміння їх функціонування, окупиться при подальшій розробці.
Про подібні системах можна говорити нескінченно, проте кращий спосіб оцінити зручність використання - це перевести на VCS свій сайт, як вже зробили багато відомих фірм.

Якщо Вам необхідна установка і налаштування систем контролю версій звертайтеся: [email protected]

Можливо Вам буде цікаво:

Схожі статті