Сборка и развертывание приложения Node.js в Облачной службе Azure (классической)

Внимание

Облачные службы (классическая версия) теперь устарела для всех клиентов с 1 сентября 2024 года. Все существующие запущенные развертывания будут остановлены и завершены корпорацией Майкрософт, и данные будут постоянно потеряны начиная с октября 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой. Это новая модель развертывания на основе Azure Resource Manager.

В этом руководстве показано, как создать приложение Node.js, работающее в облачной службе Azure. Облачные службы являются основой для построения масштабируемых облачных приложений в Azure. Они обеспечивают разделение, независимое управление и масштабирование компонентов внешнего и внутреннего интерфейса приложения. Облачные службы предоставляют надежную выделенную виртуальную машину для надежного размещения каждой роли.

Совет

Хотите создать веб-сайт? Если в вашем сценарии задействован простой интерфейс веб-сайта, мы рекомендуем использовать упрощенное веб-приложение. По мере роста веб-приложения и изменения требований можно легко выполнить обновление к облачной службе.

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

Приложение — это приложение hello world:

В окне браузера отображается веб-страница Hello World

Предварительные требования

Примечание.

В этом учебнике используется Azure PowerShell, для которого требуется операционная система Windows.

  • Установите и настройте Azure PowerShell.
  • Скачайте и установите [пакет SDK для Azure для .NET 2.7]. В программе установки выберите следующее:
    • MicrosoftAzureAuthoringTools
    • MicrosoftAzureComputeEmulator

Создание проекта облачной службы Azure

Выполните следующие задачи для создания нового проекта облачной службы Azure с основными функциями формирования Node.js:

  1. Запустите Windows PowerShell от имени администратора. В меню Пуск или на начальном экране найдите приложение Windows PowerShell.

  2. Подключите PowerShell к своей подписке.

  3. Введите следующий командлет PowerShell для создания проекта:

    New-AzureServiceProject helloworld
    

    Результат выполнения команды New-AzureService helloworld

    Командлет New-AzureServiceProject формирует базовую структуру для публикации приложения Node.js в облачной службе. Он содержит файлы конфигурации, необходимые для публикации в Azure. Командлет также изменяет рабочий каталог на каталог для службы.

    Командлет создает следующие файлы:

    • ServiceConfiguration.Cloud.cscfg, ServiceConfiguration.Local.cscfg и ServiceDefinition.csdef — специальные файлы Azure, необходимые для публикации приложения. См. общие сведения о создании размещенной службы для Azure.
    • deploymentSettings.jsonхранит локальные параметры, используемые командлетами развертывания Azure PowerShell.
  4. Введите следующую команду, чтобы добавить новую веб-роль:

    Add-AzureNodeWebRole
    

    Вывод команды Add-AzureNodeWebRole

    Командлет Add-AzureNodeWebRole создает базовое приложение Node.js. Он также изменяет CSFG- и CSDEF-файлы, чтобы добавить записи конфигурации для новой роли.

    Примечание.

    Если имя роли не указано, используется имя по умолчанию. Можно ввести имя в качестве первого параметра командлета: Add-AzureNodeWebRole MyRole

Приложение Node.js определяется в файле server.js, который находится в каталоге веб-роли (по умолчанию это WebRole1). Вот этот код:

var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

Данный пример кода является практически аналогичным образцу Hello World на веб-сайте nodejs.org , за исключением того, что он использует номер порта, назначенный средой облака.

Развертывание приложения в Azure

Примечание.

Для работы с этим учебником требуется учетная запись Azure. Вы можете активировать преимущества подписчика MSDN или зарегистрироваться для получения бесплатной учетной записи.

Загрузка настроек публикации Azure

Для развертывания приложения в Azure сначала нужно скачать настройки публикации для вашей подписки Azure.

  1. Выполните следующий командлет Azure PowerShell:

    Get-AzurePublishSettingsFile
    

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

    Сохраните загруженный профиль в расположении файла, к которому есть доступ.

  2. Выполните следующий командлет, чтобы импортировать профиль публикации, который вы загрузили:

    Import-AzurePublishSettingsFile [path to file]
    

    Примечание.

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

Публикация приложения

Для публикации выполните следующие команды.

$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName  -Location "East US" -Launch
  • -ServiceName указывает имя для развертывания. Это значение должно быть уникальным именем; в противном случае процесс публикации завершается ошибкой. Команда Get-Date добавляет к строке дату и время, чтобы сделать имя уникальным.
  • -Location указывает центр обработки данных, на котором размещено приложение. Чтобы просмотреть список доступных центров обработки данных, используйте командлет Get-AzureLocation .
  • -Launch открывает окно браузера и переходит в размещенную службу после завершения развертывания.

После успешной публикации вы увидите ответ, аналогичный снимку экрана:

Вывод команды Publish-AzureService

Примечание.

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

После завершения развертывания откроется окно браузера и переходит в облачную службу.

В окне браузера отображается страница Hello World; URL-адрес указывает, что страница размещается в Azure.

Теперь приложение работает в Azure.

Командлет Publish-AzureServiceProject выполняет следующие шаги:

  1. Создает пакет развертывания. Пакет содержит все файлы в папке приложения.
  2. Создает новую учетную запись хранения, если она не существует. Учетная запись хранения Azure используется для хранения пакета приложения во время развертывания. После развертывания можно безопасно удалить учетную запись хранения.
  3. Создает облачную службу , если она еще не существует. Облачная служба — это контейнер, в котором размещено приложение при развертывании в Azure. См. общие сведения о создании размещенной службы для Azure.
  4. Публикует пакет развертывания в Azure.

Остановка и удаление приложения

После развертывания приложения необходимо отключить его, чтобы избежать лишних затрат. Для экземпляров веб-роли Azure выставляет счета за почасовое использование серверного времени. Время сервера используется после развертывания приложения, даже если экземпляры не запущены и находятся в остановленном состоянии.

  1. В окне Windows PowerShell остановите развертывание службы, созданное в предыдущем разделе со следующего командлета:

    Stop-AzureService
    

    Остановка службы может занять несколько минут. При остановке службы вы получаете сообщение, указывающее, что она остановлена.

    Состояние команды Stop-AzureService

  2. Чтобы удалить службу, вызовите следующий командлет:

    Remove-AzureService
    

    При появлении запроса введите Y , чтобы удалить службу.

    Удаление службы может занять несколько минут. После удаления службы вы получите сообщение, указывающее, что служба была удалена.

    Состояние команды Remove-AzureService

    Примечание.

    При удалении службы учетная запись хранения, созданная при первоначальной публикации службы, не удаляется. Оплата за использование хранилища будет насчитываться. Если хранилище не используется другими объектами, его можно удалить.

Следующие шаги

Дополнительную информацию см. в центре разработчиков Node.js.