Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL Хостинг

In this article, let’s learn about Deploying / Hosting ASP.NET Core with SmarterASP.NET, a Superior Hosting Service for ASP.NET Core 3.x. We will also go step-by-step on deploying an actual ASP.NET Core 3.1 Application directly from Visual Studio 2019 IDE to SmarterASP.NET Server via WebDeploy. Let’s get started.

Дата обновления: 14.10.2022

Время чтения: 9 мин.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

ASP.NET – популярная платформа для разработки веб-приложений от Microsoft. С данной технологией работает множество провайдеров: любой, кто предлагает Windows-хостинг, поддерживает ASP.NET. Это связано с тем, что Microsoft создает специальные ASP-конструкции, дающие ряд преимуществ перед Linux.

В статье собрали 12 провайдеров, поддерживающих ASP.NET.

This post courtesy of Sundararajan Narasiman, AWS Partner Solutions Architect

There is an increasing amount of customer interest in hosting microservices-based applications using Amazon Elastic Container Service (ECS), largely due to the benefits offered by AWS Fargate.

AWS Fargate is a compute engine for containers that allows you to run containers without needing to provision, manage, or scale any Amazon EC2 compute infrastructure. Fargate works with Amazon ECS and can run microservices developed in many programming languages or application frameworks. This includes Java, .NET Core, Python, Node.js, Go, or Ruby on Rails. Nowadays, enterprises that are building microservices applications using .NET are using .NET core because of the cross-platform support (the ability to run in Linux).

In this post, I cover how to host a cross-platform ASP.NET core application using AWS Fargate.

Understanding what options are available for ASP.net Core hosting and their impact on the web application.

The new ASP.NET core 2.2 was upgraded with some improvements to the hosting model if you were to host it with IIS. In the previous versions you were expected to host the ASP.NET Core applications by using a proxy web server such as IIS on windows or NGINX or Apache. However with the new ASP.NET Core 2.2 you could directly host the ASP.NET Core application in Windows within the IIS or IISExpress without the need for an external server. This improves throughput as the new In-Process hosting mechanism doesn’t require internal HTTP requests hopping or other inter-process communication.

In this post I’ll focus on the new In-Process hosting model since that’s what’s changed and is improved, however I’ll be also evaluating the basics of Out-Of-Process hosting model as well and under where it could be best used.

Если вы используете или разрабатываете приложения, сервисы или сайны на базе технологии .NET от Microsoft, то скорее всего вам потребуется VDS-сервер с поддержкой ОС Windows Server.

В этом рейтинге мы собрали лучших хостеров с тарифами на аренду виртуальных серверов на базе Windows и ASP.NET.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Лучший хостинг с поддержкой ASP.NET в 2020 – 2021 году

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Timeweb Cloud

Наша оценка: /10

Тест UnixBench:

Начал работать в 2006 году

Cерверы: Россия, Польша, Казахстан

Панель управления: Собственная

Поддерживает: 152-ФЗ, Amazon S3, Kubernetes, VDI, Redis

Диски:

Бесплатный SSL: есть

Тестовый период: 5 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

aeza.net

Наша оценка: /10

Тест UnixBench:

Начал работать в 2021 году

Cерверы: Россия, Германия, Нидерланды, Финляндия, Австрия

Панель управления: Собственная

Диски:

Бесплатный SSL: есть

Тестовый период: 40 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

VDSina

Наша оценка: /10

Тест UnixBench:

Начал работать в 2013 году

Cерверы: Россия, Нидерланды

Панель управления: VestaCP, ISPManager

Диски:

Бесплатный SSL: есть

Тестовый период: нет

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Fornex

Наша оценка: /10

Тест UnixBench:

75 руб.

374 руб.

Начал работать в 2007 году

Cерверы: Россия, Германия, США, Украина, Нидерланды, Швейцария

Панель управления: VestaCP, ISPManager

Поддерживает: PHP, Python, Node.js, Memcached, Ruby

Диски:

Бесплатный SSL: есть

Тестовый период: 7 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

RuVDS

Наша оценка: /10

Тест UnixBench:

Начал работать в 2015 году

Cерверы: Россия, Германия, Нидерланды, Швейцария, Великобритания

Панель управления: Plesk, cPanel

Диски:

Бесплатный SSL: нет

Тестовый период: 3 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Selectel

Наша оценка: /10

Начал работать в 2008 году

Cерверы: Россия, Нидерланды

Панель управления: Собственная

Поддерживает: 152-ФЗ, Kubernetes, PHP, Redis

Диски:

Бесплатный SSL: есть

Тестовый период: нет

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

FirstVDS

Наша оценка: /10

Начал работать в 2002 году

Панель управления: ISPManager

Диски:

Бесплатный SSL: нет

Тестовый период: 7 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Cloud4box

Наша оценка: /10

Тест UnixBench:

Начал работать в 2015 году

Панель управления: VestaCP, ISPManager

Диски:

Бесплатный SSL: нет

Тестовый период: 1 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

1cloud

Наша оценка: /10

Начал работать в 2012 году

Cерверы: Россия, Беларусь, Казахстан

Панель управления: ISPManager, Собственная

Диски:

Бесплатный SSL: нет

Тестовый период: 3 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

ProfitServer

Наша оценка: /10

80 руб.

59 руб.

Начал работать в 2014 году

Cерверы: Россия, США, Нидерланды, Сингапур, Болгария

Панель управления: ISPManager

Диски:

Бесплатный SSL: есть

Тестовый период: 7 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Fozzy

Наша оценка: /10

120 руб.

299 руб.

Начал работать в 2012 году

Cерверы: Россия, США, Нидерланды, Сингапур, Англия, Люксембург

Поддерживает: PHP, Python, Node.js, HTTP/2, Perl

Диски:

Бесплатный SSL: есть

Тестовый период: 7 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

ISPserver

Наша оценка: /10

110 руб.

595 руб.

Начал работать в 1997 году

Cерверы: Россия, Германия

Панель управления: cPanel, ISPManager

Диски:

Бесплатный SSL: есть

Тестовый период: 7 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

SmartApe

Наша оценка: /10

295 руб.

395 руб.

Начал работать в 2012 году

Cерверы: Россия, Чехия

Панель управления: ISPManager

Диски:

Бесплатный SSL: есть

Тестовый период: 14 дн.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Webhost1

Наша оценка: /10

103 руб.

600 руб.

Начал работать в 2008 году

Cерверы: Россия, Нидерланды, Израиль

Панель управления: Собственная

Поддерживает: PHP, Python, Perl

Диски:

Бесплатный SSL: есть

Тестовый период: нет

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

CloudLITE

Наша оценка: /10

Начал работать в 2014 году

Панель управления: ISPManager, Собственная

