Развертывание PHP на серверах Windows / Unix - PullRequest
5 голосов
/ 17 сентября 2008

У нас есть различные проекты php, разработанные для windows (xampp), которые необходимо развернуть на разных серверах linux / windows.

В прошлом мы использовали capistrano для развертывания с windows на серверы linux, но из-за недавних изменений в архитектуре и серверах windows старая конфигурация не работает. Рецепт отлично работает для развертывания Linux, но для настройки серверов Windows требуется больше времени, чем у нас сейчас. Идеи для рецепта Capistrano - правильные ответы. очевидно, что серверы windows / linux не делят пользователей, поэтому это немного усложняет (из-за предположения capistrano об одном и том же имени пользователя и пароле везде).

В настоящее время мы используем svn-update для серверов Windows, что мне не нравится, так как оно оставляет все файлы SVN висящими на производственных серверах. (и нам все еще нужно вручную выполнить svn-обновление их в Windows) И ручное обновление файлов с помощью winscp и синхронизацию каталогов с их аналогами в linux.

Мой вопрос: какие инструменты / настройки вы предлагаете для автоматизации этого сценария развертывания: «Разные разработчики php windows / linux, работающие на 2+ смешанных машинах windows / linux»

(ps: у нас нет проблем с использованием инструментов linux или всего, что работает через cygwin, нам просто нужно сделать развертывание простой одностадийной операцией)

edit: В настоящее время мы не можем работать в среде с полностью linux, мы должны развернуть как Linux, так и Windows Server. Мы можем начать развертывание из любого места, но мы бы предпочли, чтобы это можно было сделать из любой среды.

Ответы [ 5 ]

4 голосов
/ 17 сентября 2008

Я использую 4 разных подхода в зависимости от клиентской среды:

  1. Capistrano и аналогичные инструменты (эффективные, но сложные)
  2. rsync от + до Windows, Linux, Mac (просто, не требует дисциплины)
  3. svn от + до Windows, Linux, Mac (просто, не требует дисциплины)
  4. Серверные скрипты (запускаются через браузер, сложные)

Есть несколько требований, определяющих то, что вам нужно:

  • Какую дисциплину вы хотите навязать
  • Если вам нужна миграция базы данных (или конфигурации) (вверх и / или вниз)
  • Если вы хотите статическую страницу "мы в упадке"
  • Кто может сделать обновление
  • Различия в конфигурации между серверами

Я настоятельно рекомендую обеспечить достаточную дисциплину, чтобы уберечь вас от себя: развернуть на сервере разработки, разрешить миграцию вверх и простое восстановление базы данных, а также ограничить число тех, кто может обновить работающий сервер небольшим количеством ответственных администраторов (где сервер разработки). открыт для большего количества разработчиков). Также рассмотрите возможность отправки через задание cron (на сервер разработки), чтобы ежедневно получать моментальные снимки ваших дополнительных изменений.

В большинстве случаев я нахожу, что достаточно настроек svn или rsync с несколькими серверными сценариями, особенно когда набор администраторов ограничен несколькими разработчиками.

1 голос
/ 17 сентября 2008

Возможно, это будет звучать глупо, но ... Раньше у меня были подобные проблемы, пока я не решил, что, если я всегда развертываю в Linux, мне действительно стоит хотя бы попробуй разработать и на Linux тоже. Я сделал. Это было безболезненно. Я никогда не возвращался.

Теперь. Я не предполагаю, что это для всех. Но, если вы установите VirtualBox , вы можете запустить установку Linux как локальный сервер на вашем компьютере с Windows. Предоставьте общий доступ к папке на виртуальной машине, и вы сможете использовать все ваши известные и надежные программы и методики Windows и , чтобы понять, что на целевой платформе все работает хорошо.

Кроме того, вы сможете вернуться в Капистрано (прекрасный выбор) для развертывания.

Лучше всего, если вы думаете, что знаете Linux / Unix, подождите, пока вы не будете использовать его каждый день на своем рабочем столе! Кто знает, тебе это может даже понравиться:)

0 голосов
/ 17 сентября 2008

Вы можете установить свойство svn:ignore в файлах конфигурации, чтобы svn update не стирало их, а затем с помощью svn export /target/path/ избавиться от .svn файлов в вашем хранилище Subversion.

0 голосов
/ 17 сентября 2008

Почему вы больше не можете использовать капистрано?

Почему вам не нравится svn-обновление?

Какие вещи в вашем приложении требуют специального развертывания?

0 голосов
/ 17 сентября 2008

Capistrano - лучший инструмент для развертывания, который я когда-либо видел. Из-за изменений в архитектуре невозможно исправить конфиги, чтобы они снова заработали?

...