Публикация приложения Node.js в Azure (служба приложений Linux)

В этом руководстве приводятся инструкции по созданию простого приложения Node.js и его публикация в Azure.

При публикации приложения Node.js в Azure существует несколько вариантов. К ним относятся служба приложений Azure, виртуальная машина, работающая под управлением выбранной ОС, служба контейнеров Azure (AKS) для управления с Kubernetes, экземпляр контейнера с Docker и многое другое. Дополнительные сведения о каждом из этих вариантов см. в разделе Вычисления.

В этом руководстве вы будете развертывать приложение в службе приложений Linux. Служба приложений Linux развертывает контейнер Docker для Linux для запуска приложения Node.js (в отличие от службы приложений Windows, которая запускает приложения Node.js за службами IIS в Windows).

В этом руководстве описано, как создать приложение Node.js, — вы установите шаблон с помощью инструментов Node.js для Visual Studio, отправите код в репозиторий в GitHub, а затем подготовите к работе службу приложений Azure на веб-портале Azure, чтобы выполнить развертывание из репозитория GitHub. Сведения об использовании командной строки для подготовки службы приложений Azure и отправки кода из локального репозитория Git см. в разделе Создание приложения Node.js.

Важно!

Сведения в этой статье относятся только к типу проектов Node.js (расширение файла NJSPROJ). Шаблон, используемый в этой статье, больше недоступен, начиная с Visual Studio 2022 версии 17.8 ( предварительная версия 2).

В этом руководстве описано следующее:

  • Создание проекта Node.js
  • Создание репозитория GitHub для кода
  • Создание службы приложений Linux в Azure
  • Развертывание в Linux

Необходимые компоненты

  • У вас должна быть установлена среда Visual Studio и должна иметься рабочая нагрузка "Разработка Node.js".

    Установите Visual Studio 2019 бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.

    Если вам нужно установить рабочую нагрузку, но вы уже используете Visual Studio, выберите пункт Средства>Получить средства и компоненты..., после чего запустится Visual Studio Installer. Выберите рабочую нагрузку Разработка Node.js, а затем элемент Изменить.

    Node.js workload in VS Installer

  • У вас должна быть установлена среда выполнения Node.js.

    Если она не установлена, установите версию LTS с веб-сайта Node.js. Как правило, Visual Studio автоматически обнаруживает установленную среду выполнения Node.js. Если установленная среда выполнения не обнаружена, вы можете настроить проект так, чтобы он ссылался на установленную среду выполнения, на странице свойств (после создания проекта щелкните его узел правой кнопкой мыши и выберите пункт Свойства).

Создание проекта Node.js для запуска в Azure

  1. Откройте Visual Studio.

  2. Создайте приложение TypeScript Express.

    Нажмите клавишу ESC, чтобы закрыть окно запуска. Нажмите CTRL+Q, чтобы открыть поле поиска, введите Node.js и выберите Create a new Basic Azure Node.js Express 4 application (Создать простое приложение Node.js Express 4 в Azure) (TypeScript). В появившемся диалоговом окне выберите Создать.

    Если шаблон проекта Базовое приложение Azure Node.js Express 4 отсутствует, необходимо добавить рабочую нагрузку Разработка Node.js. Подробные инструкции см. в разделе с предварительными требованиями.

    Visual Studio создаст проект и откроет его в обозревателе решений (правая панель).

  3. Нажмите клавишу F5, чтобы скомпилировать и запустить приложение, и убедитесь, что все работает должным образом.

  4. Выберите Файл>Добавить в систему управления версиями, чтобы создать локальный репозиторий Git для проекта.

    На этом этапе приложение Node.js, которое использует платформу Express и было написано в TypeScript, работает и записано в локальной системе управления версиями.

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

Отправка кода из Visual Studio в GitHub

Чтобы настроить GitHub для Visual Studio:

  1. Убедитесь, что расширение GitHub для Visual Studio установлено и включено, в разделе меню Средства>Расширения и обновления.

  2. В меню выберите Представление>Другие окна>GitHub.

    Откроется окно GitHub.

  3. Если вы не видите кнопку Приступить к работе в окне GitHub, нажмите Файл>Добавить в систему управления версиями и подождите, пока пользовательский интерфейс обновится.

    Open the GitHub window

  4. Щелкните Начать работу.

    Если вы уже подключены к GitHub, откроется панель элементов, как на следующей иллюстрации.

    GitHub repo settings

  5. Заполните поля для нового публикуемого репозитория и нажмите Опубликовать.

    Через несколько секунд появится сообщение: "Репозиторий успешно создан".

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

Создание службы приложений Linux в Azure

  1. Войдите на портал Azure.

  2. Выберите Службы приложений в списке служб слева и нажмите Добавить.

  3. При необходимости создайте группу ресурсов и план службы приложений для размещения нового приложения.

  4. Не забудьте установить для параметра ОС значение Linux и укажите для стека среды выполнения необходимую версию Node.js, как показано на рисунке.

    Create a Linux App Service

  5. Нажмите Создать для создания службы приложений.

    Развертывание может занять несколько минут.

  6. После развертывания перейдите в раздел Параметры приложения и добавьте параметр с именем SCM_SCRIPT_GENERATOR_ARGS и значением --node.

    Application settings

    Предупреждение

    Процесс развертывания службы приложений использует набор эвристических алгоритмов, чтобы определить, какой тип приложения необходимо запустить. Если в развернутом содержимом обнаружен SLN-файл, процесс предположит, что выполняется развертывание проекта на основе MSBuild. Параметр, добавленный выше, переопределяет эту логику и явно указывает, что это приложение Node.js. Без этого параметра приложение Node.js не удастся развернуть, если SLN-файл является частью репозитория, развертываемого в службе приложений.

  7. В разделе Параметры приложения добавьте еще один параметр с именем WEBSITE_NODE_DEFAULT_VERSION и значением 8.9.0.

  8. После развертывания откройте службу приложений и выберите Параметры развертывания.

    Deployment options

  9. Нажмите Выбор источника, а затем выберите GitHub и настройте требуемые разрешения.

    GitHub permissions

  10. Выберите репозиторий и ветви для публикации, а затем нажмите ОК.

    Publish to Linux App Service

    Во время синхронизации откроется страница Параметры развертывания.

    Deploying and syncing with GitHub

    После завершения синхронизации появится галочка.

    Теперь сайт выполняет приложение Node.js из репозитория GitHub, и оно доступно по URL-адресу, созданному для службы приложений Azure (по умолчанию после имени службы приложений Azure стоит ".azurewebsites.net").

Изменение приложения и отправка изменений

  1. Добавьте приведенный ниже код в app.ts после строки app.use('/users', users);. Это добавляет REST API по URL-адресу /api.

    app.use('/api', (req, res, next) => {
        res.json({"result": "success"});
    });
    
  2. Создайте код, протестируйте его локально, а затем запишите его и отправьте в GitHub.

    На портале Azure требуется несколько секунд чтобы обнаружить изменения в репозитории GitHub, а затем запускается новая синхронизация развертывания. Это выглядит примерно следующим образом.

    Modify and sync

  3. После завершения развертывания перейдите на общедоступный сайт и добавьте /api в URL-адрес. Возвращается ответ в формате JSON.

Устранение неполадок

  • Если процесс node.exe завершается сбоем (то есть возникает необработанное исключение), контейнер перезапускается.
  • При запуске контейнер проходит через различные эвристические алгоритмы, чтобы понять, как запустить процесс Node.js. Сведения о реализации можно увидеть в generateStartupCommand.js.
  • Вы можете подключиться к запущенному контейнеру по протоколу SSH для исследования. Это легко сделать с помощью портала Azure. Выберите службу приложений и прокрутите вниз список средств до пункта SSH в разделе Средства разработки.
  • Чтобы получить помощь в устранении неполадок, перейдите к параметрам Журналы диагностики для службы приложений и измените значение параметра Ведение журнала контейнера Docker с Выкл. на Файловая система. Журналы создаются в контейнере в папке /home/LogFiles/_docker.log*, доступ к ним можно получить через SSH или FTP(S).
  • Имя личного домена может быть назначено сайту, а не URL-адрес *.azurewebsites.net, назначенный по умолчанию. Дополнительные сведения см. в разделе Подключение личного домена.
  • Рекомендуется выполнить развертывание на промежуточный сайт для дальнейшего тестирования перед перемещением в рабочую среду. Сведения о том, как настроить эту возможность, см. в разделе Создание промежуточных сред.
  • Дополнительные сведения см. в разделе Вопросы и ответы о службе приложений в Linux.

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

В этом руководстве вы узнали, как создать службу приложений Linux и развернуть приложение Node.js в этой службе. Вы можете узнать больше о Служба приложений Linux.