Развертывание Php на удаленный сервер с использованием FTP из SVN после каждого коммита - PullRequest
17 голосов
/ 09 апреля 2010

Я не могу найти решение для развертывания Php на удаленный сервер с использованием FTP из SVN после каждой фиксации. Как загрузить на сервер по FTP только добавленные или отредактированные файлы и удалить удаленные файлы из SVN Я думаю о написании пост-коммит скрипта ...

Ответы [ 9 ]

13 голосов
/ 09 апреля 2010

Хороший вопрос!

Я не уверен, что такой подход к синхронизации файлов, основанный только на PHP, существует.

Я бы обычно использовал сторонние инструменты синхронизации FTP, такие как rsync или ScriptFTP (коммерческий), чтобы выполнить синхронизирующую часть.

Взгляните на phing , для него есть несколько расширений FTP (называемых «задачами»). У меня нет с ними опыта в реальном мире.

В этом блоге предлагается несколько идей и подходов: Использование phing для синхронизации файлов с общим хостингом

6 голосов
/ 09 апреля 2010

Вы можете использовать svn2web для загрузки каждого переданного файла на сервер через FTP Svn2web - это набор php-скриптов, которые вы можете использовать как svn hooks. Вы можете установить адрес, имя пользователя и пароль ftp-сервера в качестве свойства svn в каталоге. Прекрасно работает!

3 голосов
/ 24 апреля 2012

Если вы не хотите управлять сценариями самостоятельно, а просто хотите что-то, что работает, вы можете попробовать использовать размещенный сервис. Я использую Deploy , который идеально подходит для сценария, который вы описываете. И если у вас есть только один проект для развертывания, он даже бесплатный.

3 голосов
/ 18 января 2011

Я использую http://svn2ftp.com, который является хостом SVN, который позволяет удаленное развертывание по S / FTP при каждом коммите!

2 голосов
/ 26 апреля 2012

Для нашего php-проекта мы используем Jenkins инструмент непрерывной интеграции. Наш сервер репозитория является Subversion. Всякий раз, когда мы вносим изменения в код, мы используем задания jenkins для слияния со средой Beta staging & live и затем разворачиваем приложение.

Вы можете найти больше информации о развертывании PHP-приложений, используя Jenkins на http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers

1 голос
/ 26 апреля 2012

Что вы говорите, вы извлекаете из SVN на сервер (создаете рабочую копию из SVN на рабочий сервер), и когда вы хотите развернуть новую версию, вы просто подключаетесь к серверу через SSH и введите svn update, и все, только самые последние отредактированные файлы будут развернуты, и менее чем через секунду у вас будет последняя версия, обновленная в рабочей среде.

1 голос
/ 26 апреля 2012

Вы смотрели на Бобовый стебель ? Это позволяет вам развернуть проекты Subversion и Git на вашем FTP-сервере в один клик. Это не бесплатно, хотя. Другой бесплатной альтернативой может быть настройка сервера непрерывной интеграции, который будет запускать скрипт rake для выполнения ваших развертываний.

1 голос
/ 25 апреля 2012

mybe cron + bash скрипт, который будет запущен?

0 голосов
/ 09 апреля 2010

Лучший способ (если ваш сервер основан на Linux) сделать экспорт SVN в новый каталог, а затем переместить новый каталог для замены старого (лучший способ сделать это с помощью символических ссылок на разные версии сайт). Таким образом, сайт будет недоступен в течение секунды или двух, в то время как если у вас есть rsync и у вас большой сайт, если вы резко измените один файл, сайт будет поврежден, пока все файлы не синхронизируются.

Что касается запуска этой процедуры, лучше всего использовать svn hooks. Также рассмотрите возможность проведения некоторого автоматического тестирования перед выпуском (для базовой функциональности), потому что вы можете довольно сильно сломать ваш ствол через некоторое время, и сайт определенно будет недоступен:)

В настоящее время мы внедряем описанный выше подход в производственную среду, и установка выглядит следующим образом:

  • В багажник попадает коммит
    • Перед тем, как он действительно будет зафиксирован, в коде запускаются тесты, чтобы проверить, все ли работает
  • После нескольких коммитов происходит развертывание (обычно под наблюдением разработчика)
    • Тесты запускаются снова
    • Если они успешны - все хорошо
    • В случае неудачи возвращается старый экспорт и сайт снова полностью функционирует

Все это написано на PHP с использованием стандартных консольных команд.

...