Я не могу найти решение для развертывания Php на удаленный сервер, используя FTP из SVN после каждой фиксации. Как загрузить на сервер по FTP только добавленные или отредактированные файлы и удалить удаленные файлы из SVN Я думаю о написании post-commit script...
Внедрение Php на удаленный сервер с использованием FTP из SVN после каждой фиксации
Ответ 1
Хороший вопрос!
Я не уверен, что существует только PHP-подход для синхронизации файлов таким образом.
Обычно я использую сторонние инструменты синхронизации FTP, такие как rsync
или ScriptFTP (коммерческий), чтобы сделать часть syncronizing.
Взгляните на phing, для него есть несколько расширений FTP (так называемые "задачи" ). У меня нет реального опыта в мире с ними.
В этом блоге предлагается ряд идей и подходов: Использование phing для синхронизации файлов с общим хостингом
Ответ 2
Вы можете использовать svn2web для загрузки каждого зарегистрированного файла на сервер через Ftp. Svn2web - это набор php-скриптов, которые вы можете использовать как svn-hooks. Вы можете установить адрес, имя пользователя и пароль ftp-сервера как свойство svn в каталоге. Отлично работает!
Ответ 3
Я использую http://svn2ftp.com, который является хостом SVN, который позволяет удаленное развертывание на S/FTP при каждой фиксации!
Ответ 4
Если вы не хотите самостоятельно управлять сценариями, но просто хотите, чтобы что-то работало, вы можете попробовать использовать размещенную службу. Я использую Deploy, который отлично работает для описываемого вами сценария. И если у вас есть только один проект для развертывания, он даже бесплатный.
Ответ 5
Для нашего проекта php мы используем Jenkins инструмент непрерывной интеграции. Наш сервер репозитория - это подрывная деятельность. Всякий раз, когда мы делаем изменения кода, мы используем задания jenkins для слияния с промежуточной и живой средой Beta, а затем развертываем приложение.
Вы можете найти дополнительную информацию о развертывании PHP-приложений с помощью Jenkins на http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers
Ответ 6
mybe cron + bash script, который будет svn up?
Ответ 7
Вы просмотрели Beanstalk? Он позволяет развернуть проекты Subversion и Git на ваш FTP-сервер одним щелчком мыши. Это не бесплатно. Другой бесплатной альтернативой будет установка сервера непрерывной интеграции, который будет запускать rake script для развертывания.
Ответ 8
Что вы скажете, вы проверяете с SVN на ваш сервер (создаете рабочую копию из SVN на рабочий сервер), и когда вы хотите развернуть новую версию, вы просто подключаетесь к серверу через SSH и введите svn update
, и там вы идете, будут развернуты только последние файлы, которые были отредактированы, и менее чем за секунду вы обновили последнюю версию.
Ответ 9
Лучший способ (если ваш сервер основан на Linux) сделать SVN Export в новый каталог, а затем переместить новый каталог для замены старого (лучший способ сделать это с символическими ссылками на разные версии сайт). Таким образом, сайт будет недоступен для второго или двух, а если вы rsync и имеете большой сайт, если вы измените сильно одиночный файл, сайт будет разбит до тех пор, пока все файлы не синхронизируются.
Что касается запуска этой процедуры, лучший способ - использовать svn hooks. Также подумайте о том, чтобы выполнить автоматическое тестирование перед выпуском (для базовых функций), потому что вы можете немного сломать свой багажник, и сайт определенно будет недоступен:)
В настоящее время мы используем описанный выше подход в производственной среде, и настройка следующая:
- Конец идет в багажнике
- Прежде чем он на самом деле совершится, в коде запускаются тесты, чтобы убедиться, что все работает.
- После нескольких коммитов развертывается (обычно разработчик контролируется)
- Тесты снова запускаются
- Если они успешны - все нормально
- Если они терпят неудачу, возвращается старый экспорт, и сайт снова полностью работает.
Все это написано на PHP, используя стандартные команды консоли.