Диски:

Бесплатный SSL: есть

Тестовый период: 7 дн.

Пояснения к рейтингу

2 Linux Hosting

ASP.NET Core application can also be hosted on Linux by either framework-dependent deployment or as self-contained deployment. Kestrel is used as internal web server. However, the web serving capabilities aren’t as feature rich as servers such as Apache or Nginx. A reverse proxy server can offload work such as serving static content, caching requests, compressing requests, and HTTPS termination from the HTTP server.

FirstVDS

Российский провайдер, работающий с 2002 года. Предлагает услуги хостинга, VPS/VDS и аренды виртуальных и выделенных серверов. Оборудование компании находится в двух дата-центрах Москвы, где используется современное сетевое оборудование Juniper Networks. Качественное обслуживание позволяет гарантировать аптайм серверов в размере 99,9%.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает качественный хостинг Windows на VDS. Доступно 4 тарифа:

  • Старт (30 ГБ диска, 1 ядро, 1 ГБ RAM).
  • Разгон (60 ГБ диска, 2 ядра, 2 ГБ RAM).
  • Отрыв (90 ГБ диска, 4 ядра, 4 ГБ RAM).
  • Улет (120 ГБ диска, 6 ядер, 6 ГБ RAM).

При этом можете выбрать версию Windows Server (2012 R2, 2016 или 2019), а также тип диска – гибрид HDD и SSD (где SSD-кэш), чистый SSD или высокоскоростной NVMe. При покупке VDS получите 2 бесплатные терминальные лицензии для подключения администраторов, установку и активацию сервера за 5 минут, а также тестовый период от 1 до 3 дней (актуально для юридических лиц).

Masterhost

Российский провайдер, работающий с 1999 года. Имеет 2 собственных дата-центра в Москве класса надежности Tier III. В числе услуг – хостинг сайтов, VPS, аренда серверов, колокация, регистрация доменов и многое другое.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает объединенную тарифную сетку для UNIX-хостинга и хостинга на Windows. Она включает следующие тарифы:

  • V2-Start (5 ГБ диска, 1 сайт).
  • V2-Plus (5 ГБ диска, 2 сайта).
  • V4-Eco (10 ГБ диска, 10 сайтов).
  • V6-Speed (20 ГБ диска, 20 сайтов).
  • V8-Power (30 ГБ диска, 30 сайтов).

На тарифах Windows-хостинга доступна поддержка следующих технологий — ASP.NET, .NET CORE 2.2&3.0, MSSQL, MySQL. Хостинг располагается на надежных серверах с высокопроизводительными SSD-дисками в отказоустойчивых RAID-массивах. Если не устраивает текущее состояние тарифа, то можете расширить его параметры без смены тарифа. В частности, можно увеличить дисковое пространство и добавить домен. Провайдер бесплатно выдает SSL-сертификат.

Протестировать Windows-хостинг можно на специальном тестовом тарифе Test-Drive: доступно 3 ГБ дискового пространства, где можете разместить 1 сайт. Опробовать производительность и функциональность хостинга можно в течение 7 дней.

Cloud4box

Российский провайдер, работающий с 2014 года. В число услуг входит VPS/VDS, аренда выделенных серверов, хранение данных, обслуживание и администрирование, продажа лицензий и прочее. Клиентами провайдера являются более тысячи пользователей.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает аренду виртуальных серверов на Windows. Конфигуратор позволяет выбрать:

  • Тип диска (HDD, HDD+SSD, SSD) и его размер (от 40 ГБ до 10 000 ГБ).
  • Количество ядер процессора (от 1 до 32 – 3,0 ГГц).
  • Объем оперативной памяти (от 2 ГБ до 64 Гб).
  • Количество выделенных IP-адресов (от 1 до 500).

Также можете настроить собственную конфигурацию в биллинг-системе. При необходимости можно подключить защиту от DDoS-атак с выбором каналов 5 типов. В результате сервер будет защищен на уровнях L2-L7. К особенностям серверов Cloud4box можно отнести использование высокопроизводительного оборудования (SSD-диски от Intel и память DDR3/DDR4), класс надежности ЦОДа Tier III с аптаймом 99,982%, а также тестовый период в 24 часа.

Create the Docker Compose file

version: '2'
services:
  mymvcweb:
    build:
      context: ./mymvcweb
      dockerfile: Dockerfile
    expose:
      - "5000"
  reverseproxy:
    build:
      context: ./reverseproxy
      dockerfile: Dockerfile
    ports:
      - "80:80"
    links :
      - mymvcweb

docker-compose build
docker-compose up

docker-compose stop
docker-compose rm
docker-compose rmi ‘containerimageid’

In-Process Vs Out-Of-Process

Given the above facts you most certainly want to use the In-Process hosting model since it provides better performance and consumes less resources as it doesn’t require an additional process for Kestrel, plus it also avoids extra communication between the IIS and Kestrel.

However there are cases where you may want to opt for Out-Of-Process hosting such as in the case of hosting of the same web application in Windows and in Linux. When talking about hosting the application in different platforms Kestrel is the primary mechanism used to handle HTTP requests on all platforms.

However running In-Process on IIS is the way to go, unless you have a very specific need to require Kestrel.

Hoster

Российский провайдер, работающий с 2001 года. Обслуживает более 8 тыс. клиентов и имеет собственный дата-центр. Оказывает услуги хостинга, VPS, регистрации доменов, аренды серверов и так далее.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает отдельную услугу Windows-хостинга, включающую 4 тарифных плана:

  • Win 1 (1 ГБ диска).
  • Win 2 (7 ГБ диска, скидка 50% на 1 домен в зоне .RU/.РФ).
  • Win 3 (15 ГБ диска, 1 домен в зоне .RU/.РФ).
  • Win 4 (20 ГБ диска, 1 домен в зоне .RU/.РФ).

На всех тарифах поддерживаются технологии IIS 7.5, ASP.NET 4.5 MSSQL 9.0. При этом нет ограничений в количестве сайтов, поддоменов, баз данных, почтовых ящиков и FTP. При необходимости можете приобрести SSL-сертификат.

Хостинг на Windows от Hoster.ru отличается высокой скоростью работы – базы данных размещаются на серверах с высокой производительностью. В удобной панели управления можете работать с доменами, управлять FTP-аккаунтами, редактировать файлы и выполнять массу других операций. Провайдер ведёт ежедневное резервное копирование данных, что защищает от потери информации. Почтовые ящики защищены надежным антивирусом и спам-фильтрами. Единственный недостаток: провайдер не оказывает технической поддержки по тарифам Windows-хостинга. Тестовый период – 10 дней.

Out-of-process hosting model

In the Out-Of-Process hosting model the ASP.NET Core application runs in a separate process from that of the IIS or IIS Express process. This was the case for all ASP.NET Core application prior to version 2.2 . In this model the IIS basically acts like a proxy server.

It’ll be the responsibility of the ASP.NET Module to mange the ASP.NET Core application process. Upon request from the web the ASP.NET Core Module starts the ASP.NET Core application. When the requests arrive from the web to the kernel-mode HTTP.sys driver it routes the requests to IIS (or any other web server). The ASP.NET Core Module forwards the requests to Kestrel on a random port for the app, which isn’t port 80 or 443.

After Kestrel picks up the request from the ASP.NET Core Module, the request is pushed into the ASP.NET Core middleware pipeline. The middleware handles the request and passes it on as an HTTPContext instance to the ASP.NET Core application logic. The ASP.NET Core application response is passed back to IIS, which pushes it back out to the HTTP client that initiated the request.

Читайте также:  Рейтинг хостингов с PHP и MySQL 2022 - реальные отзывы, обзоры хостингов
ASP.NET Core — Out-Of-Process hosting model — Request Flow

By default if you run the web application via command line (dotnet.exe) the web application is hosted as an out of process hosting model, regardless of what you choose in the AspNetHostingModel in the project file.

Typically in production when out-of-process hosting model is used, two web servers are involved in serving the web application, first the external web server and second the internal web server. Usually the external web server is an IIS server or it could be NGINX or Apache web server. The external web server acts as the reverse proxy server, where as the it’s the Kestrel which processes the requests.

A question arises as to why you require two web servers rather than using the Kestrel as the internet facing web server. In the next section I will elaborate more with a brief over view to what Kestrel is.

1 Windows Service

An ASP.NET Core app can be hosted on Windows as a Windows Service without using IIS. When hosted as a Windows Service, the app automatically starts after server reboots.

Infobox

Российский провайдер, работающий с 2002 года. Оказывает услуги хостинга сайтов и CMS, VPS, регистрации доменов и так далее. Есть собственный дата-центр, соответствующий всем требованиям. Аптайм составляет 99,99%.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает Windows VPS на SSD корпоративного класса. Можете выбрать любой из 9 доступных тарифов – U2-U10 – со следующим диапазоном характеристик:

  • CPU – от 1 до 12 ядер.
  • Оперативная память – от 1 ГБ до 64 ГБ.
  • Размер диска – от 40 ГБ до 640 ГБ.
  • Сеть – от 10 Мбит/с до 100 Мбит/с.

Create the Amazon ECS cluster

In the AWS Management Console, Navigate to Create Cluster and select Networking only.
Since we’re going to create and host the Amazon ECS Service with AWS Fargate as the launch type, the notion of the Amazon ECS Cluster becomes a logical boundary. We need not create ECS instances while creating Amazon ECS Cluster, when the launch type is Fargate. Hence, we can create the Fargate cluster with required networking constructs such as VPC and Subnets.

Name the cluster and select Creation of new VPC for this cluster.

Leave the rest of the fields as their default values. You now have a VPC with two public subnets.

2 HTTP. Sys

The HTTP.sys is a Windows-only HTTP server based on the Http.Sys kernel driver. It offers some features that Kestrel doesn’t provide. It’s useful to use HTTP.sys when there’s a need to expose the server directly to the Internet without using IIS or an internal deployment requires a feature not available in Kestrel, such as Windows Authenticatio.

source: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-2.2
source: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-2.2

It’s important to note that HTTP.sys isn’t compatible with the ASP.NET Core Module and can’t be used with IIS or IIS Express.

Summary

In this article, we went through an awesome hosting – HOSTING ASP.NET Core with SmarterASP.NET and created a FREE 60 Days Trial Account. As you must have seen, we were also able to seamlessly deploy an ASP.NET Core 3.1 Application to the server directly via Visual Studio IDE.

LaunchSettings. json

Every time we create a new ASP.NET Core (3.1 or .NET5) application form Visual Studio, we will find a LaunchSettings.json file under the Properties folder. The default content of the file looks similar to this:

ASP.NET Core Launchsettings.json

These settings are going to be used when we run the .NET core application either from Visual Studio or by using .NET Core CLI (i.e. dotnet run command). When we run the application from Visual Studio then by default the profile with “commandName”: “IISExpress” is going to be used. On the other hand, if we run the ASP.NET Core application using .NET Core CLI, then the profile with the “commandName”: “Project” is going to be used.

Another setting that determines the ASP.NET Core hosting is AspNetCoreHostingModel. The allowed values are: InProcess and OutOfProcess. We can change the value directly in the csproj file or from Visual Studio.

We can group these hosting options into two groups: development / testing and production.

2 IIS Out-Of-Process with Kestrel Hosting

As mentioned before, we can change the hosting model by changing the value of AspNetCoreHostingModel in the csproj file.

source: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/out-of-process-hosting?view=aspnetcore-5.0
  1. Requests arrive from the web to the kernel-mode HTTP.sys driver.
  2. The driver routes the requests to IIS on the website’s configured port. The configured port is usually 80 (HTTP) or 443 (HTTPS).
  3. The module forwards the requests to Kestrel on a random port for the app. The random port isn’t 80 or 443.
  4. Kestrel picks up the request from the module, the request is forwarded into the ASP.NET Core middleware pipeline.
  5. The middleware pipeline handles the request and passes it on as an HttpContext instance to the app’s logic.
  6. The app’s response is passed back to IIS.
  7. IIS sends the response to the client that initiated the request.

An important hint about IIS core module is that: The module doesn’t support HTTPS forwarding. Requests are forwarded over HTTP even if received by IIS over HTTPS.

1cloud

Российский провайдер, работающий с 2012 года. Услугами компании воспользовалось более 110 тыс. пользователей. Провайдером создано свыше 480 тыс. серверов. В число услуг входит создание частного облака, VPS/VDS, создание облачных хранилищ и так далее.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Можете развернуть VPS/VDS-хостинг на Windows Server буквально за пару минут. Клиенты могут выбрать ЦОД в 3 географических зонах: РФ (Москва и Санкт-Петербург), Беларусь (Минск) и Казахстан (Алматы). Также и операционную систему (Windows Server версий 2008 R2, 2012 R2, 2016 и 2019) в 2 языковых вариациях и производительность оборудования: пул серверов Xeon Gold 6132 (2,6 GHz) или Xeon Gold 6144 (3,5 GHz). При необходимости можно выбрать периодичность бэкапов. Также выбираете количество ядер процессора и размер RAM. Сервер можно протестировать в течение 3 дней (для юридических лиц – 5 дней).

Inoventica Services

