Данное руководство носит образовательный характер, и предназначено для тех -
кто ни разу не запускал приложения 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-microsoft-prod.deb -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
|