Как запустить net core приложение на линукс
Перейти к содержимому

Как запустить net core приложение на линукс

  • автор:

Часть 1.3. Установка .NET Core в Linux

В этой части вы узнаете, как установить .NET Core в Linux.

В этом разделе предполагается, что вы используете Ubuntu и используете средство командной строки APT для установки приложений.

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

В этой части предполагается, что вам известны следующие процессы:

  • Как выполнять команды в качестве суперпользователя (root).
  • Установка приложений с помощью диспетчеров пакетов.

Если вы по крайней мере не знакомы с этими процессами, прежде чем продолжить, ознакомьтесь с предыдущими частями.

Установка .NET Core

Справочные сведения об этой процедуре см. в разделе «Подготовка системы Linux для .NET Core».

Поддерживаемые версии .NET Core в разных дистрибутивах Linux см. в разделе «Установка .NET в Linux».

В этой статье вы можете выбрать версию Linux, чтобы получить инструкции по дистрибутиву. Так как мы используем Ubuntu 18.04, мы будем выполнять инструкции из раздела «18.04» пакета SDK для .NET или среды выполнения .NET на Ubuntu.

Начните с выполнения следующих команд:

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb 

Первая команда — это wget команда. Согласно странице справки, это wget неинтерактивный сетевой загрузщик. Он скачивает файлы с HTTP-серверов в каталоге. Он может выполняться в фоновом режиме, даже если пользователь не выполнил вход. Эта wget команда скачивает файл Packages-microsoft-prod.deb packages.microsoft.com с серверов в текущем каталоге.

При выполнении ls команды wget мы должны увидеть, что пакет скачан в текущем каталоге.

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

Во второй команде — dpkg диспетчер пакетов для Debian и Ubuntu. Эта команда добавляет ключ подписи пакета Майкрософт в список доверенных ключей, а затем добавляет репозиторий пакетов.

Снимок экрана: команда sudo dpkg.

Так как мы скачали и добавили новый репозиторий пакетов, диспетчер пакетов должен знать об этом. Поэтому необходимо обновить диспетчер пакетов с помощью команды sudo apt update .

Снимок экрана: команда sudo apt update.

Теперь диспетчер пакетов знает о репозитории Майкрософт, и мы можем продолжить установку.

Версии .NET Core

На момент написания этой статьи последняя версия .NET Core — 5.0. Рекомендуется установить последнюю версию. Однако также следует установить пакет SDK для .NET Core 3.1. Это необходимо, так как в лабораториях по устранению неполадок, приведенных в этой серии статей, предполагается, что вы используете Нестрогое приложение ASP.NET Core, которое мы используем для устранения неполадок ASP.NET Core приложений. Текущая версия Висяка — .NET Core 3.1.

Различные версии этих приложений могут успешно выполняться параллельно на одном компьютере.

Определение правильного имени пакета

В разделе «Установка других версий » пакета SDK для .NET или среды выполнения .NET в Ubuntu пакеты .NET Core именуются в формате — , и имеют следующие условия:

  • Продукт — dotnet илиaspnetcore. Обратите внимание , что aspnetcore также устанавливается при установке .NET Core.
  • Тип — пакет SDK или среда выполнения.
  • На момент написания этой статьи поддерживаемые версии .NET Core : 5.0, 3.1, 3.0 и 2.1.

Например, если вы хотите установить версию 5.0 ASP.NET Core, то продуктом будет aspnetcore-runtime-5.0.

Так как для этой серии статей необходимо установить пакет SDK для .NET Core 3.1, имя пакета будет dotnet-sdk-3.1.

Вы должны знать, как устанавливать пакеты с помощью APT. В противном случае ознакомьтесь с предыдущими частями. Чтобы установить пакет SDK для .NET Core 3.1, выполните команду sudo apt install dotnet-sdk-3.1 .

Снимок экрана: команда sudo apt install.

