Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top