Приобретено доменное имя, по которому обеспечен доступ к сайту.
Разработку приложений и настройку VPS ведем из под ОС Windows 10x64 Professional.
Цель
Заставить одновременно работать несколько ASP.Net Core приложений на одном VPS.
Каждое приложение должно быть доступно по адресу: http://поддомен_приложения.домен.
1. Создаем поддомен (на примере masterhost.ru)
Заходим в редактор DNS https://cp.masterhost.ru/dns и погнали!
2. Публикуем приложение
dotnet publish -r linux-x64
3. Задаем приложению уникальный порт
Так как у сетевых приложений должны быть уникальные (сетевые) порты, а по умолчанию все ASP.Net Core приложения работают на 5000 порту, то необходимо сконфигурировать наши приложения. В папке publish находим appsettings.json. По умолчанию он выглядит так:
и добавляем в него раздел "Kestrel" со следующим параметрами:
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5005" // Change this to your desired port
}
}
}
Итоговый файл appsettings.json должен выглядеть примерно так:
Теперь, если запустить наше приложение из командной строки, то можно убедиться ,что оно работает на порту 5005.
И это даже несмотря на то, что мы сейчас работаем под ОС Windows 10x64 Professional, а опубликовали наше приложение под Linux.
Копируем приложение на VPS
Любым удобным способом (я использую FileZilla, подключаюсь по SFTP и перетаскиванием копирую каталог из одной панели в другую) копируем папку с опубликованным ASP.Net Core приложением например в каталог /var/www, в котором я для удобства создал подкаталог с именем приложения.
5. Проверяем работоспособность приложения на VPS
Переходим в каталог с нашим приложением (TestRazor.dll)
cd /var/www/TestRazor/publish/
и запускаем его
dotnet TestRazor.dll
6. Настраиваем nginx
1. Создаем файл test-razor.config следующего содержания:
В случае проблем с перезапуском nginx Проверьте каталог /etc/nginx/sites-enabled на предмет кривых/левых символических ссылок и удалите таковые, если они есть.
7. Оформляем наше приложение в виде службы (создаем Unit)
На компьютере создаем файл test_razor.service такого содержимого:
[Unit]
Description= Тестовое ASP.Net Core приложение
[Service]
WorkingDirectory=/var/www/TestRazor/publish
ExecStart=/usr/bin/dotnet /var/www/TestRazor/publish/TestRazor.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=Raven
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_NOLOGO=true
[Install]
WantedBy=multi-user.target
Обращаем внимание на правильность путей, указанных в параметрах WorkingDirectory и ExecStart
сохраняем его.
Копируем test_razor.service на VPS по пути по пути /etc/systemd/system
Проверяем работоспособность службы.
systemctl start test_razor.service
systemctl status test_razor.service
8. Итоговая проверка работоспособности приложения и его доступности по url
Ну, вот в общем-то и всё. Повторяем этот алгоритм для второго приложения, не забывая присваивать ему уникальный порт и свой поддомен. Всем удачи! Жду обратной связи в комментариях под статьей.