2009-06-02 2 views
2

Вы бы переместили файлы с DEV на Prod или QA на Prod? Как вы используете экспорт svn в своей среде? Какие-нибудь удобные сценарии, которыми вы можете поделиться?Как вы используете экспорт svn для перемещения файлов из dev или QA в производственную среду?

Я смотрел другие темы, но у них недостаточно информации.

Я хочу знать, как лучше всего применять обновления приложения/db в производственной среде от QA или DEV или Staging. Это среда LaMP.

+0

Настоящий вопрос заключается в том, как мы делаем успешные передачи обслуживания, продвигая сборки из разных сред. –

ответ

3

Ну, во-первых, я не буду перемещать файлы непосредственно с dev или qa на производство. Как и ваш вопрос, я бы разложил тег-релиз с вашего SCM (subversion, в данном случае) прямо в соответствующие среды.

В целом, я бы рекомендовал обратиться к специализированному инструменту развертывания, например Capistrano. Существует немного времени на инвестиции в изучение инструмента и настройку ваших сценариев развертывания, но в то же время возможность сказать «cap deploy qa» или «roll roll production production» позже для изменения вашей текущей версии в вопрос секунд будет: а) больше, чем погасить первоначальные инвестиции времени, и б) сохранить прикладом, когда все пойдет не так.

Чтобы получить ответ на свой вопрос, хотя, если вы делали это вручную, я бы рекомендовал процесс что-то вроде этого (с Судо вставлено в случае необходимости):

  1. Есть /opt/my_app/ каталог с несколькими подкаталогами, содержащих разные версии и «текущую» символическую ссылку на то, что живет.
  2. Укажите ваш апач конфигурацию /opt/my_app/current
  3. Чтобы выкатить новую версию, запустить что-то вроде «svn export https://my_repo/my_app /opt/my_app/1.2.3» (при условии, что новая версия была 1.2.3).
  4. Изменить символическую ссылку: «rm /opt/my_app/current; ln -s /opt/my_app/1.2.3 opt/my_app/current»
  5. При необходимости перезапустите Apache или другие процессы.

Обновление базы данных - более интересный вопрос. Лично я люблю Rails's Migrations для этого. Если вы делали это вручную, вы могли бы включить несколько сценариев оболочки в свой проект, чтобы обновить db и отбросить их обратно, соответственно, но правильность этих версий была бы довольно сложной, поскольку они были бы конкретными только для одной конкретной версии , Я бы рекомендовал использовать существующую систему, такую ​​как Migrations (которую можно использовать отдельно от Rails - я видел ее как единственный компонент Ruby для некоторых проектов на основе Java) или задал это как отдельный вопрос.

+0

Спасибо за ваш ответ. Делает большой смысл. –

0

Существует много способов сделать это, в зависимости от приложения и окружающей среды.

В среде LAMP я часто создаю учетную запись на рабочем сервере и проверяю файлы разработки, как если бы я там разрабатывал, выполнял сборку и затем развертывал локально.

  1. Приложение может быть развернуто как непривилегированный пользователь.
  2. Учетная запись пользователя может быть удалена после развертывания по соображениям безопасности.
  3. Это, как правило, довольно простой способ, если вам удобно делать вещи удаленно, скажем, ssh.
+0

, но, скажем, у вас нет доступа к производственной среде. –

+0

Если у вас нет доступа к производственной среде, у вас должны быть спецификации для этого. Не зная, что это такое, трудно ответить на ваш вопрос. – Glenn