как развернуть веб приложение
ASP.NET Core: Развертывание веб-приложения в службе приложений Azure с помощью Visual Studio
Представляем вам четвертую часть из цикла статей, посвященных работе с ASP.NET Core. Этот материал представляет из себя подробную инструкцию развертывание веб-приложения в службе приложений Azure с помощью Visual Studio.
Первый цикл статей по ASP.NET Core
Подготовка среды разработки
1. Установите текущую версию пакета Azure SDK для Visual Studio 2015. При его установке также устанавливается Visual Studio 2015 (если это не было сделано ранее).
Примечание: установка пакета SDK может длиться более 30 минут, если потребуется установка большого количества дополнительных компонентов.
Создание веб-приложения
На стартовой странице Visual Studio нажмите New Project…
Новый проект также можно создать при помощи меню. Выберите пункт File > New > Project…
Выберите тип проекта в окне New Project:
В окне New ASP.NET Core Web Application (.NET Core):
Локальное тестирование приложения
Развертывание приложения в Azure
Нажмите правую кнопку мыши на проекте в обозревателе решений и выберите пункт Publish…
В окне Publish выберите пункт Microsoft Azure App Service.
Выберите New…, чтобы создать новую группу ресурсов. Создание новой группы ресурсов позволит упростить удаление всех ресурсов Azure, которые вы создадите при выполнении действий, приведенных в этом руководстве.
Создайте новую группу ресурсов и план службы приложений:
1. Нажмите New…, чтобы создать группу ресурсов и введите ее название.
2. Нажмите New…, чтобы создать план службы приложений и выберите ближайшее расположение. Можно сохранить название по умолчанию.
3. Выберите пункт Explore additional Azure services, чтобы создать новую базу данных.
4. Нажмите на зеленый значок +, чтобы создать новую базу данных SQL.
5. Нажмите на кнопку New… в окне Configure SQL Database, чтобы создать новый сервер баз данных.
6. Введите имя пользователя и пароль для администратора, затем нажмите OK. Запомните указанные на данном этапе имя пользователя и пароль. Можно сохранить имя сервера по умолчанию (Server Name).
Примечание: в качестве имени пользователя не может использоваться «admin».
7. Нажмите на кнопку OK в окне Configure SQL Database.
8. В окне Create App Service нажмите Create.
9. В окне Publish нажмите Next.
Visual Studio опубликует ваше приложение в Azure и запустит облачное приложение в вашем браузере.
Тестирование приложения в Azure
Проверьте работу пунктов About и Contact и зарегистрируйте нового пользователя.
Обновление приложения
Откройте файл Razor Views/Home/About.cshtml и измените его содержимое.
Нажмите правую кнопку мыши на проекте и выберите пункт Publish…
После публикации приложения убедитесь, что внесенные вами изменения доступны в Azure.
Удаление
После окончания тестирования приложения перейдите на портал Azure и удалите приложение. Для этого необходимо выбрать пункт Resource groups, затем выбрать созданную группу ресурсов.
Далее на панели Resource group нажмите Delete.
Введите название группы ресурсов и нажмите Delete. Это приложение и все остальные ресурсы, созданные в рамках данного руководства, теперь удалены из Azure.
Go + Heroku: развертывание web-приложения
Для размещения своего web-приложения в облаке уже существует не мало различных сервисов и хостингов, однако лишь немногие поддерживают работу с Go. Среди них можно обратить внимание на следующие:
— Google App Engine
— Heroku
Некоторые другие сервисы также предлагают поддержку Go, однако на платной основе, что не всегда выгодно для разработчика, например, если он проводит различные эксперименты, изучая особенности языка. Выбрав такие критерии выбора, как простоту развертывания, скорость и удобство, я остановился на Heroku.
Для одного аккаунта Heroku предлагает до 5 приложений на бесплатной основе. Каждому приложению система выделяет 750 бесплатных часов работы в месяц, также следует учитывать, что после часа «простоя» приложение уходит в режим «сна» (Но оно автоматически будет «разбужено» при поступлении запроса к нему).
1. Регистрация в системе и авторизация
2. Создание приложения
Цель поста — показать, как развернуть приложение в облаке, потому я обойдусь простейшим «Hello, World», используя фреймворк martini:
3. Создание файла Procfile
Procfile нужен Heroku для того, чтобы знать, как запускать сервер. Разместим там одну маленькую строчку:
Обратите внимание, что если ваш исходник расположен в папке, отличной от папки hello, то и содержимое будет несколько другим:
4. Создание локального репозитория
В дальнейшем мы будем производить push из локального репозитория на репозиторий Heroku.
5. Godep — сохранение зависимостей
godep — специальный инструмент для управления зависимостями пакета. Он позволит сохранить информацию о пакетах, которые использует наш проект, и их исходный код.
Устанавливаем:
6. Создание приложения на Heroku и развертывание
Команда создаст наше приложение и, используя Go Heroku Buildpack, сохранит информацию о том, как его нужно собирать и развертывать.
Делаем push:
Почти все, мы выполняем еще одну команду, Heroku запустит приложение, затем откроет браузер и перейдет по адресу работающего приложения:
Все, приложение запущено на Heroku. В будущем вам нужно будет только поправить зависимости (если начнете использовать новые библиотеки), сделать коммит и push. На мой взгляд весьма быстро, просто и удобно. Вот тут описан похожий способ, но на мой взгляд он немного сложнее.
Развертывание веб-приложения ASP.NET на виртуальной машине Linux в Azure
В этой статье представлено пошаговое руководство по развертыванию веб-приложений ASP.NET (на примере проекта на фреймворке DotVVM) на виртуальной машине Ubuntu Server 20.04 в Microsoft Azure.
Вот основные шаги, которые мы разберем:
создание виртуальной машины в Azure на основе дистрибутива Linux;
публикация веб-приложения ASP.NET в Visual Studio 2019;
размещение веб-приложения на виртуальной машине;
подключение базы данных в виртуальной машине.
Создание виртуальной машины в Azure на основе дистрибутива Linux
Для начала нам понадобится подписка на Azure. Если у вас ее нет, учетную запись можно бесплатно создать здесь.
Перейдите на портал Azure, найдите вкладку Virtual Machines (Виртуальные машины) и создайте новую машину. В этом процессе есть несколько важных моментов, которые мы подробно рассмотрим ниже.
Общие настройки
Для начала нужно указать подписку, группу ресурсов и параметры нового экземпляра. На этом этапе мы выберем операционную систему (в нашем случае — Ubuntu Server 20.04) и размер виртуальной машины.
Теперь нужно ввести данные учетной записи администратора — имя пользователя и пароль. Это очень важно, чтобы в дальнейшем получить доступ к нашей машине. Здесь нам предлагают выбрать из двух опций — создать открытый ключ SSH (SSH public key) или придумать пароль. Выбрав вариант с паролем, увидим такую форму:
Осталось определить правила для входящих портов. В данном случае нам понадобится порт 80 для HTTP-соединений, который позволит получить доступ к сайту в браузере. Другой порт — SSH (22) — обеспечит удаленный доступ к виртуальной машине.
Дальнейшие настройки
Теперь, когда мы указали основную информацию, можно еще раз проверить все параметры и создать машину. В другом сценарии мы также могли бы указать тип жесткого диска (SSD или HDD), конфигурацию сети, балансировку нагрузки, параметры управления самой машиной и расширениями.
Закончив с настройками, запустите процесс создания машины. Это займет несколько минут.
Когда все готово, перейдем в главный раздел Azure и получим открытый IP-адрес, назначенный нашей виртуальной машине.
В его настройках мы можем выбрать опцию Static (статический) — это значит, что IP-адрес не будет меняться во время перезагрузки виртуальной машины. Мы также можем указать DNS для нашего открытого IP-адреса.
Теперь, когда у нас есть виртуальная машина с Ubuntu Server 20.04, размещенная в Azure, мы можем установить с ней удаленное соединение по протоколу SSH (Secure Shell) через консоль управления.
Запустим следующую команду с именем пользователя (которое мы указали при создании ВМ в Azure), IP-адресом или DNS:
Здесь нужно ввести учетные данные для доступа к машине:
Установка Apache
Чтобы сделать наше приложение доступным в интернете, нам понадобятся IIS, Nginx или Apache в качестве обратного прокси-сервера, который будет принимать HTTP-запросы и перенаправлять их на Kestrel (веб-сервер, который по умолчанию включен в шаблоны проектов ASP.NET).
Для установки Apache мы должны ввести следующие команды:
Учитывая, что порт 80 нашей виртуальной машины открыт, мы можем скопировать ее открытый IP-адрес или DNS и запустить их в браузере. Если Apache установлен правильно, мы увидим его стартовую страницу:
Теперь нам понадобятся модули Apache mod_proxy для выполнения функций обратного прокси-сервера:
Публикация веб-приложения ASP.NET в Visual Studio 2019
Для примера возьмем веб-приложение, созданное на фреймворке DotVVM, в основе которого лежит шаблон MVVM из ASP.NET 5.
В открывшемся диалоговом окне создадим новый профиль публикации типа Folder (Папка) и укажем путь к папке для развертывания файлов:
Теперь опубликуем решение из созданного профиля:
В результате наши файлы будут развернуты в указанной папке:
Мы используем их для выполнения следующей операции на виртуальной машине.
Размещение веб-приложения на виртуальной машине
Настройка сервера Apache
Обратите внимание: вы можете задать нужное вам имя файла.
Содержимое нашего файла DotNetApp.conf будет таким:
Помимо этого, в файле конфигурации DotNetApp.conf мы указали, что к нашему приложению можно получить доступ через порт 80. В таком случае мы можем сменить порт, но важно при этом не забыть сделать то же самое в настройках нашей виртуальной машины в Azure.
Копирование файлов приложения на виртуальную машину
Теперь нужно изменить настройки веб-приложения так, чтобы оно стало доступным через порт 80. Для этого мы копируем файлы, развернутые в Visual Studio 2019, на виртуальную машину. Это можно сделать из каталога /var/.
Теперь выполним передачу файлов. В Windows для этого используется программа WinSCP, которая позволяет подключаться к виртуальным машинам.
Завершив установку и инициализацию WinSCP, создадим на виртуальной машине в Azure новый сеанс с нашими учетными данными.
В папке пользователя по умолчанию создадим новую папку, например App, и скопируем в нее файлы приложения:
Теперь наше веб-приложение полностью размещено на виртуальной машине.
Создание службы для запуска приложения и контроля его работы
Чтобы создать файл службы, который позволит запускать наше веб-приложение, откроем редактор Nano:
В содержимом файла укажем рабочий каталог и файл для запуска веб-приложения.
Запустим созданную службу.
Теперь перезапустим сервер Apache и убедимся, что наше приложение работает через порт 80.
Завершив размещение и настройку, мы сможем получить доступ к веб-приложению через браузер, используя назначенный IP-адрес или DNS-имя. Как видите, наше приложение ASP.NET, созданное на фреймворке DotVVM, отлично работает на виртуальной машине Linux в Azure.
Подключение базы данных в виртуальной машине
Итак, мы успешно завершили установку приложения. Но это еще не все. Большинство современных веб-проектов (если не все) связаны с базами данных. В этом примере мы разберем, как установить на виртуальную машину базу данных PostgreSQL и связать ее с нашим проектом на DotVVM в ASP.NET 5.
Для установки PostgreSQL введем следующие команды:
Далее в настройках виртуальной машины в Azure нужно открыть порт 5432 для удаленного доступа к PostgreSQL.
Теперь на Ubuntu Server мы должны внести изменения в файл pg_hba.conf, чтобы разрешить удаленное подключение к PostgreSQL.
Пропишем в секции IPv4 local connections файла pg_hba.conf следующую строку:
Еще один файл, в который мы должны внести изменения, называется postgresql.conf. Эта конфигурация определяет, какие IP-адреса могут удаленно подключаться к PostgreSQL.
В секции Connections and Authentication удалим символ # и оставим следующую строку:
Теперь перезапустим службу базы данных.
Установив эти настройки, мы можем создать пользователя для доступа к базе данных, как в этом примере:
Осталось только изменить соответствующие настройки нашей базы данных. Сделав это, мы сможем удаленно подключаться к ней от имени пользователя, которого мы только что создали.
В завершение мы должны установить в нашем веб-приложении новое подключение к базе данных.
Чтобы эти изменения вступили в силу, нужно заменить файлы в каталоге /var/DotNetApp на другие, с новой конфигурацией, и перезапустить соответствующие службы (Kestrel и Apache).
Спасибо за внимание
Спасибо, что прочитали эту статью. Надеюсь, она показалась вам интересной и полезной. Если у вас появились вопросы или идеи, которыми хочется поделиться, я всегда открыт для общения, участия в совместных проектах и обмена опытом.
Всех желающих приглашаем на открытый урок «Как устроена сериализация». На занятии мы:
— Рассмотрим, что такое сериализации, и какие бывают форматы: плюсы и минусы каждого;
— Поработаем с XML, JSON и бинарным представлением данных языка.
>> РЕГИСТРАЦИЯ
Краткое руководство. Развертывание веб-приложения ASP.NET
Azure PowerShell — рекомендуемое средство для создания приложений на платформе размещение Windows. Для создания приложений в Linux используйте другой инструмент, например Azure CLI
Предварительные требования
Если у вас уже установлена версия Visual Studio 2022:
Создание веб-приложения ASP.NET
Откройте Visual Studio и выберите Создать проект.
В разделе Создать новый проект найдите и выберите ASP.NET Core Web App, после чего нажмите Далее.
В разделе Настройка нового проекта присвойте приложению имя MyFirstAzureWebApp и щелкните Далее.
Для параметра Тип проверки подлинности укажите значение Нет. Щелкните Создать.
В меню Visual Studio выберите Отладка > Запустить без отладки, чтобы запустить приложение локально.
Откройте Visual Studio и выберите Создать проект.
В окне Настройка нового проекта присвойте приложению имя MyFirstAzureWebApp и щелкните Создать.
Убедитесь, что для параметра Проверка подлинности задано значение Без проверки подлинности. Щелкните Создать.
В меню Visual Studio выберите Отладка > Запустить без отладки, чтобы запустить приложение локально.
В окне терминала создайте новую папку с именем MyFirstAzureWebApp и откройте ее в Visual Studio Code.
На странице браузера отобразится шаблон веб-приложения ASP.NET Core 6.0.
На странице браузера отобразится шаблон веб-приложения ASP.NET Framework 4.8.
На странице браузера отобразится шаблон веб-приложения ASP.NET Core 6.0.
На странице браузера отобразится шаблон веб-приложения ASP.NET Framework 4.8.
Публикация веб-приложения
Прежде чем опубликовать веб-приложение, следует создать и настроить новую Службу приложений, в которой вы сможете опубликовать это приложение.
В процессе настройки Службы приложений вы создадите следующее:
Выполните следующие действия, чтобы создать Службу приложений и опубликовать свой проект:
Щелкните правой кнопкой мыши проект MyFirstAzureWebApp в Обозревателе решений и выберите Опубликовать.
В разделе Публикация выберите Azure и нажмите кнопку Далее.
Доступные параметры зависят от того, вошли ли вы в Azure и есть ли у вас учетная запись Visual Studio, связанная с учетной записью Azure. Выберите Добавить учетную запись или Войти, чтобы войти в подписку Azure. Если вы уже вошли, выберите нужную учетную запись.
Для параметра Подписка подтвердите предложенный вариант или выберите другой из раскрывающегося списка.
В разделе Группа ресурсов выберите Создать. В разделе Новое имя группы ресурсов введите myResourceGroup и щелкните ОК.
В разделе План размещения щелкните Создать.
В диалоговом окне План размещения. Создать новый введите значения, указанные в следующей таблице.
Параметр | Рекомендуемое значение | Описание |
---|---|---|
План размещения | MyFirstAzureWebAppPlan | Имя плана службы приложений. |
Расположение | Западная Европа | Центр обработки данных, где размещается веб-приложение. |
Размер | Бесплатный | Ценовая категория определяет возможности размещения. |
Выберите Создать, чтобы создать ресурсы Azure.
После завершения работы мастера ресурсы Azure будут созданы, и вы будете готовы опубликовать проект ASP.NET Core.
В диалоговом окне Публикация убедитесь, что в качестве экземпляра Службы приложений выбрано новое приложение Службы приложений, а затем щелкните Готово. Visual Studio создаст профиль публикации для выбранного приложения Службы приложений.
На странице Публикация выберите Опубликовать. При появлении сообщения с предупреждением щелкните Продолжить.
Visual Studio создает, упаковывает и публикует приложение в Azure, а затем запускает его в браузере по умолчанию.
На странице браузера отобразится веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится веб-приложение ASP.NET Framework 4.8.
Найдите и выберите «Служба приложений Azure: развернуть в веб-приложении».
Ответьте на запросы следующим образом:
Во всплывающем окне Всегда развертывать рабочую область MyFirstAzureWebApp в выберите Да. Таким образом, пока вы находитесь в той же рабочей области, Visual Studio Code будет каждый раз выполнять развертывание в одном и том же приложении Службы приложений.
Когда публикация завершится, щелкните Обзор веб-сайта в открывшемся уведомлении и нажмите кнопку Открыть при появлении запроса.
На странице браузера отобразится веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится веб-приложение ASP.NET Framework 4.8.
Войдите в учетную запись Azure с помощью команды az login и выполните следующий запрос:
Разверните код в локальном каталоге MyFirstAzureWebApp с помощью команды az webapp up :
Выполнение этой команды может занять несколько минут. По мере выполнения будут отображаться сообщения о создании группы ресурсов, плане службы приложений и размещения приложения, настройке ведения журнала и последующем выполнении развертывания ZIP-файла. Затем отобразится сообщение с URL-адресом приложения:
Откройте браузер и перейдите по этому URL-адресу:
На странице браузера отобразится веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится веб-приложение ASP.NET Framework 4.8.
Azure PowerShell — рекомендуемое средство для создания приложений на платформе размещение Windows. Для создания приложений в Linux используйте другое средство, например Azure CLI
Войдите в учетную запись Azure с помощью команды Connect-AzAccount и выполните следующий запрос:
Создайте приложение с помощью команды New-AzWebApp:
Выполнение этой команды может занять несколько минут. При выполнении создается группа ресурсов, план службы приложений и ресурс Службы приложений.
В корневой папке приложения подготовьте свое локальное приложение MyFirstAzureWebApp к развертыванию, выполнив команду dotnet publish :
Перейдите в каталог версии и создайте ZIP-файл из содержимого:
Опубликуйте ZIP-файл в приложении Azure с помощью команды Publish-AzWebApp:
-ArchivePath нужно предоставить полный путь к ZIP-файлу.
Откройте браузер и перейдите по этому URL-адресу:
На странице браузера отобразится веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится веб-приложение ASP.NET Framework 4.8.
Обновление и повторное развертывание приложения
Чтобы обновить и повторно развернуть веб-приложение, сделайте следующее:
В Обозревателе решений откройте файл Index.cshtml вашего проекта.
Замените первый элемент
Чтобы выполнить повторное развертывание в Azure, щелкните правой кнопкой мыши проект MyFirstAzureWebApp в Обозревателе решений, а затем выберите Опубликовать.
На странице Публикация со сводными сведениями щелкните Опубликовать.
По завершении публикации Visual Studio открывает в браузере страницу с URL-адресом веб-приложения.
На странице браузера отобразится обновленное веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится обновленное веб-приложение ASP.NET Framework 4.8.
Замените первый элемент
Найдите и выберите «Служба приложений Azure: развернуть в веб-приложении». Помните, что на предыдущем этапе вы указали Visual Studio Code развернуть рабочую область в приложении.
Щелкните Развернуть при появлении запроса.
Когда публикация завершится, щелкните Обзор веб-сайта в открывшемся уведомлении и нажмите кнопку Открыть при появлении запроса.
На странице браузера отобразится обновленное веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится обновленное веб-приложение ASP.NET Framework 4.8.
В локальном каталоге выберите файл Index.cshtml. Замените первый элемент
ASP.NET Core 6.0 является кросс-платформенным решением, поэтому измените на linux или windows в зависимости от развертывания.
ASP.NET Framework 4.8 имеет зависимости от платформы, поэтому всегда размещается в среде Windows.
Эта команда использует значения, которые кэшируются локально в файле .azure/config, включая имя приложения, группу ресурсов и план службы приложений.
После завершения развертывания переключитесь в окно браузера, открытое на этапе перехода в приложение, и щелкните «Обновить».
На странице браузера отобразится обновленное веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится обновленное веб-приложение ASP.NET Framework 4.8.
В локальном каталоге выберите файл Index.cshtml. Замените первый элемент
В корневой папке приложения подготовьте свое локальное приложение MyFirstAzureWebApp к развертыванию, выполнив команду dotnet publish :
Перейдите в каталог версии и создайте ZIP-файл из содержимого:
Опубликуйте ZIP-файл в приложении Azure с помощью команды Publish-AzWebApp:
-ArchivePath нужно предоставить полный путь к ZIP-файлу.
После завершения развертывания переключитесь в окно браузера, открытое на этапе перехода в приложение, и щелкните «Обновить».
На странице браузера отобразится обновленное веб-приложение ASP.NET Core 6.0.
На странице браузера отобразится обновленное веб-приложение ASP.NET Framework 4.8.
Управление приложением Azure
Чтобы управлять веб-приложением, перейдите на портал Azure, найдите и выберите Службы приложений.
На странице Службы приложений выберите имя веб-приложения.
На странице Обзор для веб-приложения вы можете выполнять базовые задачи управления: просмотр, завершение, запуск, перезагрузку и удаление. В меню слева есть дополнительные страницы для настройки приложения.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы не планируете использовать эти ресурсы в будущем, вы можете удалить их, удалив саму группу ресурсов.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы не планируете использовать эти ресурсы в будущем, вы можете удалить их, удалив саму группу ресурсов.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:
Ее выполнение может занять до минуты.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, удалите группу ресурсов, выполнив следующую команду PowerShell:
Ее выполнение может занять до минуты.
Дальнейшие действия
В этом кратком руководстве показано, как создать и развернуть веб-приложение ASP.NET в Службе приложений Azure.