Размещение и развертывание ASP.NET Core

В общем при развертывании приложения ASP.NET Core в среде внешнего размещения выполняются следующие действия.

  • Развертывание опубликованного приложения в папке на сервере размещения.
  • Настройка диспетчера процессов, который запускает приложение при поступлении запросов и перезапускает его после аварийного завершения или после перезагрузки сервера.
  • Для конфигурации настройте такой прокси-сервер, который перенаправляет запросы в приложение.

Публикация в папку

Команда интерфейса командной строки dotnet publish компилирует код приложения и копирует файлы, необходимые для его выполнения, в папку publish. При развертывании из Visual Studio шаг dotnet publish выполняется автоматически перед копированием файлов место развертывания.

Локальное выполнение опубликованного приложения

Чтобы запустить опубликованное приложение локально, запустите dotnet <ApplicationName>.dll из папки публикации.

Файлы параметров публикации

Файлы *.json публикуются по умолчанию. Чтобы опубликовать другие файлы параметров, укажите их в элементе <ItemGroup><Content Include= ... /> в файле проекта. В следующем примере публикуются XML-файлы:

<ItemGroup>
  <Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Содержимое папки

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

Приложения .NET Core могут публиковаться как автономные развертывания или развертывания, зависящие от платформы. Если приложение автономное, в папку publish добавляются файлы сборки, содержащие среду выполнения .NET. Если приложение зависит от платформы, файлы среды выполнения .NET не добавляются, так как приложение ссылается на версию .NET, установленную на сервере. По умолчанию используется модель развертывания с зависимостью от платформы. Дополнительные сведения см. в статье Развертывание приложений .NET Core.

В дополнение к EXE- и DLL-файлам папка публикации для приложения ASP.NET Core обычно содержит файлы конфигурации, статические ресурсы и представления MVC. Дополнительные сведения см. в статье Структура каталогов ASP.NET Core.

Настройка диспетчер процессов

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

Настройка обратного прокси-сервера

Если приложение использует сервер Kestrel, Nginx, Apache или IIS можно использовать в качестве обратного прокси-сервера. Обратный прокси-сервер получает HTTP-запросы из Интернета и пересылает их на Kestrel.

Любая из этих конфигураций (с обратным прокси-сервером и без него) является поддерживаемой конфигурацией для размещения. Для получения дополнительной информации см. раздел Когда использовать Kestrel с обратным прокси-сервером.

Любая из этих конфигураций (с обратным прокси-сервером и без него) является поддерживаемой конфигурацией для размещения. Для получения дополнительной информации см. раздел Когда использовать Kestrel с обратным прокси-сервером.

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Для приложений, размещенных за прокси-серверами и подсистемами балансировки нагрузки, может потребоваться дополнительная настройка. Без дополнительной настройки приложение может не иметь доступ к схеме (HTTP/HTTPS) и удаленному IP-адресу, где был сформирован запрос. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Использование Visual Studio и MSBuild для автоматизации развертывания

Помимо копирования выходных данных из dotnet publish на сервер в процессе развертывания часто требуется выполнение и других задач. Например, может потребоваться включить дополнительные файлы в папку publish или исключить их из нее. Visual Studio использует для веб-развертывания MSBuild и настраивает MSBuild для решения многих других задач в процессе развертывания. Дополнительные сведения см. в статье Профили публикации Visual Studio (.pubxml) для развертывания приложений ASP.NET Core и книге Using MSBuild and Team Foundation Build (Использование MSBuild и сборки Team Foundation).

Развертывание приложений можно выполнять напрямую из Visual Studio в Службу приложений Azure, используя функцию публикации в веб-приложения. Azure DevOps Services поддерживает непрерывное развертывание в Службе приложений Azure. Дополнительные сведения см. в разделе DevOps для разработчиков ASP.NET Core.

Публикация в Azure

Дополнительные сведения см. в статье Публикация приложения ASP.NET Core в Azure с помощью Visual Studio. Дополнительный пример приведен в статье Создание веб-приложения ASP.NET Core в Azure.

Публикация с помощью MSDeploy в Windows

Дополнительные сведения о том, как опубликовать приложение с профилем публикации Visual Studio, в том числе из командной строки Windows с помощью команды dotnet msbuild, см. в статье Профили публикации Visual Studio (.pubxml) для развертывания приложений ASP.NET Core.

Службы IIS

Дополнительные сведения о развертывании служб IIS с конфигурацией, предоставляемой файлом web.config, см. в статьях в разделе Размещение ASP.NET Core в Windows с IIS.

Размещение в веб-ферме

Дополнительные сведения о конфигурации для размещения приложений ASP.NET Core в среде веб-фермы (например, при развертывании множества экземпляров приложения для обеспечения масштабируемости) см. в статье Размещение ASP.NET Core в веб-ферме.

