Asp net сервер linux

Часть 2.1. Создание и настройка ASP.NET Core в Linux

В этой статье описывается, как создавать и настраивать ASP.NET Core в Linux.

Предварительные требования

Для выполнения упражнений в этой части необходимо установить пакет SDK для .NET Core. Чтобы установить пакет SDK, при необходимости ознакомьтесь с инструкциями по установке, приведенными в части 1.

Цель этой части

Вы узнаете, как создать веб-приложение ASP.NET Core с помощью интерфейса командной строки .NET Core (CLI) в Linux и как опубликовать приложение в каталоге /var. Изучив эти понятия, вы научитесь выполнять некоторые основные задачи, такие как работа с файлами и папками и выполнение команд в качестве привилегированного пользователя. Вы также узнаете, как редактировать файлы с помощью текстового редактора vi в Linux.

Интерфейс командной строки .NET

Согласно этой документации по интерфейсу командной строки .NET, .NET CLI — это кроссплатформенная цепочка инструментов для разработки, сборки, запуска и публикации приложений .NET. Интерфейс командной строки .NET устанавливается вместе с пакетом SDK для .NET.

Эти учебные курсы часто dotnet используют эту команду. Эта команда обладает широкими возможностями и имеет две основные функции:

  • Он предоставляет команды для работы с проектами .NET. Например, dotnet build создает проект. Каждая команда определяет собственные параметры и аргументы. Все команды поддерживают параметр для —help печати кратких объяснений о том, как использовать эту команду.
  • Он запускает приложения .NET.

Вы будете использовать команду dotnet new для создания первого проекта ASP.NET Core в Linux. Эта команда получает тип проекта в качестве аргумента. Типы проектов описаны в этом документе. Вы также можете отобразить список типов, выполнив команду dotnet new без параметра. Типы веб-проектов выделены желтым цветом на следующем снимке экрана.

Снимок экрана: команда dotnet new.

Создание веб-приложения .NET Core с помощью пакета SDK

Вы будете использовать .NET CLI для создания первого веб-приложения с помощью следующей команды:

Эти правила применяются при использовании: dotnet new

  • Команда создает файлы проекта в выходном каталоге. Если опустить сегмент -o , проект будет создан в текущем каталоге. Вы всегда можете использовать коммутатор -o .
  • Если папка не существует, команда создает ее.
  • Если опустить сегмент -n , имя проекта будет совпадать с именем каталога.

Вы можете найти творческие имена для каталога и самого проекта. Однако помните, что в Linux учитывается регистр. В этом упражнении используйте более умеренное AspNetCoreDemo имя проекта и создайте его в firstwebapp каталоге.

Читайте также:  Can parallels run linux

Чтобы создать проект, выполните следующую команду:

dotnet new webapp -n AspNetCoreDemo -o firstwebapp 

Просмотрите выходные данные, чтобы просмотреть имена каталогов и проектов. На следующем снимке экрана также приведено содержимое выходного каталога. Если вы уже создали веб-приложение ASP.NET Core в Windows, вам следует ознакомиться со структурой каталогов.

Снимок экрана: команда dotnet new для первого веб-приложения.

Вы создали свое первое приложение. Следующая задача — запустить его. Перейдите в папку проекта и выполните команду dotnet run .

Снимок экрана команды dotnet run.

На этом снимке экрана показаны следующие элементы:

  • Веб-приложение прослушивает порт 5001 для HTTPS-запросов и прослушивает порт 5000 для HTTP-запросов.
  • Корневой каталог содержимого находится в домашнем каталоге.

Рекомендуется не запускать приложение в домашнем каталоге. Позже вы опубликуете его в другом каталоге, но перед публикацией его следует протестировать. Чтобы остановить приложение , нажмите клавиши CTRL+C . Но пока продолжайте работу и откройте новый сеанс терминала, используя предпочтительный метод подключения к виртуальной машине Linux. В этом примере вы снова будете использовать PowerShell.