Введите y и нажмите клавишу ВВОД. Диспетчер пакетов скачивает и устанавливает .NET Core и ASP.NET Core среды выполнения и пакеты SDK.

Снимок экрана: диспетчер пакетов скачивает и устанавливает .NET Core и ASP.NET Core среды выполнения и пакеты SDK.

Вы также можете установить пакет SDK для .NET 5.0, выполнив команду sudo apt install dotnet-sdk-5.0 .

Теперь проверьте установку сред выполнения и пакетов SDK, выполнив команду dotnet —info . На следующем снимке экрана показано, что среды выполнения и пакеты SDK для .NET Core 3.1 и 5.0 устанавливаются параллельно.

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

Как .NET Core, так и ASP.NET Core среды выполнения устанавливаются вместе с пакетом SDK для .NET Core. Если проверить папку пакета SDK ll /usr/share/dotnet/sdk , вы также увидите обе версии.

Снимок экрана: команда ll sdk.

Теперь установлены пакеты SDK и среды выполнения .NET Core. В следующей части мы создадим ASP.NET Core с помощью средств .NET CLI.

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

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

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

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

Запуск консольного приложения ASP.net Core на Linux

Доброго времени суток подскажите как запустить консольное приложение net.Core на VPS c OS Linux. Я создал консольное приложение net.Core, скопировал все файлы на VPS подключаюсь через клиент по SSH к VPS (выходит командная строка) там ввожу команду: dotnet ConsoleApp1.dll Все запускается, Ура! Но как только я закрываю клиент, то и приложение не работает. а мне надо чтоб оно работало там 24/7, вот собственно вопрос как правильно запустить приложение на VPS?

Отслеживать
задан 21 сен 2020 в 23:09
67 5 5 бронзовых знаков
То есть вам нужно запустить приложение как демон.
21 сен 2020 в 23:38
screen. И еще, Linux != OS. Linux is Kernel.
22 сен 2020 в 6:12
23 сен 2020 в 10:20

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

$ sudo nano /etc/systemd/system/.service 

Вписать туда примерно такую конфигурацию

[Unit] Description=My application service [Service] WorkingDirectory=/var/www/ ExecStart=/usr/bin/dotnet /var/www//.dll Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier= User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target 
$ sudo service start 

Проверить состояние сервиса

$ sudo systemctl | grep

Часть 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 -n -o

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

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

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

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

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.

При выполнении 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 ~/firstwebapp/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-содержимое домашней страницы.

Снимок экрана: команда 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 (чтобы клиенты могли подключаться без необходимости указать номер порта).

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

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

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

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

.NET Core

.NET Core — это универсальная платформа разработки, которая поддерживается корпорацией Майкрософт и сообществом .NET на сайте GitHub. Она является кроссплатформенной: поддерживает Windows, Mac OS и Linux. Имеет открытый исходный код: распространяется по лицензиям MIT и Apache 2.

Начиная с .NET 5, версии называются .NET (без «Core» в названии), что символизирует объединение .NET Core, Mono и .NET Framework. Также в этой версии появилась поддержка архитектур Arm — Arm32 (armh, armv7) и Arm64 (aarch64, armv8).

Платформа .NET Core является кроссплатформенным аналогом .NET Framework на уровне библиотек базовых классов (BCL) .NET Framework. Она реализует спецификацию библиотеки .NET Standard.

Важным отличием от проекта Mono, который направлен на создание свободной среды, совместимой с .NET Framework, является то, что .NET Core не имеет реализации Windows Forms и не реализует API .NET Framework с использованием тех же имён сборок, то есть не позволяет запускать приложения, собранные для .NET Framework.

Для ALT p9, p10 и Sisyphus собран .NET 6, соответствующий спецификации .NET Standard 2.1.

В составе SDK поставляется компилятор C# с открытым исходным кодом из состава .NET Compiler Platform — Roslyn.

