Данное руководство носит образовательный характер, и предназначено для тех - кто ни разу не запускал приложения ASP.Net на сервере. Для больших, сложных и серьёзных проектов не годится, так как не учтены все нюансы развёртывания и настройки безопасности.++ Этапы развертывания приложений на сервере Ubuntu 20.04
*** Сервер и соединение
*** Установка .net Core + ASP.net Core
*** Сборка приложения
*** Nginx и всё что с ним связано
*** Сервис приложения
*** Настройка прав пользователя
++ Сервер и соединение
Для того что бы развернуть приложение на .NET Core нам необходима виртуальная машина на Ubuntu - на ней мы и запустим наше первое приложение. Подключиться можно через SSH
++ Установка .net Core + ASP.net Core
Для начала нам нужно подключить репозиторий для того чтобы в последующем установить все нужные нам пакеты.
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-... -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Установка пакетов
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1
sudo apt-get install -y aspnetcore-runtime-3.1
++ Сборка приложения
На этом этапе нам нужно скомпилировать приложение и получить исполняемые файлы которые мы будем запускать в виртуальной машине.
Создадим проект
dotnet new webapp -o ProjectName
cd ProjectName
Сборка приложения
dotnet publish --configuration Release
В итоге мы получим в каталоге проекта по пути /bin/Release/ исполняемые файлы приложения.
++ Nginx и всё что с ним связано
Установка пакетов
sudo apt install nginx
sudo service nginx start
В браузере должна открыться стартовая страница Nginx по умолчанию. Целевая страница доступна по адресу http://server_IP_address
Настройка конфигурации
Для того чтобы настроить сервер так как нам нужно необходимо отредактировать конфиг Nginx в директории /etc/nginx/sites-available/
sudo vi /etc/nginx/sites-available/default
server {
listen 80;
server_name example.com *.example.com;
location / {
proxy_pass http://localhost:5000;
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;
}
}
++ Сервис приложения
Создайте файл определения службы.
sudo vi /etc/systemd/system/dotnetapp.service
Добавляем конфигурацию сервиса
[Unit]
Description=Example .NET Web API App running on Ubuntu
[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Запуск сервиса
sudo systemctl enable dotnetapp.service
Проверка статуса сервиса
sudo systemctl status dotnetapp.service
Перезапуск сервиса
sudo systemctl restart dotnetapp.service
Daemon reload
sudo systemctl daemon-reload
++ Настройка прав пользователя
Группа www-data
Пользователь (www-data) должен существовать и иметь права владельца в отношении файлов приложения. www-data создаётся автоматически при установке Nginx. Для того чтобы Nginx мог работать с каталогом нашего приложения нужно каталогу присвоить права пользователя www-data.
sudo chown username:www-data /var/www/ -R
sudo systemctl restart dotnetapp.service
sudo chown -R www-data:username /var/www/*
sudo systemctl status dotnetapp.service
URL: https://docs.google.com/document/d/1BfPRdjGO87BiEgxyXvRAzoOd...
Обсуждается: http://www.opennet.dev/tips/info/3149.shtml