Крупный российский провайдер, работающий с 1999 года. Обладает собственными каналами связи, ЦОДами в РФ, оборудованием от крупных вендоров, широким спектром ПО и так далее. Клиенты провайдера – более 4 тыс. компаний, среди которых ИКЕА, МТТ, Московский Ювелирный Завод и пр. В числе услуг – хостинг сайтов, VPS/VDS, аренда выделенных серверов, регистрация доменов и другие.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает отдельную тарифную сетку услуг хостинга сайтов на Windows. Доступны следующие тарифы:

  • Golf (1 ГБ диска, 1 сайт, 2 БД).
  • Middle (7 ГБ диска, 7 сайтов, 14 БД).
  • Business (15 ГБ диска, 30 сайтов, 60 БД).
  • Luxury (30 ГБ диска, неограниченное количество сайтов, 200 БД).

В качестве дополнительной услуги можете заказать SSL-сертификат. Хостинг на Windows поддерживает базы данных MSSQL и MYSQL, скрипты ASP.NET 2.0/4.0, .NET Framework 2.0, 3.0, 3.5, 4.0, 4.5. Используете веб-сервер IIS 8.5, в изолированном пуле можете выбрать режим classic или integrated. Также нет ограничений в количестве доменов, алиасов, поддоменов, трафике. Резервное копирование данных ведётся бесплатно. Защита от DDoS-атак основана на invGUARD, она позволяет отслеживать и фильтровать атаки наиболее распространенных типов. Оборудование провайдера располагается в надежном ЦОДе, где гарантируется аптайм 99,95%.

1 Kestrel

The Kestrel is open-source, cross-platform, event-driven, asynchronous I/O based HTTP server. It is developed to host ASP.NET Core applications on any platform. It can be used either as self hosting (in-process) or behind another webserver (out-of-process). The Kestrel is not the only way to host ASP.NET Core applications. There is another webserver implementation available in Windows known as HTTP.SYS.

source: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2
source: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2

Create an Application Load Balancer

Next, create an Application Load Balancer, as defined in the reference architecture. The Application Load Balancer is required to load balance across multiple AWS Fargate tasks.

In the EC2 console, navigate to Create Load Balancer. Name your Load Balancer as aspnetcorefargatealb.

For Scheme, select internet-facing. For IP address type, choose ipv4. The Load Balancer listens on port 80 (HTTP). The Load Balancer’s Security Group should also allow traffic on port 80 (HTTP) from the internet.

While configuring the routing for the Load Balancer, for Target type, choose ip. For Protocol, choose HTTP. For Path, enter / (forward slash).

4 Docker Hosting

We can dockerize new and existing ASP.NET Core applications easily from Visual Studio by enabling Docker support. This feature will add a docker file to the project. In order to run the container locally, we need to install Docker client on the development machine. We can run the app as Linux or Windows container.

3 Cloud / Azure Hosting

We can publish the ASP.NET Core application directly to Azure from Visual Studio. The Azure publishing tool has many deployment options: Azure App Service (Windows or Linux). Container or Azure VM.

Azure App Service is managed production environment. We benefit from the Azure security, load balancing, auto-scaling, and automated management. We don’t need to care about batching and maintaining the underlying infrastructure.

Table of Contents

2. Development & Testing Environment (2.1 Kestrel , 2.2 IIS Express 2.3 HTTP.Sys)

3. Production (3.1 IIS In-Process Hosting, 3.2 IIS Out-Of-Process with Kestrel Hosting)

4. Other Hosting Scenarios (4.1 Windows Service , 4.2 Linux Hosting, 4.3 Cloud / Azure Hosting, 4.4 Docker Hosting)

Walkthrough

  1. Containerize the ASP.NET core application.
  2. Configure the reverse-proxy server.
  3. Containerize the NGINX reverse-proxy server.
  4. Create the Docker Compose file.
  5. Push container images to Amazon ECR.
  6. Create the ECS cluster.
  7. Create an Application Load Balancer.
  8. Create an AWS Fargate Task definition.
  9. Create the Amazon ECS service.

Code examples

The code examples, Dockerfile definition, Docker Compose file, and ECS task definition for this solution are available in the amazon-ecs-fargate-aspnetcore GitHub repository.

Pre-requisites

  • Mac OS latest version (or) Windows 10 with latest updates (or) Ubuntu 16.0.4 or higher
  • .NET core 2.0 or higher
  • Docker latest version
  • aws cli
  • aws-ecs cli

1Gb

Российский провайдер, работающий с 2002 года. За время работы обслужил более 40 тыс. клиентов и поддерживал работу более 70 тыс. доменов. Среди клиентов – БКС, Mazda, Akvitens и другие крупные компании. Провайдер предлагает услуги хостинга, VPS/VDS, аренды физических серверов и так далее.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер предлагает 4 тарифа виртуального хостинга:

  • PROSTO (4,5 ГБ диска, 1 сайт, 1 БД, 7 почтовых ящиков).
  • Оптимально (12 ГБ диска, 6 сайтов, неограниченно БД, 20 почтовых ящиков).
  • Профи (37,5 ГБ диска (из них – 3 ГБ SSD), 12 сайтов (из них – 1 на VIP-хостинге), неограниченно БД, 62 почтовых ящика).
  • Бизнес (75 ГБ диска (из них – 7 ГБ SSD), 20 сайтов (из них – 5 на VIP-хостинге), неограниченно БД, 125 почтовых ящиков).

На всех тарифах поддерживается ASP, ASP.NET, ASP.MVC, Rewrite и другие технологии.

Провайдер предлагает надежную систему резервного копирования, возможность установки необходимых компонентов и модулей, защиту от DDoS-атак, облачные хранилища и многое другое. Тестовый период – 10 дней.

Complete the Amazon ECS Service creation.

When the Amazon ECS Task gets placed, the ECS scheduler registers the Task as a target for the Load Balancer.

When the Task is healthy and passes the Load Balancer health checks, it is reflected in the healthy host count.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Access the DNS ‘A’ record of the Load Balancer in the browser. The ASP.NET core application should render successfully.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

In-Process Hosting

The earlier versions of ASP.NET Core required you to host the application in IIS using an Out-of-Process hosting model that proxies through IIS. Requests that hit IIS or IISExpress are forwarded to the ASP.NET Core web application running within Kestrel Web Server. However with the new In-Process hosting model this is not the case. Instead of forwarding requests to Kestrel, a new Web Server implementation (IISHttpServer) is hosted directly inside the IIS Application Pool, which then serves the request. This is some ways similar to how classic ASP.NET was used to operate.

This implementation accesses native IIS objects to build up the request data required for creating an HttpContext which is then passed on to the ASP.NET Core middleware pipeline. As with the Out-Of-Process hosting model the application pool that hosts the ASP.NET Core Module does not have to be running .NET since the module hooks into the native code IIS pipeline.

