Как запустить .Net Core и Angular Universal на Nginx Ubuntu | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
C++ Developer. Professional JavaScript Developer. Professional Android Developer. Professional Microservice Architecture React.js Developer JavaScript Developer. Basic PostgreSQL Программист С C++ Developer. Basic Team Lead PHP Developer. Professional Подготовка к сертификации Oracle Java Programmer (OCAJP) Алгоритмы и структуры данных Разработчик IoT C# Developer. Basic Unreal Engine Technical Game Design C# ASP.NET Core разработчик Python Developer. Professional Python Developer. Basic Node.js Developer iOS Developer. Professional Cloud Solution Architecture Kotlin Backend Developer Agile Project Manager Scala-разработчик Symfony Framework iOS Developer. Basic Супер-интенсив Azure Специализация Python Developer
Инфраструктура
Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс «IaC Ansible» Microservice Architecture Разработчик программных роботов (RPA) на базе UiPath и PIX Внедрение и работа в DevSecOps NoSQL Специализация Administrator Linux
-24%
Разработчик IoT Мониторинг и логирование: Zabbix, Prometheus, ELK MongoDB
-30%
DevOps практики и инструменты MS SQL Server Developer SRE практики и инструменты Administrator Linux. Advanced Infrastructure as a code Супер-интенсив "Tarantool" Специализация Network engineer
Корпоративные курсы
Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс «IaC Ansible» Разработчик программных роботов (RPA) на базе UiPath и PIX Внедрение и работа в DevSecOps NoSQL Spark Developer Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Game QA Engineer DevOps практики и инструменты Enterprise Architect Node.js Developer Cloud Solution Architecture Agile Project Manager Супер-практикум по работе с протоколом BGP Infrastructure as a code Промышленный ML на больших данных Супер-интенсив Azure Руководитель поддержки пользователей в IT
Специализации Курсы в разработке Подготовительные курсы Подписка
+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 комментариев
Для комментирования необходимо авторизоваться