Publish on linux

Publish dotnetcore app on linux server

http://slusar.su/kak-razyernut-net-core-2-1-mvc-proekt-na-ubuntu-server-18-04/

  1. install nginx
add-apt-repository ppa:nginx/stable
apt-get update; apt-get install nginx
  1. Check Nginx server
service nginx start
  1. Go to IP server and see welcome page.

  2. Edit Nginx configuration

cd /etc/nginx/sites-available/
nano default

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         https://localhost:5001;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
  1. Check config and Restart nginx
nginx -t
nginx -s reload
  1. Create empty MVC app and test server
dotnet new mvc -o testMvc
cd testMvc
dotnet build
dotnet run
  1. Create folder for App
cd /var/www
mkdir WebAPI
  1. Publish App and copy files to /var/www/WebAPI

  2. Check App

dotnet /var/www/WebAPI/WebAPI.dll

СОЗДАНИЕ СЕРВИСА ДЛЯ АВТОЗАПУСКА ПРИЛОЖЕНИЯ

Все хорошо, наше приложение работает и доступно из вне, но что делать, если сервер перезагрузиться из-за сбоя? Нам нужно автоматизировать запуск нашего приложения при старте системы. Для этого создадим сервис-службу, который и будет выполнять такую работу.

создадим файл настройки сервиса mywebapp.service, который будет лежать в папке /etc/systemd/system/ :

sudo nano /etc/systemd/system/mywebapp.service

И добавим туда следующие настройки:

[Unit]
Description=Example .NET Web API App running on Ubuntu
[Service]
WorkingDirectory=/var/www/webapp
ExecStart=/usr/bin/dotnet /var/www/webapp/webapp.dll
Restart=always
#Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
SyslogIdentifier=dotnet-mywebapp
User=user
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target

Теперь мы можем активировать наш сервис, запустить и посмотреть его статус:

systemctl enable mywebapp.service
systemctl start mywebapp.service
systemctl status mywebapp.service

Если статус покажет адрес: http://localhost:5000 То нужно поменять настройки NGIX