Apparently this has much high throughput and performance improvement when compared to the Out-Of-Process hosting model.

In the In-Process hosting model, the ASP.NET Core application runs in the same process as its IIS Worker Process. IIS worker process is the main thread or process which is how the IIS or the IISExpress works on a Windows based server or a machine. This is the default behavior if the web application is hosted in IIS or IISExpress. So in your visual studio if you chose to debug or develop your application via the IIS or IISExpress the application is hosted and run within this IIS worker process.

However do keep in mind that ASP.NET Core applications that target the .NET framework doesn’t support In-Process hosting yet.

ASP.NET Core —In-Process hosting model — Request Flow

When the request hits the Web server (assuming this is a Windows based server) the kernel mode HTTP.sys driver processes the request and routes the native request to IIS or IISExpress to the websites configured port. The ASP.NET core module which receives the native request and passes it to the IIS HTTP Server. The IIS HTTP Server is in-process server implementation which converts the request from native to managed. Thereafter the request is sent to the ASP.NET Core middleware pipeline.

Читайте также:  Как прописать А, АААА, MX, TXT, CNAME, SRV запись?

The pipeline handles the request and passes it on to the HTTPContext instance to the application logic. The response of the application is then passes back through the same path. i.e it passes the middleware pipeline and thereafter to the IIS HTTP Server, which then sends the request to the client.

If you happen to choose IISExpress or IIS to start ASP.NET core application in Visual Studio it runs the application as a In-Process hosting model. To experiment in which process the application is run you could edit the StartUp.cs as shown below and then choose IISExpress to run the application.

Getting the process which hosts the ASP.NET Core application.
In-Process hosting — Visual Studio

Containerize the ASP. NET Core application

The first step in this journey is to containerize the ASP.NET Core application.

If you are using Visual Studio 2017 or later with the latest updates in Windows, you can add container support to the solution. Open the context (right-click) menu for the existing project and add Docker support.

If you are developing in Linux or Mac OS, you must explicitly add a Dockerfile.

FROM microsoft/aspnetcore:2.0
WORKDIR /mymvcweb
COPY bin/Release/netcoreapp2.0/publish . 
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000
ENTRYPOINT ["dotnet", "mymvcweb.dll"]

This Dockerfile definition creates an application container based on the microsoft/aspnetcore:2.0 base image. It publishes the contents of the bin/Release folder to a specified work directory, starts the default Kestrel web server and listens on port 5000 to serve web traffic.

By default, ASP.NET core uses Kestrel as the web server. Kestrel is a lightweight HTTP server and is great for serving dynamic content from ASP.NET core. However, for capabilities such as serving static content, caching requests, compressing requests, and terminating SSL from the HTTP server, a dedicated reverse-proxy server like NGINX is required.

1 IIS In-Process Hosting

In-process hosting runs an ASP.NET Core app in the same process as its IIS worker process. Because ASP.NET Core apps run in a process separate from the IIS worker process, we need to install the ASP.NET Core Module on IIS. It’s a native IIS module that plugs into the IIS pipeline, allowing ASP.NET Core applications to work with IIS.

source: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/in-process-hosting?view=aspnetcore-5.0
  1. A request arrives from the web to the kernel-mode HTTP.sys driver.
  2. The driver routes the native request to IIS on the website’s configured port, usually 80 (HTTP) or 443 (HTTPS).
  3. The ASP.NET Core Module receives the native request and passes it to IIS HTTP Server. IIS HTTP Server is an in-process server implementation for IIS that converts the request from native to managed.
  4. The request is sent to the ASP.NET Core middleware pipeline.
  5. The middleware pipeline handles the request and passes it on as an HttpContext instance to the app’s logic.
  6. The app’s response is passed back to IIS through IIS HTTP Server.
  7. IIS sends the response to the client that initiated the request.

Kestrel

Kestrel is open-source event-driven, asynchronous I/O based server used to host ASP.NET Core applications on any platform.

The Kestrel web server is not meant to be an Internet facing web server, but rather an application server that handles very specific data processing tasks. Kestrel is optimized for application scenarios and it not meant for other things like static file serving or managing the server’s lifetime.

For this reason you generally do not want to run Kestrel directly in a Web application. This is true on Windows with IIS and also on Linux where you tend to use a Web server NGINX or Apache to handle non-application concerns.

  1. Kestrel cant do port sharing, like what IIS or Apache does.
  2. Manage life time of the application.
  3. Static file serving- Not that Kestrel can’t do it but its not optimized for it.
  4. Security
  5. Administration Features
  6. Managing SSL certificates
  7. Full logging and Http Request tracing facilities

Fozzy

Российский провайдер, работающий на рынке Европы и США с 2012 года. Среди клиентов – финансовые компании, платежные системы и пр. В число услуг провайдерв входит хостинг, аренда серверов (виртуальные и выделенные), регистрация доменов и многое другое.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Для хостинга с поддержкой ASP.NET у провайдера есть специальный тариф – Windows-хостинг. Он включает в себя 2 группы тарифных планов:

1) До 5 сайтов:

  • Быстрый сайт (7 ГБ диска, 1 сайт).
  • Быстрых сайтов (10 ГБ диска, 5 сайтов и БД).

2) От 5 сайтов:

  • 10 Быстрых сайтов (12 ГБ диска, 10 сайтов и БД).
  • 15 Быстрых сайтов (17 ГБ диска, 15 сайтов и БД).

В число преимуществ провайдера входит широкая географическая сеть серверов – можете разместиться в ЦОДах России, США, Сингапура, Нидерландов и пр. Для российских серверов трафик не ограничен. В дата-центрах используется надежное оборудование от DELL, быстрые SSD-диски. Класс надежности – Tier III-IV, аптайм – 99,995%. Также нет ограничений в почтовых ящиках, поддоменах, можете получить бесплатный SSL-сертификат и делать бэкапы каждый день. Тестовый период – 7 дней.

Serveroid. com

Российский провайдер, предлагающий услуги хостинга, аренды серверов, VDS/VPS и так далее. Можете арендовать сервер на Windows-хостинге, поддерживающем технологии ASP (Active Server Pages) и Dynamically Database Driven Pages.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Для серверов на Windows провайдер предлагает следующие тарифы:

  • Облачный 1024 (32 ГБ диска, 1 ядро, 1 ГБ RAM, 60 ГБ суточного трафика).
  • Облачный 2048 (64 ГБ диска, 2 ядра, 2 ГБ RAM, 90 ГБ суточного трафика).
  • Облачный 4096 (128 ГБ диска, 2 ядра, 4 ГБ RAM, 120 ГБ суточного трафика).
  • Облачный 8192 (256 ГБ диска, 4 ядра, 8 ГБ RAM, 150 ГБ суточного трафика).
  • Облачный 16384 (512 ГБ диска, 8 ядер, 16 ГБ RAM, 180 ГБ суточного трафика).

