Как запустить .Net Core и Angular Universal на Nginx Ubuntu
2026-03-10 01:12 Diff

Идея нашего приложения следующая: у нас есть сервер на dotnet core, а клиент на angular 7 (2+) с использованием SSR (server site rendering) или universal angular. Общая архитектура выглядит так:

VPS

Нам нужен VPS-сервер. Я использую Яндекс.облако. Для экспериментов вполне достаточно.

Как добавить виртуальную машину в Яндекс.облако

Если у вас есть другой VPS, пропустите этот блок. Если нет, то алгоритм действий следующий:

1. Если вы уже зарегистрировались и активировали пробную версию

Активируйте пробную версию в Яндекс.облаке.

2. Перейдем во вкладку compute cloud
3. Нажмите на «Создать ВМ»
4. Введем простую конфигурацию ВМ
5. Добавим SSH-ключ

Запустите cmd.exe или powershell.exe. И введите следующую команду.

ssh-keygen -t rsa -b 2048

Я запускал на windows 10, и у меня вылетало сообщение ‘ssh-keygen’ is not recognized. Я просто запустил эту команду в git-bash. Если еще не установили его, установите -- очень нужная и полезная штука.

В папке /c/Users/username/.ssh/id_rsa у вас появится файлы id_rsa и id_rsa.pub.

Добавим содержимое файла id_rsa.pub в поле SSH-ключа.

Подключимся к VPS-серверу и установим несколько компонентов

На вашем VPS установим следующие компоненты.

Install .NET Core Runtime on Linux Ubuntu 18.04 — x64 Install superviso

Install .NET Core Runtime on Linux Ubuntu 18.04 — x64

Чтобы наше .NET Core-приложение запускалось, на линуксе надо установить runtime-среду. Которая и будет запускать нашу сборку.

Согласно официальной документации, там же можно найти другие сборки под linux, windows, MacOS.

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb; sudo dpkg -i packages-microsoft-prod.deb; sudo add-apt-repository universe; sudo apt-get install apt-transport-https; sudo apt-get update; sudo apt-get install --assume-yes aspnetcore-runtime-2.2;

Сделаем сборку на разработческой машине. Я делаю сборку в VisualStudio 2019. Но вы можете воспользоваться командой dotnet publish. Естественно, чтобы данная команда сработала, не забудьте установить SDK. Вы можете сделать сборку и на сервере.

dotnet publish --configuration Release

Результат сборки -- файлы .dll. Найдите .dll-файл стартового проекта (startup project). Например, MyProject.dll.

Запустим сборку на сервере командой:

Попробуйте обратиться по ip вашего сервера с указанием порта, например, 52.155.122.144:5000 -- приложение должно запуститься.

Но есть проблема. Если закрыть консоль, то приложение отключится. Чтобы эту проблему решить, надо запустить приложение в фоновом режиме как службу. К счастью, для этого можно использовать сторонний софт superviser, который ставится невероятно просто.

sudo apt-get install supervisor

Добавим файл в директорию /etc/supervisor/conf.d/hellomvc.conf:

Добавьте следующее содержимое:

[program:myproject] command=/usr/bin/dotnet /var/aspnetcore/myproject/MyProject.dll directory=/var/aspnetcore/myproject/ autostart=true autorestart=true stderr_logfile=/var/log/myproject.err.log stdout_logfile=/var/log/myproject.out.log environment=ASPNETCORE__ENVIRONMENT=Production user=www-data stopsignal=INT

И перезапустим сервис supervisor:

sudo service supervisor stop sudo service supervisor start