Тестирование веб-сайта из другого терминала

В новом сеансе терминала убедитесь, что приложение прослушивает порты 5000 и 5001. Linux имеет ту же команду netstat , что и Windows. Запустите netstat вместе с коммутатором -tlp . Вы можете ознакомиться с коммутаторами netstat в этой статье или просмотреть файл справки, выполнив команду man netstat info netstat или .

Ниже приведены выходные данные команды netstat -tlp из второго сеанса терминала. В нем показано, что процесс AspNetCoreDemo выполняется с помощью PID 781 и прослушивает порты 5000 и 5001 для IPv4 и IPv6.

Снимок экрана: команда info netstat.

Для тестирования веб-сайта можно использовать curl и wget . Обе команды делают HTTP-вызов на стороне целевого объекта, но ведут себя по-разному:

  • Curl — это просто средство браузера командной строки. Он выполняет HTTP-запрос к заданному целевому объекту и отображает только обычные выходные данные HTTP-ответа. Например, здесь показана разметка источника HTML для веб-приложения.
  • Wget — это загрузщик HTTP. Он выполняет HTTP-запрос и скачивает заданный ресурс. Например, wget http://server/file.zip загружаетfile.zip и http://server сохраняет его в текущем каталоге.

Эта wget команда также отображает дополнительные сведения, такие как перенаправление и любые сообщения об ошибках, которые вы можете получить. Поэтому его можно использовать как примитивную версию средства трассировки HTTP всякий раз, когда это необходимо.

Дополнительные сведения о различиях между curl ними см wget . на веб-странице StackExchange.

В этом обучающем wget ряду вы ранее использовали для скачивания deb-файла диспетчера пакетов с серверов Майкрософт перед установкой .NET Core.

Читайте также:  Эмулятор локальной сети linux

При выполнении curl http://localhost ничего не происходит. Скорее всего, это означает, что HTTP-ответ отсутствует. Затем можно запустить, wget http://localhost чтобы проверить, отображаются ли дополнительные сведения при попытке доступа к сайту.

Снимок экрана: команда curl localhost.

Это то, что происходит сейчас:

  • Вы выполните HTTP-запрос и http://localhost:5000 успешно подключитесь. Это означает, что приложение принимает подключения через порт 5000.
  • Вы получите ответ временного перенаправления HTTP 307 от приложения, который указывает на безопасное расположение HTTPS: https://locahost:5001
  • Wget достаточно управляем, чтобы следовать этому перенаправлению и выполнять новый запрос. https://localhost:5001
  • Вы снова успешно подключитесь. Однако не wget доверяет SSL-сертификату. Поэтому подключение завершается сбоем.

Команда wget рекомендует обойти эту проблему —no-check-certificate , используя переключатель для небезопасного подключения. Однако этот подход включает параметры SSL-сертификата, которые не являются областью действия для этого обучения. Вместо этого можно настроить ASP.NET Core, чтобы оно не перенаправляет HTTP-запросы на HTTPS. Если вы знакомы с ASP.NET Core приложения (или только конфигурацией), возможно, вы уже знаете, как это сделать: измените файл Startup.cs, чтобы удалить конфигурацию перенаправления.

Редактирование файлов с помощью vi

Вы можете использовать текстовый редактор vi для дистрибутивов Linux, чтобы редактировать все типы текстовых файлов. Вы будете использовать его в этом обучении для перенастройки приложения.

Перед изменением приложения необходимо закрыть его. Сначала закройте открытый сеанс терминала. Затем нажмите клавиши CTRL+C , чтобы завершить работу приложения.

Чтобы изменить файл Startup.cs , выполните следующую команду:

Эта команда запускает редактор vi, а затем загружает файл. Ярлык ~ (тильда) относится к домашнему каталогу, в котором вы создали проект. То есть команда указывает на /home//firstwebapp/Startup.cs.

