Развертывание приложения .NET Core на Ubuntu 24.04
Приложения Asp .NET Core обладают привлекательными достоинствами и несмотря на то, что технология .NET Core является разработкой Microsoft, традиционно ассоциируемой со средами Windows, использование таких приложений на Linux, позволяет получить выгодные преимущества:
-
Кроссплатформенная совместимость
-
Эффективность затрат
-
Производительность и масштабируемость
-
Контейнеризация и оркестровка
-
Экосистема с открытым исходным кодом
-
Безопасность и стабильность
Установка пакета SDK для .NET или среды выполнения .NET в Ubuntu
Добавление нового репозитория программного обеспечения
Обновить систему
sudo apt update
Уствновить пакет software-properties-common
sudo apt install software-properties-common
Добавить репозиторий
sudo add-apt-repository ppa:dotnet/backports
Установка пакета SDK или среды выполнения
Пакет SDK позволяет разрабатывать приложения с помощью .NET
При установке пакета SDK для .NET не нужно дополнительно устанавливать соответствующую среду выполнения.
sudo apt-get update && sudo apt-get install -y dotnet-sdk-9.0
Если не планируется разработка приложений, то можно установить только среду выполнения ASP.NET Core, которая позволяет запускать приложения, созданные с помощью версии .NET без поддержки среды выполнения.
sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-9.0
Если поддержка ASP.NET Core не нужна можно установить только среду выполнения .NET
sudo apt-get install -y dotnet-runtime-9.0
Проверить установленную версию .NET можно с помощью следующей команды
dotnet --version
Создание приложения с использованием .NET
Для создания нового приложения с именем MyApp используется команда:
dotnet new webapp -o MyApp --no-https
Затем перейдите в каталог MyApp
cd MyApp
и соберите приложение с помощью команды build:
dotnet build
Опубликуйте приложение .NET с помощью следующей команды:
sudo dotnet publish -c Release -o /var/www/ --runtime linux-x64
Создание демона Systemd для приложения .NET
Создайте файл systemd для управления .NET-приложением с помощью следующей команды:
sudo nano /etc/systemd/system/app.service
Добавьте следующую конфигурацию:
[Unit]
Description=My .NET Core Application
[Service]
WorkingDirectory=/var/www/
ExecStart=/usr/bin/dotnet /var/www/MyApp.dll
Restart=always
# Перезапустить службу через 10 секунд, если служба dotnet аварийно завершает работу:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
Сохраните и закройте файл, затем перезагрузите демон systemd, чтобы изменения вступили в силу.
sudo systemctl daemon-reload
Запустите созданный сервис
sudo systemctl start app
Проверить состояние можно командой
sudo systemctl status app
Установка и конфигурирование Nginx для приложения .NET
Далее вам необходимо настроить Nginx как обратный прокси-сервер для предоставления доступа к вашему приложению через порт 80.
Сначала установите веб-сервер Nginx.
sudo apt install nginx
Затем создайте конфигурационный файл для виртуального хоста Nginx.
sudo nano /etc/nginx/conf.d/app.conf
Добавьте в файл следующую конфигурацию
server {
listen 80;
server_name app.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;
}
}
Сохраните и закройте файл конфигурации хоста и откройте конфигурационный файл Nginx
sudo nano /etc/nginx/nginx.conf
в раздел http добавьте следующие строки
server_names_hash_bucket_size 64;
client_max_body_size 20M;
Сохраните файл и перезапустите Nginx
sudo systemctl restart nginx