Как запустить dotnet core и angular universal на nginx ubuntu

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

VPS

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

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

Если у вас есть другой 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 установим следующие компоненты.

  1. Install .NET Core Runtime on Linux Ubuntu 18.04 — x64
  2. Install supervisor

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.

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

dotnet 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

Продолжение следует… 🙂

Comments are closed.