0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Идея нашего приложения следующая: у нас есть сервер на dotnet core, а клиент на angular 7 (2+) с использованием SSR (server site rendering) или universal angular. Общая архитектура выглядит так:</p>
1
<p>Идея нашего приложения следующая: у нас есть сервер на dotnet core, а клиент на angular 7 (2+) с использованием SSR (server site rendering) или universal angular. Общая архитектура выглядит так:</p>
2
<h2>VPS</h2>
2
<h2>VPS</h2>
3
<p>Нам нужен VPS-сервер. Я использую Яндекс.облако. Для экспериментов вполне достаточно.</p>
3
<p>Нам нужен VPS-сервер. Я использую Яндекс.облако. Для экспериментов вполне достаточно.</p>
4
<h3>Как добавить виртуальную машину в Яндекс.облако</h3>
4
<h3>Как добавить виртуальную машину в Яндекс.облако</h3>
5
<p>Если у вас есть другой VPS, пропустите этот блок. Если нет, то алгоритм действий следующий:</p>
5
<p>Если у вас есть другой VPS, пропустите этот блок. Если нет, то алгоритм действий следующий:</p>
6
<h5>1. Если вы уже зарегистрировались и активировали пробную версию</h5>
6
<h5>1. Если вы уже зарегистрировались и активировали пробную версию</h5>
7
<p>Активируйте пробную версию в Яндекс.облаке.</p>
7
<p>Активируйте пробную версию в Яндекс.облаке.</p>
8
<h5>2. Перейдем во вкладку compute cloud</h5>
8
<h5>2. Перейдем во вкладку compute cloud</h5>
9
<h5>3. Нажмите на "Создать ВМ"</h5>
9
<h5>3. Нажмите на "Создать ВМ"</h5>
10
<h5>4. Введем простую конфигурацию ВМ</h5>
10
<h5>4. Введем простую конфигурацию ВМ</h5>
11
<h5>5. Добавим SSH-ключ</h5>
11
<h5>5. Добавим SSH-ключ</h5>
12
<p>Запустите cmd.exe или powershell.exe. И введите следующую команду.</p>
12
<p>Запустите cmd.exe или powershell.exe. И введите следующую команду.</p>
13
ssh-keygen -t rsa -b 2048<p>Я запускал на windows 10, и у меня вылетало сообщение<em>‘ssh-keygen’ is not recognized</em>. Я просто запустил эту команду в git-bash. Если еще не установили его, установите -- очень нужная и полезная штука.</p>
13
ssh-keygen -t rsa -b 2048<p>Я запускал на windows 10, и у меня вылетало сообщение<em>‘ssh-keygen’ is not recognized</em>. Я просто запустил эту команду в git-bash. Если еще не установили его, установите -- очень нужная и полезная штука.</p>
14
<p>В папке /c/Users/username/.ssh/id_rsa у вас появится файлы<em>id_rsa</em>и<em>id_rsa.pub</em>.</p>
14
<p>В папке /c/Users/username/.ssh/id_rsa у вас появится файлы<em>id_rsa</em>и<em>id_rsa.pub</em>.</p>
15
<p>Добавим содержимое файла<em>id_rsa.pub</em>в поле SSH-ключа.</p>
15
<p>Добавим содержимое файла<em>id_rsa.pub</em>в поле SSH-ключа.</p>
16
<h3>Подключимся к VPS-серверу и установим несколько компонентов</h3>
16
<h3>Подключимся к VPS-серверу и установим несколько компонентов</h3>
17
<p>На вашем VPS установим следующие компоненты.</p>
17
<p>На вашем VPS установим следующие компоненты.</p>
18
Install .NET Core Runtime on Linux Ubuntu 18.04 - x64 Install superviso<h3>Install .NET Core Runtime on Linux Ubuntu 18.04 - x64</h3>
18
Install .NET Core Runtime on Linux Ubuntu 18.04 - x64 Install superviso<h3>Install .NET Core Runtime on Linux Ubuntu 18.04 - x64</h3>
19
<p>Чтобы наше .NET Core-приложение запускалось, на линуксе надо установить runtime-среду. Которая и будет запускать нашу сборку.</p>
19
<p>Чтобы наше .NET Core-приложение запускалось, на линуксе надо установить runtime-среду. Которая и будет запускать нашу сборку.</p>
20
<p>Согласно<a>официальной документации</a>, там же можно найти другие сборки под linux, windows, MacOS.</p>
20
<p>Согласно<a>официальной документации</a>, там же можно найти другие сборки под linux, windows, MacOS.</p>
21
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;<p>Сделаем сборку на разработческой машине. Я делаю сборку в VisualStudio 2019. Но вы можете воспользоваться командой<em>dotnet publish</em>. Естественно, чтобы данная команда сработала, не забудьте установить SDK. Вы можете сделать сборку и на сервере.</p>
21
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;<p>Сделаем сборку на разработческой машине. Я делаю сборку в VisualStudio 2019. Но вы можете воспользоваться командой<em>dotnet publish</em>. Естественно, чтобы данная команда сработала, не забудьте установить SDK. Вы можете сделать сборку и на сервере.</p>
22
dotnet publish --configuration Release<p>Результат сборки -- файлы<em>.dll</em>. Найдите .dll-файл стартового проекта (startup project). Например, MyProject.dll.</p>
22
dotnet publish --configuration Release<p>Результат сборки -- файлы<em>.dll</em>. Найдите .dll-файл стартового проекта (startup project). Например, MyProject.dll.</p>
23
<p>Запустим сборку на сервере командой:</p>
23
<p>Запустим сборку на сервере командой:</p>
24
<p>Попробуйте обратиться по ip вашего сервера с указанием порта, например, 52.155.122.144:5000 -- приложение должно запуститься.</p>
24
<p>Попробуйте обратиться по ip вашего сервера с указанием порта, например, 52.155.122.144:5000 -- приложение должно запуститься.</p>
25
<p>Но есть проблема. Если закрыть консоль, то приложение отключится. Чтобы эту проблему решить, надо запустить приложение в фоновом режиме как службу. К счастью, для этого можно использовать сторонний софт superviser, который ставится невероятно просто.</p>
25
<p>Но есть проблема. Если закрыть консоль, то приложение отключится. Чтобы эту проблему решить, надо запустить приложение в фоновом режиме как службу. К счастью, для этого можно использовать сторонний софт superviser, который ставится невероятно просто.</p>
26
sudo apt-get install supervisor<p>Добавим файл в директорию<em>/etc/supervisor/conf.d/hellomvc.conf</em>:</p>
26
sudo apt-get install supervisor<p>Добавим файл в директорию<em>/etc/supervisor/conf.d/hellomvc.conf</em>:</p>
27
<p>Добавьте следующее содержимое:</p>
27
<p>Добавьте следующее содержимое:</p>
28
[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<p>И перезапустим сервис supervisor:</p>
28
[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<p>И перезапустим сервис supervisor:</p>
29
sudo service supervisor stop sudo service supervisor start
29
sudo service supervisor stop sudo service supervisor start