У попередній статті я писав про те, як підняв SVN (Subversion) сервер, наскільки зручніше стала розробка веб-проектів! Але запарили, якщо чесно, кілька моментів. Зараз я їх вирішив, тому хочу поділитися інфою, може комусь знадобиться:
Проблеми, які мене компост раніше:
- Незрозуміло, як заливати зміни в каталог даних веб-сервера;
- Доводилося при кожному Ком-апдейте забивати свій пароль SSH;
- Доводилося вручну апдейт каталог даних веб-сервера (п.1);
Отже, як же я поборов ці проблеми:
Як не дивно, заливати зміни в каталог веб-сервера виявилося нескладно, за допомогою update. Створив скрипт з однією командою:
svn update / var / svn / repository_name / var / www / path
і зробив його виконуваним:
# Chmod u + x svn_up.sh
Щож, непогано. Тільки ось запитує пароль. Не можу зрозуміти чому, на кшталт локальний репозиторій. Та й власник файлів root. Доповнив скрипт командою
chown -R www-data: www-data / var / www / path
Тепер за частиною пароля. Звернемося до попередньої статті і згенерувати пари ключів (з локального хоста на Windows за допомогою утиліти puttygen.exe, і локально на сервері (як зробити аутентифікацію по ключу ssh). Додамо ці ключі в файл authorized_keys свого користувача ssh на сервері.
Тепер нам потрібно заливати коммітов з хоста Windows (клієнт TurtoiseSVN) і не отримувати набридливу вікно запиту пароля - для цього потрібно злегка модифікувати опції:
Вибираємо в якості SSH-клієнта виконуваний файл TurtoisePlink.exe (з каталогу), вказуємо йому опції -l ім'я користувача, і -i - приватний ключ, сгенеренной в puttygen.exe (у мене він зберігається на захищеному диску)
Залишилася остання проблема. Після коммітов файли заливаються в репозиторій, але не в каталог веб-сервера. Їх звідти потрібно забрати update-му. Можна повісити в крон це, але щоб не смикати планувальник кожну хвилину, я вирішив поколупати SVN і знайшов класну річ - hooks! Хукі - це щось на зразок переривань. Вони знаходяться в каталозі / var / svn / repo_name / hooks - по суті це є звичайні скрипти, які виконуються в різний момент.
Візьмемо файл post-commit.tmpl і перейменуємо його у просто post-commit (виконуватися після коммітов). Поміняємо вміст файлу на наше вміст, яким ми апдейт вручну.
Тепер при кожному Ком буде викликатися цей скрипт, який заливає зі сховищ змінену версію файлів в каталог веб-сервера, змінює права доступу! Все класно.