2013-03-02 5 views
3

Я использую Node.js для разработки веб-приложений и веб-сайтNode.js: стратегия сайта развертывания

, но когда я хочу развернуть приложение на какой-то перевале, я должен оптимизировать приложение самостоятельно, рука об руку

как

  • компиляции Sass в таблицу стилей

  • слияние файла JavaScript вместе и CSS файл вместе

  • скопировать их в Юи сжаты, после прессуют, а затем скопировать их обратно

  • и так далее

этот рабочий расстраивают меня, так что мой вопрос, есть ли какой-то инструмент или модули могли бы оптимизировать этот рабочий процесс или выполняйте эту работу автоматически

Какова ваша стратегия развертывания?

ответ

3

Что вам нужно, это инструмент построения. В Java, ant и maven - популярный выбор. В мире node.js есть тонна инструментов построения. Эти два, с которыми я знаком, - это ворчать и строить (полное раскрытие: я являюсь хранителем buildr).

Либо инструмент сводится к вам записи файла конфигурации с указанием исходных файлов/каталогов и что вы хотели бы сделать для них, вариантов, минификация, конкатенации, Saas или стилуса компиляции и т.д.

https://github.com/gruntjs/grunt

https://github.com/balupton/buildr.npm

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

  1. Чистая проверка вашего веб-сайта или кода приложения из исходного элемента управления (Git или Subversion или еще много чего).
  2. Запустите команду grunt или buildr, чтобы скомпилировать все ресурсы вашего веб-сайта.
  3. Загрузите результаты на свой веб-сервер, а затем перезапустите процесс node.js. Много способов сделать это.

Для приложения я бы рекомендовал удалить каталог установки в удаленной системе и SCP, чтобы новая версия появилась на своем месте. Это предполагает наличие балансировщика нагрузки.

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

https://github.com/capistrano/capistrano

https://github.com/substack/fleet

Для простого веб-сайта, я рекомендую то, что выглядит в файле различий, как Rsync. Я использую rsync для своего личного веб-сайта, поскольку это просто статический контент, и мне не нужно беспокоиться о зависимостях и т. Д.

Так релиз может пойти что-то вроде

$ git clone git://github.com/whatever.git && (cd whatever && buildr && rsync -avz --delete -e ssh <remote server>:webroot) 

Или приложение, немного более автоматизирован:

$ git clone git://github.com/whatever.git && (cd whatever && buildr && make upload) 

Для основного приложения:

$ buildApp && deployApp 

С buildApp и deployApp - это скрипты, которые содержат все команды, протоколирование, настройку и т. д., необходимые для сборки и развертывания.

+0

[Fabric] (http://www.fabfile.org/) следует упомянуть в этом контексте. Более или менее в той же категории с Capistrano, люди, более удобные с Python, чем Ruby, могут найти это отличным инструментом. Несмотря на некоторое совпадение с инструментами DevOps, такими как SaltStack, Ansible, Chef или Puppet, эти инструменты более ориентированы на настройку сервера/среды, в то время как Fabric более подходит для развертывания. Функциональность Fabric может быть дополнена [Cuisine] (https://github.com/sebastien/cuisine). Y Combinator Hacker News [thread] (http://bit.ly/1psLMB0) содержит хорошие комментарии о Fabric и т. Д. – Ville

+0

Спасибо! Я посмотрю на Ткань. – Brandon

2

Вы действительно должны посмотреть на Grunt.js.

Ответ Брэндона хорош, но я могу только догадываться, что у него не было опыта с Грунтом. «Make» - теперь не что иное, как отдаленная и болезненная память для меня.

Grunt сам по себе является «задающим бегуном», в то время как весь тяжелый подъем осуществляется «плагинами», каждый из которых обеспечивает определенную «задачу» внутри вашего файла Grunt. Таким образом, есть plugin for compiling SASS to CSS, plugin for YUI doc и так далее. Вы можете найти сотни плагинов Grunt в сообществе GitHub и на веб-сайте Grunt.js, здесь: http://gruntjs.com/plugins.

Кроме того, все плагины «grunt-contrib-» курируются основной командой Grunt.js, и каждый из них сосредоточен на выполнении действительно отличной работы над чем-то конкретным. Существует плагин для минимизации CSS, другой для угасания (minifying/obscuring) JavaScripts, один для конкатенации файлов и т. Д. Существует даже плагин для создания статических сайтов, assemble (я один из сопровождающих).

+1

У меня действительно есть большой опыт работы с хрюканьем, который я рекомендовал в своем ответе. – Brandon

Смежные вопросы