В качестве среды разработки удобно использовать Visual Studio Code (см. подробнее по ссылке), для которого имеется расширение, позволяющее отлаживать приложения, написанные на C# под .NET Core на Linux.

  • 1 Установка
  • 2 Создание приложения «Hello, world!»
    • 2.1 Вывод команд

    Установка

    Для установки среды выполнения (CoreCLR) с необходимыми библиотеками установите мета-пакет dotnet:

    apt-get install dotnet

    Для разработки приложений установите SDK для .NET Core (пакет dotnet-sdk):

    apt-get install dotnet-sdk

    Создание приложения «Hello, world!»

    (Необходимо иметь в домашнем каталоге >2 ГБ свободного места)

    dotnet new console -o hwapp cd hwapp dotnet restore dotnet build dotnet run

    Вывод команд

    $ dotnet new console -o hwapp Welcome to .NET Core! --------------------- Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs. Telemetry -------------- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry. Configuring. ------------------- A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once. Decompressing 100% 7675 ms Expanding 100% 14205 ms Getting ready. The template "Console Application" was created successfully. Processing post-creation actions. Running 'dotnet restore' on hwapp/hwapp.csproj. Restore succeeded. $ cd hwapp $ dotnet run Hello World!

    Основные команды

    Всё взаимодействие с .NET Core из командной строки осуществляется через команду

    $ dotnet

    Для запуска приложения:

    $ dotnet программа

    Для запуска команды управления пакетами NuGet:

    $ dotnet nuget

    Для скачивания и подготовки всех необходимых для сборки проекта пакетов:

    $ dotnet restore
    $ dotnet msbuild

    Для запуска тестов MSTest или xUnit:

    $ dotnet test

    Диагностика

    $ dotnet run --verbosity diag

    Desktop-приложения

    Сама по себе платформа .NET Core покрывает и поддерживает только модель консольных приложений и приложений ASP.NET Core. Реализация WPF (Windows Presentation Foundation) отсутствует для платформы Linux.

    В настоящее время (июль 2017) шаги к портированию WPF на .NET Core заключаются в обсуждении стандарта XAML Standard, которым описываются UI-элементы, чтобы появилась возможность реализовать System.XAML. После чего возникнет теоретическая возможность портировать/реализовать WPF поверх .NET Core.

    ASP.NET

    Частью ASP.NET Core является кросс-платформенный веб-сервер KestrelHttpServer.

    • Начинаем работать с ASP.NET Core.
    • ASP.NET 5 мёртв — представляем ASP.NET Core 1.0 и .NET Core 1.0

    Установить пакет dotnet-aspnetcore

    apt-get install dotnet-aspnetcore
    $ mkdir aspnetcoreapp $ cd aspnetcoreapp $ dotnet new web $ dotnet run

    Если требуется доступ отовсюду, то запускаем так

    Однако, по рекомендации MS, если приложение смотрит в Интернет, нужно использовать обратный прокси-сервер (IIS, Nginx или Apache).

    Особенности

    • Поддерживается только 64-битная платформа (x86_64).
    • В настоящий момент nuget нормально не поддерживает работу в оффлайн-режиме (с предварительно подготовленным кэшем), и даже с использованием локального репозитория есть проблемы.

    ARM

    Ссылки

    • Архитектурные компоненты .NET
    • .NET Core
    • .NET Cli для начинающих
    • публикация приложения
    • Перенос кода в .NET Core из .NET Framework
    • Представлен .NET 5 (релиз в ноябре 2020 года)

    Исходный код

    • dotnet/runtime — содержит .NET Core runtime, называемый CoreCLR и базовую библиотеку (mscorlib) с низкоуровневыми классами и базовыми типами данных.
    • dotnet/sdk — исходный код команд, касающихся сборки проекта (таких, как ‘dotnet build’, ‘dotnet restore’ и ‘dotnet publish’).
    • corewf — неофициальный порт Windows Workflow Foundation на .NET (без XAML не работает) (состояние портирования)
    • referencesource — исходный код части модулей .NET Framework 4.7 (для сверки)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *