Публикация приложения Node.js в Azure (служба приложений Linux)
В этом руководстве описана задача создания простого приложения Node.js и его публикации в Azure.
При публикации приложения Node.js в Azure существует несколько вариантов. К ним относятся Служба приложений Azure, виртуальная машина с выбранной операционной системой, служба контейнеров Azure (AKS) для управления с помощью Kubernetes, экземпляр контейнера с помощью Docker и многое другое. Более подробно о каждом из этих параметров см. в разделе Compute.
В этом руководстве вы развернете приложение на службу приложений Linux . Служба приложений Linux развертывает контейнер Docker Linux для запуска приложения Node.js (в отличие от службы приложений Windows, которая выполняет Node.js приложения с использованием IIS в Windows).
В этом руководстве показано, как создать приложение Node.js начиная с шаблона, установленного с помощью средств Node.js для Visual Studio, отправить код в репозиторий на GitHub, а затем подготовить службу приложений Azure с помощью веб-портала Azure, чтобы можно было развернуть из репозитория GitHub. Сведения об использовании командной строки для подготовки службы приложений Azure и отправки кода из локального репозитория Git см. в статье Create Node.js App.
Важный
Сведения в этой статье относятся только к типу проекта 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, перейдите в раздел Tools>Get Tools and Features..., который открывает установщик Visual Studio. Выберите рабочую нагрузку разработки Node.js, затем выберите Изменить.
Рабочая нагрузка
Необходимо установить среду выполнения Node.js.
Если он не установлен, установите версию LTS с веб-сайта Node.js. Как правило, Visual Studio автоматически обнаруживает установленную среду выполнения Node.js. Если она не обнаруживает установленную среду выполнения, можно настроить проект для ссылки на установленную среду выполнения на странице свойств (после создания проекта щелкните правой кнопкой мыши узел проекта и выберите Свойства).
Создание проекта Node.js для запуска в Azure
Откройте Visual Studio.
Создайте новое приложение TypeScript Express.
Нажмите Esc, чтобы закрыть начальное окно. Введите CTRL+ Q, чтобы открыть поле поиска, введите Node.js, а затем выберите Создать приложение Azure Node.js Express 4 (TypeScript). В появившемся диалоговом окне выберите Создать.
Если вы не видите шаблон проекта Basic Azure Node.js Express 4, необходимо добавить рабочую нагрузкуразработкиNode.js. Для получения подробных инструкций см. раздел Предварительные требования.
Visual Studio создает проект и открывает его в обозревателе решений (справа).
Нажмите F5, чтобы создать и запустить приложение, и убедитесь, что все выполняется должным образом.
Выберите Файл>добавить под систему управления версиями, для создания локального репозитория Git проекта.
На этом этапе приложение Node.js, использующее фреймворк Express и написанное на TypeScript, работает и добавлено в локальную систему контроля версий.
Измените проект по мере необходимости, прежде чем перейти к следующим шагам.
Отправка кода из Visual Studio в GitHub
Чтобы настроить GitHub для Visual Studio, выполните следующее:
Убедитесь, что расширение GitHub для Visual Studio установлено и включено с помощью элемента меню Tools>Extensions and Updates.
В меню выберите View>Other Windows>GitHub.
Откроется окно GitHub.
Если вы не видите кнопку в окне GitHub, нажмите Файл>Добавить в систему контроля версий и дождитесь обновления интерфейса пользователя.
Щелкните Начало работы.
Если вы уже подключены к GitHub, панель элементов отображается примерно так же, как на следующем рисунке.
Заполните поля для нового репозитория, чтобы его опубликовать, а затем щелкните Опубликовать.
Через несколько минут появится баннер с сообщением "Репозиторий создан успешно".
В следующем разделе описано, как опубликовать из этого репозитория в службе приложений Azure в Linux.
Создание службы приложений Linux в Azure
Выберите службы приложений в списке служб слева, а затем щелкните Добавить.
При необходимости создайте новый план группы ресурсов и службы приложений для размещения нового приложения.
Убедитесь, что ОС установлена на Linux, и настройте стек среды выполнения на требуемую версию Node.js, как показано на рисунке.
службу приложений Linux
Щелкните Создать, чтобы создать службу приложений.
Развертывание может занять несколько минут.
После развертывания перейдите в раздел параметров приложения и добавьте параметр с именем
SCM_SCRIPT_GENERATOR_ARGS
и значением--node
.параметры приложения
Предупреждение
Процесс развертывания Службы приложений использует набор эвристики, чтобы определить, какой тип приложения следует попробовать и запустить. Если файл .sln обнаружен в развернутом содержимом, предполагается, что развёрнут проект на основе MSBuild. Добавленный выше параметр переопределяет эту логику и явно указывает, что это приложение Node.js. Без этого параметра приложение Node.js не сможет развернуться, если файл .sln является частью репозитория, в который выполняется развертывание в службе приложений.
В разделе параметры приложениядобавьте другой параметр с именем
WEBSITE_NODE_DEFAULT_VERSION
и значением8.9.0
.После развертывания откройте службу приложений и выберите варианты развертывания .
параметры развертывания
Щелкните Выберите источник, затем выберите GitHubи настройте все необходимые разрешения.
Выберите репозиторий и ветвь для публикации, а затем нажмите кнопку ОК.
При синхронизации появляется страница параметров развертывания.
GitHub
После завершения синхронизации появится флажок.
Теперь сайт запускает приложение Node.js из репозитория GitHub, и он доступен по URL-адресу, созданному для службы приложений Azure (по умолчанию имя, заданное службе приложений Azure, а затем
.azurewebsites.net
).
Изменение приложения и отправка изменений
Добавьте код, показанный здесь, в app.ts после
app.use('/users', users);
строки. Это добавляет REST API по следующему URL-адресу: /api.app.use('/api', (req, res, next) => { res.json({"result": "success"}); });
Создайте код и протестируйте его локально, а затем проверьте его и отправьте на GitHub.
На портале Azure требуется несколько минут для обнаружения изменений в репозитории GitHub, а затем начинается новая синхронизация развертывания. Это выглядит примерно так, как показано на следующем рисунке.
После завершения развертывания перейдите к общедоступному сайту и добавьте /api к URL-адресу. Возвращается ответ JSON.
Устранение неполадок
- Если процесс node.exe завершается (то есть возникает необработанное исключение), контейнер перезапускается.
- Когда контейнер запускается, он проходит через различные эвристики, чтобы выяснить, как запустить процесс Node.js. Подробные сведения о реализации можно увидеть в generateStartupCommand.js.
- Вы можете подключиться к работающему контейнеру через SSH для расследования. Это легко сделать с помощью портала Azure. Выберите службу приложений и прокрутите список инструментов вниз, пока не дойдете до SSH в разделе средств разработки.
- Чтобы помочь в устранении неполадок, перейдите в параметры журналов диагностики службы приложений и измените настройку Docker Container с Выключено на Файловая система. Журналы создаются в контейнере в разделе /home/LogFiles/_docker.log*, и доступ к ним можно получить с помощью SSH или FTP(S).
- Имя личного домена может быть назначено сайту, а не URL-адрес *.azurewebsites.net, назначенный по умолчанию. Дополнительные сведения см. в разделе Сопоставление пользовательского домена.
- Развертывание на промежуточном сайте для дальнейшего тестирования перед переходом в рабочую среду является наилучшей практикой. Дополнительные сведения о настройке см. в разделе Создание промежуточных сред.
- См. раздел для часто задаваемых вопросов о службе приложений на Linux.
Дальнейшие действия
В этом руководстве вы узнали, как создать службу приложений Linux и развернуть приложение Node.js в службе. Вы можете узнать больше о службе приложений Linux.