На всех тарифных планах данные хранятся на SSD-дисках. Средства списываются ежеминутно, предоплата за меся не применяется. В любой момент можете изменить текущий тариф. Если ни одна из готовых конфигураций не устраивает, то можете самостоятельно настроить свой сервер – выбрать размер оперативной памяти, накопителя, количество ядер процессора, процент его загрузки, а также размер входящего и исходящего трафика.

Create the Amazon ECS service

In the console, choose Task Definitions and select the task definition that you just created.

Review the task definition, and choose Actions, Create Service. For Launch type, choose FARGATE. Enter values for the rest of the fields:

  • Platform version: LATEST
  • Cluster: aspcorefargatecluster (or the cluster name you chose)
  • Service name: aspcorefargatesvc (or another name of your choice)
  • Number of tasks: 2
  • Minimum healthy percent: 50
  • Maximum percent: 200

On the Configure networking page, select the required VPC and subnets required for running the tasks.

Register the Application Load Balancer (ALB) that you created. The ECS scheduler has built-in intelligence, which makes it seamless to work with Application Load Balancer (ALB).

I’m defining minimum number of tasks as 2, desired tasks as 2 and maximum tasks as 3.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

RuVDS

Российский провайдер, работающий с 2015 года. Располагает собственным дата-центром в Королеве, имеет сертификацию ФСТЭК. В число услуг провайдера входит аренда виртуальных серверов, VPS/VDS. Среди клиентов – Сбербанк, ВЦИОМ, Gett и пр.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Провайдер не предлагает классический виртуальный хостинг на Windows. Вместо этого можете арендовать VPS, где в качестве ОС можете выбрать Windows Server (2003, 2012 R2, 2016 или 2019). Среди готовых тарифных планов подобную конфигурацию предлагают 2 группы тарифов:

  • Turbo 1 (40 ГБ диска, 2 x 2.2 ГГц CPU, 4 ГБ RAM).
  • Turbo 2 (80 ГБ диска, 2 x 2.2 ГГц CPU, 8 ГБ RAM).
  • Turbo 3 (160 ГБ диска, 4 x 2.2 ГГц CPU, 16 ГБ RAM).
  • Premium 1 (20 ГБ диска, 1 x 3.4 ГГц CPU, 2 ГБ RAM).
  • Premium 2 (40 ГБ диска, 2 x 3.4 ГГц CPU, 4 ГБ RAM).
  • Premium 3 (80 ГБ диска, 1 x 3.4 ГГц CPU, 8 ГБ RAM).

Если не устраивают готовые тарифы, то можете воспользоваться конфигуратором и настроить сервер для собственных нужд. Например, можно выбрать тип процессора и число ядер, объем оперативной памяти, размер и тип накопителя, а также подключить дополнительные услуги. Провайдер предлагает защиту от DDoS-атак, при которой оплачиваете только нужный трафик – достаточно выбрать полосу очищенного входящего трафика в пределах 0,5-20 Мбит/с. Также RuVDS располагает несколькими ЦОДами, где можете арендовать мощности (Россия, Германия, Великобритания и Нидерланды). Класс надежности – Tier III, аптайм составляет 99,98%. Протестировать любую конфигурацию сервера на Windows можно в течение 3 дней.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Production

For ASP.NET Core production ready deployment, there are many hosting scenarios to choose from!

3 IIS Express

IIS Express is a lightweight, self-contained version of IIS optimized for developers. We will explain the difference between in-process and out-of-process in the next IIS section. What applied to IIS, applies also to IIS Express.

An important point to keep in mind is that launchSettings.json file is only used within the local development machine. Production settings should be stored in the appsettings.json file.

About SmarterASP. NET

Before choosing the apt Hosting provider for your development/deployment needs, It’s quite important to learn about their services, right? Let’s see a few things about SmarterASP.NET. These guys offer World-Class ASP.NET Core Hosting at very affordable rates. To add to that, they also provide 60 Days FREE Trial to test out their services. That’s a good sign for any hosting provider, yeah?

smarteraspnet core hosting Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

SmarterASP.NET Datacenters are available in both US and Europe. However, it would be better if they had more data centers, at least a couple of them in Asia. But the performance is still great for scaled-up systems as well.

Features of SmarterASP.NET

Here are the various Features of SmarterASP.NET

  1. Unlimited Storage *
  2. Unlimited Bandwidth *
  3. Complete support for ASP.NET 4.8 / 4.7 / 4.6 / 4.5.x / 3.5 and 2.0
  4. Complete support for ASP.NET Core 1.x / 2.x / 3.x – Even the big names in the hosting world do not provide support for ASP.NET Core 3.1 yet.
  5. MSSQL Database – SQLServer 2019 / 2017 / 2016 / 2014
  6. MVC 6 / 5 / 4 / 3 / 2 / 1
  7. SSD Storage and Database
  8. 1 Click Installers for several Popular ASP.NET Applications like NopCommerce, Blog.NET, and so on.
  9. FREE Temporary URL if you don’t have a domain yet.

* Depends on the plan you subscribe to.

Pricing Plans

  1. Shared Hosting
  2. Semi-Dedicated Hosting
  3. VPS
  4. Cloud Server

Shared Hosting – ASP.NET Plans

  1. 60 Days Trial – Although it is a FREE tier, it offers several cool features like 1GB Storage, 1 Website, 200 Parallel Connections / Requests, and 10GB Bandwidth. It’s the best option if you want to get a feel of SmarterASP.NET Service before going for a paid plan.
  2. .NET Basic – Now, for just 2.95$/ month, you get unlimited storage and Bandwidth for a single website / IIS Entry.
  3. .NET Advance (Recommended) – This is quite an ideal plan for everyone. You get 6 IIS Website Entries with Unlimited Storage, Concurrent Connections, and Bandwidth. All of this awesomeness for just 4.95$ a month. Get this deal now!
  4. .NET Premium – Need more than 6 Websites? This is the plan that may interest you then. At 7.95$ / month, you get everything unlimited.
smarteraspnet core shared hosting Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

.NET Advance Plan is what you will need if you are getting started with Hosting ASP.NET Core. With just 4.95$/month, you get to host 6 ASP.NET Core Applications with everything from Bandwidth to Storage UNLIMITED. I would recommend you to try it with the 60 Days FREE Trial and then convert to a paid plan. We will see how to host a ASP.NET Core Application later in the article, step-by-step. Get you FREE Trial here.

Semi Dedicated Server

