Я coudn't нахожу решение для развертывания Php на удаленном сервере с помощью FTP от SVN после каждой фиксации. Как я могу загрузить на сервер FTP единственные добавленные или отредактированные файлы и удалить удаленные файлы из SVN, я думаю о сценарии постфиксации записи...
Вы можете использовать svn2web для загрузки каждого зафиксированного файла на сервер через FTP. Svn2web - это набор php-скриптов, которые вы можете использовать в качестве ловушек svn. Вы можете установить адрес, имя пользователя и пароль ftp-сервера как свойство svn в каталоге. Работает отлично!
Хороший вопрос!
Я не уверен, что существует подход к синхронизации файлов, основанный только на PHP.
Я обычно использую сторонние инструменты синхронизации FTP, такие как rsync
или ScriptFTP (коммерческий), чтобы выполнить синхронизирующую часть.
Загляните в phing , там есть несколько расширений FTP (называемых «задачами»). Однако у меня нет реального опыта общения с ними.
В этом сообщении в блоге предлагается ряд идей и подходов: Использование phing для синхронизации файлов с общим хостингом
Лучший способ (если ваш сервер основан на Linux) сделать экспорт SVN в новый каталог, а затем переместить новый каталог, чтобы заменить старый (лучший способ сделать это - использовать символические ссылки на разные версии сайта). Таким образом, сайт будет недоступен на секунду или две, в то время как, если вы используете rsync и у вас большой сайт, если вы резко измените один файл, сайт будет сломан до тех пор, пока все файлы не синхронизируются.
Что касается запуска этой процедуры, лучше всего использовать svn-хуки. Также подумайте о том, чтобы провести некоторое автоматическое тестирование перед выпуском (для базовой функциональности), потому что вы можете довольно сильно сломать свою магистраль через некоторое время, и сайт определенно отключится :)
В настоящее время мы внедряем подход, описанный выше, в производственную среду и настройка выглядит следующим образом:
Все это написано на PHP с использованием стандартных консольных команд.