Как запустить .Net Core и Angular Universal на Nginx Ubuntu | OTUS

Курсы

Программирование
Java Developer. Professional Highload Architect C++ Developer. Basic Специализация C++ Developer C++ Developer. Professional Java Developer. Basic Kotlin Developer. Basic Microservice Architecture JavaScript Developer. Basic Cloud Solution Architecture Team Lead C# Developer. Professional Алгоритмы и структуры данных Rust Developer C# Developer. Basic NoSQL Выбор профессии в IT
-99%
Python Developer. Basic Python Developer. Professional Базы данных iOS Developer. Professional React.js Developer Scala-разработчик Специализация iOS Unity Game Developer. Basic MS SQL Server Developer Kotlin Backend Developer Node.js Developer Symfony Framework PHP Developer. Basic Буткемп Java Groovy Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Как запустить .Net Core и Angular Universal на Nginx Ubuntu

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

Screenshot_1-1801-079d76.png

VPS

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

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

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

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

image_2_1-1801-e46376.png

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

2. Перейдем во вкладку compute cloud

image_3_1-1801-40e11d.png

3. Нажмите на «Создать ВМ»
4. Введем простую конфигурацию ВМ

145x184_1_484a234f6e29ed520801acbfe9046daa_2083x2649_0xac120003_481486291621588514_1-1801-8c6ca6.jpg

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-ключа.

image_5_1-1801-7e8e59.png

Подключимся к 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.

image_6_1-1801-259e0a.png

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

dotnet MyProject.dll

image_7_1-1801-d84a02.png

Попробуйте обратиться по 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

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться