Материал просмотрен 129 раз(а)

В предыдущей статье я писал о том, как поднял SVN (Subversion) сервер, насколько удобнее стала разработка веб-проектов! Но запарило, если честно, несколько моментов. Сейчас я их решил, поэтому хочу поделиться инфой, может кому-то понадобится:

Проблемы, которые меня компостили раньше:

  1. Непонятно, как заливать изменения в каталог данных веб-сервера;
  2. Приходилось при каждом коммите-апдейте забивать свой пароль SSH;
  3. Приходилось вручную апдейтить каталог данных веб-сервера (п.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) и не получать надоедливое окно запроса пароля – для этого нужно слегка модифицировать опции:

opt

Выбираем в качестве SSH-клиента исполняемый файл TurtoisePlink.exe (из каталога {TurtoiseSVN\bin}), указываем ему опции -l имя пользователя, и -i – приватный ключ, сгенереный в puttygen.exe (у меня он хранится на защищённом диске)

Теперь при коннекте мы будем авторизовываться по ключу и пароль не будет запрашиваться! Отлично!

Осталась последняя проблема. После коммита файлы заливаются в репозиторий, но не в каталог веб-сервера. Их оттуда нужно забрать update-ом. Можно повесить в крон это, но чтобы не дёргать планировщик каждую минуту, я решил поковырять SVN и нашёл классную вещь – hooks! Хуки – это что-то вроде прерываний. Они находятся в каталоге /var/svn/repo_name/hooks – по сути это есть обычные скрипты, которые выполняются в разный момент.

Возьмём файл post-commit.tmpl и переименуем его в просто post-commit (выполняться после коммита). Поменяем содержимое файла на наше содержимое, которым мы апдейтили вручную.

Теперь при каждом коммите будет вызываться этот скрипт, который заливает из репозитория изменённую версию файлов в каталог веб-сервера, меняет права доступа! Всё классно.