HTML Diff
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