For those who want an additional powers to the Hosting Server. Starts from about 29.95$ a month. Here are the Features offered at this tier.

  1. Everything Included in the Shared Hosting Packages
  2. Unlimited Email Boxes – SMTP and more
  3. Meant for really high traffic ASP.NET Core Applications that require powerful CPUs as well.
smarteraspnet core semi dedicated Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

The Awesome 60 Days FREE Trial!

This is what interested me to check out SmarterASP.NET. Who doesn’t like the words FREE and TRIALs? 😛 The best part is you don’t even have to provide your Credit Card Details to enjoy the Trial. What more can you ask for?

Let’s get the 60 Days FREE Trial.

Here is how to Host ASP.NET Core in SmarterASP.NET –

Step 2 – Click on Get Started.

smarteraspnet core started Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Step 3 – Make sure that you have selected the 60 Days FREE Trial.

smarteraspnet core free Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!
smarteraspnet core member Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Step 5 – Once confirmed, Go back to SmarterASP.NET and login with your credentials. You will be presented with a similar View where you have to Click on Try Now. This means that you are already eligible for the 60 Days FREE Trial.

smarteraspnet core start Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Step 6 – Enter in the root folder name. It can be anything. After that click on Next.

smarteraspnet core info Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Step 7 – You will be getting some important information like FTP details and account details here. Make sure to note it down as well. Finally Click Submit. This would take about 2-5 minutes. In the background you are being allocated some space on their servers. It took about 3 odd minutes for me.

smarteraspnet core ftp Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!
smarteraspnet core finalizing Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Step 8 – With your Hosting Account Finalized, go back to your SmarterASP.NET Dashboard and click on the Control Panel.

smarteraspnet core manage Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Here is how your Control Panel looks like. Quite a handful of details and settings right? Don’t worry, you dont have to do anything here as of now.

smarteraspnet core dash Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

As we already have our Hosting account ready, the only task left is to actually upload an ASP.NET Core 3.1 Application to their storage. There are several ways to do it. We will do it in an effecient way where we can directly publish the ASP.NET Core application via the Visual Studio 2019 IDE to SmarterASP.NET Storage.

We will be using the Web-Deploy Mode is Visual Studio to publish our application to the cloud.

Click on the icon as shown below. This will give you some critical information you need while deploying later on. Note/Copy these down.

webdeploy info Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

For this demonstration, I will quickly publish the COVID-19 Dashboard Project that I had created earlier. This is a simple ASP.NET Core 3.1 Application / Razor that consumes an external API for Data Visualization of COVID Stats.

Open up the Project in Visual Studio IDE and click on Build -> Publish.

smarteraspnet core publish menu Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

As mentioned earlier, we will be using WebDeploy. Click on IIS, FTP, etc and hit Create Profile.

smarteraspnet core create profile Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

In the new dialog, set the publish method as WebDeploy. Fill in the form with the details we copied earlier. The password will be the same as your SmarterASP.NET Hosting password.

Once you have entered in all the details, click on Validate Connection to verify that you are able to connect to the remote server. After you are validated, click next.

Make Sure to copy/paste the details without any whitespaces. I had this issue where I pasted the server address with extra space and the connection was never established. So, remember to remove all the whitespaces.

smarteraspnet core profile publish Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!
smarteraspnet core publish settings Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

With that done, Click on Publish and wait for Visual Studio to complete deploying your awesome application to the web.

smarteraspnet core final Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!
published Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Here is my COVID-Dashboard deloyed – http://iammukeshm-001-site1.atempurl.com/

PS – The above link may not be live if you are reading this article much later.

covid dashboard Hosting ASP.NET Core with SmarterASP.NET - FREE 60 Days Trial!

Got to say, even with a temporary URL, No SSL, FREE Plan, the Application loads quite fast compared to my Local IIS. I will continue testing SmarterASP.NET (Paid Plan) and keep on updating this article based on my findings. That’s a wrap for now.

If you are thinking about moving to the Paid Plan, there are a couple of Coupon Codes available that can save you 50% more on your bill (Lifetime Discount). Leave me a message for a valid coupon code. Cheers!

Configure the reverse-proxy server

NGINX can act as both the HTTP and reverse-proxy server. NGINX is highly adopted because of its asynchronous, event-driven architecture that allows it to serve thousands of concurrent requests with a low-memory footprint.

In this solution, deploy a NGINX (reverse-proxy server) container in front of the application (ASP.NET core) container, defined in the AWS Fargate Task.

worker_processes 4;
 
events { worker_connections 1024; }
 
http {
    sendfile on;
 
    upstream app_servers {
        server 127.0.0.1:5000;
    }
 
    server {
        listen 80;
 
        location / {
            proxy_pass         http://app_servers;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }
}

The NGINX container is set to listen on port 80 and it is configured to forward the request to the application container listening on port 5000. The attribute upstream app_server in the nginx.conf file must be set with a value of mymvcweb:5000 in the local development environment.

REG

Один из самых известных провайдеров России. Оказывает услуги хостинга, VPS, аренды выделенных серверов, колокации с 2006 года. Но среди большинства пользователей известен, в первую очередь, как крупный регистратор доменов. Сегодня провайдером обслуживается свыше 3,3 млн. доменных имен, а за время работы клиентами компании стали 2,2 млн. пользователей. Среди них – Альфа Банк, Совкомбанк, Авито и другие.

Продвижение в Stories у блогеров: надёжно и эффективно

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

InstaJet.in — сервис интеграций с блогерами в Stories. Только проверенные блогеры, готовые к сотрудничеству!

  • Выбирайте лучших: в открытом каталоге можно подобрать блогеров самостоятельно или с помощью менеджера.
  • Контролируйте процесс: интеграции размещаются точно в срок и в том виде, в котором их согласует заказчик.
  • Анализируйте результаты: сервис предоставляет готовые отчёты по кампаниям в удобных таблицах.

Платформа работает с юридическими лицами и предоставляет все необходимые документы.

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

Для сайтов использующих ASP, ASP.NET Core или базы данных MSSQL, провайдер предлагает отдельную линейку тарифов – Windows-хостинг:

  • Win-Lite (7 ГБ диска, 15 сайтов) – единственный тариф для персональных страниц, на котором нет поддержки ASP.NET.
  • Win-A (7 ГБ, 1 сайт) – для блогов.
  • Win-B (25 ГБ, 1 сайт) – для сайтов компаний.
  • Win-0 (12 ГБ диска, 7 сайтов) – для форумов.
  • Win-1 (17 ГБ диска, 15 сайтов) – для интернет-магазинов.
  • Win-3 (27 ГБ диска, 30 сайтов) – для e-commerce проектов.

На всех тарифах можете получить до 4 доменов в зоне .RU/.РФ в подарок. Также провайдер предлагает бесплатные SSL-сертификаты, неограниченное количество почтовых ящиков и баз данных, а также панель управления Plesk. Windows-хостинг поддерживает все популярные скрипты – например, DotNetNuke, Umbraco, Kooboo, AtomSite и пр.

Также провайдер предлагает автоматическую защиту от DDoS-атак, бесплатный перенос сайтов и тестовый период в 14 дней.

Containerize the NGINX reverse-proxy server

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

Other Hosting Scenarios

All mentioned scenarios are targeting Windows servers on-premise deployment. However, ASP.NET Core Applications can be deployed in other ways!

Push container images to Amazon ECR

Next, push the container images from the local environment to Amazon Elastic Container Registry (ECR) so that the container images are available in Amazon ECR before the creation of AWS Fargate cluster.

Before you deploy this application to ECS, the upstream app_server attribute in the nginx.conf file must be set with the value of 127.0.0.1:5000. This enables the communication with the upstream application container listening on port 5000.

aws ecr get-login --no-include-email --region us-east-1

It should return you a Docker login command with a security token. Copy the command and tokens and run it.

docker tag aspnetcorefargate_mymvcweb:latest <yourawsaccountnumber>.dkr.ecr.us-east-1.amazonaws.com/mymvcweb:latest

docker push <yourawsaccountnumber>.dkr.ecr.us-east-1.amazonaws.com/mywebmvc:latest

The above steps are repeated for the NGINX container as well. Now you have the container images available in ECR.

Development & Testing Environment

Kestrel and IIS Express are mostly used as standalone server in local development or testing environment. Web applications can be only in-process hosted in Kestrel. However, IIS Express supports both in-process and out-of-process hosting.

Create an AWS Fargate Task definition

The AWS Fargate Task definition is an important resource, acts as a blueprint for the AWS Fargate task. The Task definition defines parameters such as:

  • Container image URL
  • CPU
  • Memory
  • IAM execution role
  • Host port
  • Container port
  • Log configurations
  • Container networking mode
  • Task type
  • Mount point
  • Volume

A Fargate Task is the running instance of Task definition. Each Task represents a microservice. Tasks can be managed and independently scaled using AWS Fargate Service, which is explained in the upcoming sections.

{
  "executionRoleArn": "arn:aws:iam::<awsaccount>:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/aspnetcorefargatetask",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 80,
          "protocol": "tcp",
          "containerPort": 80
        }
      ],
      "command": null,
      "linuxParameters": null,
      "cpu": 0,
      "environment": [],
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [],
      "workingDirectory": null,
      "dockerSecurityOptions": null,
      "memory": null,
      "memoryReservation": 1024,
      "volumesFrom": [],
      "image": "<awsaccount>.dkr.ecr.us-east-1.amazonaws.com/reverseproxy: latest",
      "disableNetworking": null,
      "healthCheck": null,
      "essential": true,
      "links": null,
      "hostname": null,
      "extraHosts": null,
      "user": null,
      "readonlyRootFilesystem": null,
      "dockerLabels": null,
      "privileged": null,
      "name": "reverseproxy"
    },
    {
      "dnsSearchDomains": null,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/aspnetcorefargatetask",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 5000,
          "protocol": "tcp",
          "containerPort": 5000
        }
      ],
      "command": null,
      "linuxParameters": null,
      "cpu": 0,
      "environment": [],
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [],
      "workingDirectory": null,
      "dockerSecurityOptions": null,
      "memory": null,
      "memoryReservation": 1024,
      "volumesFrom": [],
      "image": "<awsaccount>.dkr.ecr.us-east-1.amazonaws.com/mymvcweb:latest",
      "disableNetworking": null,
      "healthCheck": null,
      "essential": true,
      "links": null,
      "hostname": null,
      "extraHosts": null,
      "user": null,
      "readonlyRootFilesystem": null,
      "dockerLabels": null,
      "privileged": null,
      "name": "mymvcweb"
    }
  ],
  "placementConstraints": [],
  "memory": "2048",
  "taskRoleArn": "arn:aws:iam::<awsaccount>:role/aspnetecstaskroles",
  "compatibilities": [
    "EC2",
    "FARGATE"
  ],
  "taskDefinitionArn": "arn:aws:ecs:us-east-1:<awsaccount>:task-definition/aspnetcorefargatetask:1",
  "family": "aspnetcorefargatetask",
  "requiresAttributes": [
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-ecr-pull"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.task-eni"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.ecr-auth"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.task-iam-role"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "1024",
  "revision": 1,
  "status": "ACTIVE",
  "volumes": []
}

You also specify the subnets for placing tasks across ECS instances. This means that the Subnet Security Group is also applicable to the ENI for the respective Tasks. This enables communication between two AWS Fargate Tasks, or other resources within the VPC. Because of the awsvpc network mode, calls from AWS Fargate Tasks do not go through the eth0 Docker bridge.

Reference architecture

A good reference architecture for AWS Fargate application deployment should cover the VPC, Subnets, Load Balancer, Internet Gateway, Elastic Network Interface (ENI), AWS Fargate Task, Network ACLs, and Security Groups. The architectural choices for VPC Networking, Load Balancing, and Container Networking are also important.

There are a couple of networking approaches for deploying containers in Amazon ECS:

  • Deploy containers in the public VPC Subnet with direct Internet access
  • Deploy containers in the private VPC Subnet without direct Internet access

Because the ASP.NET Core application is going to serve traffic from the Internet, we will deploy containers in the Public VPC Subnet with direct Internet access.

  • A public Load Balancer that accepts traffic from the Internet and route it to container through the AWS Fargate Task’s Elastic Network Interface (ENI).
  • A private, Internal Load Balancer that only accepts traffic from other containers in the cluster

Because the ASP.NET Core application container lives in the web tier, go with a public Load Balancer. The public Load Balancer accepts traffic from the Internet and routes it to the container through the AWS Fargate Task’s Elastic Network Interface (ENI).

Based on these considerations, the reference architecture for deploying to AWS Fargate should look like this diagram:

Развертывание Core MVC приложения на Ubuntu 20.04 на VPS. Установка SSL

This solution deploys containers in a public Subnet (inside a VPC). The AWS Fargate Task and the two containers are hosted with direct access to the internet. They are also accessible to clients, using the public Load Balancer.

Conclusion

In this post, we took an existing ASP.NET core application, containerized it, and hosted it in Amazon ECS as a microservice using the AWS Fargate compute engine. AWS Fargate gives you a way to run containers directly without managing any EC2 instances and giving you full control over how the task is defined, including task networking and resources.

If you have questions or suggestions, please comment below.

Читайте также:  Оптимизируйте управление веб-сайтом с помощью исключительного хостинга Joomla CMS
Оцените статью
Хостинги