Как запустить dotnet core и angular universal на nginx ubuntu
Идея приложения, следующая : Сервер у нас на dotnet core. А клиент на angular 7 (2+) с использованием SSR (server site rendering) или universal angular
VPS
Нам нужен VPS сервер. Я использую яндекс.облако. Они пока что дают 2 месяца бесплатного использования. Для экспериментов думаю вполне достаточно.
Как добавить виртуальную машину в яндекс облаке.
Если у вас есть другой VPS пропустите этот блок.
- Если вы уже зарегистрировались и активировали пробную версию.
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 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
Продолжение следует… 🙂