Нажмите клавишу I (Insert), чтобы включить режим редактирования. Теперь в нижней части командной строки появится строка INSERT . Используйте клавиши со стрелками для перемещения по файлу. Закомментируйте app.UseHsTs() строки app.UseHttpsRedirection() ; и ; путем // их добавления в начале, как показано на следующем снимке экрана.

Снимок экрана: комментарий в коде.

Нажмите клавишу ESC , чтобы выйти из режима редактирования, введите :wq!, а затем нажмите клавишу ВВОД. Обратите внимание, что символ двоеточия ( : ) означает, что вы вводите команду, означает запись, w q означает ! выход и принудительное написание.

Снимок экрана: текст wq в коде.

После нажатия клавиши ВВОД изменения должны быть сохранены. Вы можете проверить изменения, выполнив команду cat ~/firstwebapp/Startup.cs . Эта команда отображает содержимое файла Startup.cs .

Перезапустите приложение. Для этого измените текущий каталог ~/firstwebapp на каталог и запустите dotnet еще раз. Затем откройте другой сеанс терминала на сервере и снова выполните curl http://localhost:5000 команду. На этот раз команда должна вернуть HTML-содержимое домашней страницы.

Читайте также:  Linux service restart timeout

Снимок экрана: команда curl localhost в 5000 портов.

Теперь вы успешно выполнили первое ASP.NET Core Веб-приложение в Linux.

Развертывание приложения в каталоге /var

Основная цель этого упражнения — разместить веб-приложение за обратным прокси-сервером, чтобы подключаемые клиенты могли получить доступ к приложению с другого компьютера, используя только имя узла без номера порта. Это то, что вы ожидаете в реальных сценариях. Позже вы будете работать с Nginx для выполнения этой задачи. Но перед тем как это сделать, опубликуйте приложение в каталоге /var . Это связано с тем, что рекомендуется не запускать приложение в домашнем каталоге пользователя.

Помните, что каталог /var используется для хранения содержимого и файлов журналов различными приложениями, такими как Apache и Nginx. Вы выполните эту методику, опубликуя только что созданное веб-приложение в /var.

Перейдите в папку проекта, а затем dotnet publish выполните команду, чтобы создать папку публикации. Скопируйте эту папку в каталог /var.

Снимок экрана команды dotnet publish.

На снимке экрана dotnet publish показано, что команда создала файлы публикации в папке ~/firstwebapp/bin/Debug/net5.0/publish/ . Затем для копирования всех файлов в папку /var/firstwebapp/ использовалась следующую команду:

sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/ 

Обратите внимание на использование перед sudo командой копирования. Это используется, так как у обычных пользователей нет разрешения на запись в каталог /var . Поэтому необходимо выполнить команду в качестве суперпользователя.

Чтобы запустить приложение из опубликованной папки, выполните следующую команду:

dotnet /var/firstwebapp/AspNetCoreDemo.dll 

При необходимости эти тесты можно выполнить с помощью тех же команд curl wget . Это связано с тем, что приложение по-прежнему будет прослушивать порт 5000 для HTTP-запросов.

Время существования процесса и дальнейшие действия

Если приложению требуется постоянное время работы, запуск приложения .NET Core в интерактивном сеансе пользователя не рекомендуется по следующим причинам:

  • Если пользователи завершают сеансы, например закрыв PuTTY или клиент SSH PowerShell или выйдите из сеанса, приложение завершит работу.
  • Если по какой-либо причине процесс завершается (например, происходит сбой из-за необработанного исключения), он не запускается автоматически и должен быть перезапущен вручную.
  • Если сервер перезапущен, приложение не запускается автоматически.

Дальнейшие действия

Убедитесь, что веб-приложение запускается автоматически. Установите и настройте Nginx в качестве обратного прокси-сервера для маршрутизации HTTP-запросов, которые выполняются для порта 80, в приложение dotnet (чтобы клиенты могли подключаться без необходимости указать номер порта).

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Обратная связь

Были ли сведения на этой странице полезными?

Источник

Оцените статью
Adblock
detector