Размещение в Docker

Дополнительные сведения см. в статье Размещение ASP.NET Core в контейнерах Docker.

Выполнение проверок работоспособности

Используйте ПО промежуточного слоя для проверки работоспособности приложения и его зависимостей. Дополнительные сведения см. в статье Проверки работоспособности в ASP.NET Core.

Дополнительные ресурсы

В общем при развертывании приложения ASP.NET Core в среде внешнего размещения выполняются следующие действия.

  • Развертывание опубликованного приложения в папке на сервере размещения.
  • Настройка диспетчера процессов, который запускает приложение при поступлении запросов и перезапускает его после аварийного завершения или после перезагрузки сервера.
  • Для конфигурации настройте такой прокси-сервер, который перенаправляет запросы в приложение.

Публикация в папку

Команда интерфейса командной строки dotnet publish компилирует код приложения и копирует файлы, необходимые для его выполнения, в папку publish. При развертывании из Visual Studio шаг dotnet publish выполняется автоматически перед копированием файлов место развертывания.

Содержимое папки

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

Приложения .NET Core могут публиковаться как автономные развертывания или развертывания, зависящие от платформы. Если приложение автономное, в папку publish добавляются файлы сборки, содержащие среду выполнения .NET. Если приложение зависит от платформы, файлы среды выполнения .NET не добавляются, так как приложение ссылается на версию .NET, установленную на сервере. По умолчанию используется модель развертывания с зависимостью от платформы. Дополнительные сведения см. в статье Развертывание приложений .NET Core.

В дополнение к EXE- и DLL-файлам папка публикации для приложения ASP.NET Core обычно содержит файлы конфигурации, статические ресурсы и представления MVC. Дополнительные сведения см. в статье Структура каталогов ASP.NET Core.

Настройка диспетчер процессов

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

Настройка обратного прокси-сервера

Если приложение использует сервер Kestrel, Nginx, Apache или IIS можно использовать в качестве обратного прокси-сервера. Обратный прокси-сервер получает HTTP-запросы из Интернета и пересылает их на Kestrel.

Любая из этих конфигураций (с обратным прокси-сервером и без него) является поддерживаемой конфигурацией для размещения. Для получения дополнительной информации см. раздел Когда использовать Kestrel с обратным прокси-сервером.

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Для приложений, размещенных за прокси-серверами и подсистемами балансировки нагрузки, может потребоваться дополнительная настройка. Без дополнительной настройки приложение может не иметь доступ к схеме (HTTP/HTTPS) и удаленному IP-адресу, где был сформирован запрос. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Использование Visual Studio и MSBuild для автоматизации развертывания

Помимо копирования выходных данных из dotnet publish на сервер в процессе развертывания часто требуется выполнение и других задач. Например, может потребоваться включить дополнительные файлы в папку publish или исключить их из нее. Visual Studio использует для веб-развертывания MSBuild и настраивает MSBuild для решения многих других задач в процессе развертывания. Дополнительные сведения см. в статье Профили публикации Visual Studio (.pubxml) для развертывания приложений ASP.NET Core и книге Using MSBuild and Team Foundation Build (Использование MSBuild и сборки Team Foundation).

Развертывание приложений можно выполнять напрямую из Visual Studio в Службу приложений Azure, используя функцию публикации в веб-приложения. Azure DevOps Services поддерживает непрерывное развертывание в Службе приложений Azure. Дополнительные сведения см. в разделе DevOps для разработчиков ASP.NET Core.

Публикация в Azure

Дополнительные сведения см. в статье Публикация приложения ASP.NET Core в Azure с помощью Visual Studio. Дополнительный пример приведен в статье Создание веб-приложения ASP.NET Core в Azure.

Публикация с помощью MSDeploy в Windows

Дополнительные сведения о том, как опубликовать приложение с профилем публикации Visual Studio, в том числе из командной строки Windows с помощью команды dotnet msbuild, см. в статье Профили публикации Visual Studio (.pubxml) для развертывания приложений ASP.NET Core.

Службы IIS

Дополнительные сведения о развертывании служб IIS с конфигурацией, предоставляемой файлом web.config, см. в статьях в разделе Размещение ASP.NET Core в Windows с IIS.

Размещение в веб-ферме

Дополнительные сведения о конфигурации для размещения приложений ASP.NET Core в среде веб-фермы (например, при развертывании множества экземпляров приложения для обеспечения масштабируемости) см. в статье Размещение ASP.NET Core в веб-ферме.

Размещение в Docker

Дополнительные сведения см. в статье Размещение ASP.NET Core в контейнерах Docker.

Дополнительные ресурсы