Автоматизация обновления серверной www-директории из svn-репозитория через php-скрипт
Многие программисты при разработке используют систему контроля версий (CVS). Я в своей практике использую Subversion: для отлаженных на рабочем месте скриптов я выполняю commit, а затем на сервере делаю update. Для удобаства обновления серверной www-директориии был разработан следующий php-скрипт …
updater.php
<?php
echo "Update begin: ".date('c')." <br/><pre>";
echo shell_exec('export LC_CTYPE="ru_RU.UTF-8"
/usr/bin/svn --non-interactive --username=user --password=pass up /var/www/domain.com 2>svn_log.txt');
echo "</pre>Update end: ".date('c')."!";
?>
Немного прокомментирую приведенный код.
В первой и последней строках выполняется вывод времени начала и окончания операции обновления. В главной функции shell_exec выполняется 2 действия:
- export LC_CTYPE="ru_RU.UTF-8" - выполняется подключения русского языка, на случай, если были закоммичены файлы с русскоязычными названиями
- с новой строки выполняется сама операция апдейта данных, в которой указываются:
- /usr/bin/svn - путь к исполняемому svn-файлу;
- user – имя пользователя svn;
- pass – его пароль;
- /var/www/domain.com – серверный путь к www-директории для апдейта;
- svn_log.txt – имя файла в который будут писаться сообщения о всех возникших ошибка.
Созданный скрипт updater.php и файл svn_log.txt (дать доступ 777) нужно положить в корень обновляемой www-директории и затем в браузере вызавть урл
http://domain.com/updater.php
После этого на экране Вы увидите сообщение вида:
Update begin: ...
U ...
At revision 293.
Update end: ...
Если Вы увидите только первую и последнюю строки или вообще пустую страницу, то это означает, что произошел какой-то сбой или конфликт, и вся информация о возникших ошибках находится в файле svn_log.txt. После разрешения ошибок необходимо повторно вызвать updater.php.
Нет обратных ссылок на эту запись.
февраля 15, 2011 - 10:09
Уважаемый автор! не могли бы Вы подробнее рассказать о том, какие модули нужно установить и как создать и настроить SVN Repository на сервере. Спасибо!
февраля 15, 2011 - 12:21
Эти моменты я уже освещал в топиках http://web-polyglot.ru/2010/01/06/ustanovka-i-nastrojka-svyazki-svn-subversion-apache/ и http://web-polyglot.ru/2010/01/22/nastrojka-dostupa-ko-mnozhestvu-svn-repozitoriev-cherez-odin-konfig/. Или есть какие-то дополнительные вопросы?