Развертывание .NET Core 8 приложения на Linux Ubuntu с PostgreSQL

1. Подготовка:

  • Убедитесь, что на вашем сервере Ubuntu установлено .NET 8 SDK.

    • Выполните команду sudo apt update для обновления списка пакетов.

    • Выполните команду sudo apt install aspnetcore-runtime-8.0 для установки среды выполнения .NET 8.

  • Установите PostgreSQL.

    • Выполните команду sudo apt install postgresql postgresql-contrib для установки PostgreSQL и дополнительных утилит.

  • Создайте пользователя и базу данных для приложения.

    • Запустите sudo -u postgres psql для входа в оболочку PostgreSQL.

    • Выполните команду CREATE USER <имя_пользователя> WITH PASSWORD '<пароль>'; для создания пользователя.

    • Выполните команду CREATE DATABASE <имя_базы_данных> OWNER <имя_пользователя>; для создания базы данных.

    • Выйдите из оболочки PostgreSQL командой \q.

2. Настройка приложения:

  • Создайте файл appsettings.json или appsettings.Production.json для настройки конфигурации приложения.

    • Замените <connection string> на строку подключения к PostgreSQL.

          {
      "ConnectionStrings": {
        "DefaultConnection": "Host=localhost;Database=<имя_базы_данных>;Username=<имя_пользователя>;Password=<пароль>"
      }
    }
        
  • Проверьте, что ваше приложение использует библиотеку Entity Framework Core с PostgreSQL провайдером.

    • Добавьте пакет Microsoft.EntityFrameworkCore.Sqlite в ваш проект.

    • Настройте контекст данных, используя DbContextOptionsBuilder и UseNpgsql для PostgreSQL.

3. Публикация приложения:

  • Создайте папку для развертывания приложения.

  • Опубликуйте приложение с помощью команды dotnet publish -c Release -o <папка_развертывания>.

  • Скопируйте все необходимые файлы и папки в папку развертывания, включая appsettings.json или appsettings.Production.json.

4. Запуск приложения:

  • Перейдите в папку развертывания приложения.

  • Запустите приложение с помощью команды dotnet <имя_исполняемого_файла>.dll.

5. Настройка для запуска приложения автоматически:

  • Создайте файл службы systemd для запуска приложения.

    [Unit]
    Description=My .NET Core 8 Application
    After=network.target
    
    [Service]
    User=www-data
    WorkingDirectory=/path/to/your/application
    ExecStart=/usr/bin/dotnet /path/to/your/application/<имя_исполняемого_файла>.dll
    Restart=always
    RestartSec=30
    StandardOutput=syslog
    StandardError=syslog
    
    [Install]
    WantedBy=multi-user.target
        
  • Сохраните файл как my-app.service.

  • Скопируйте файл в systemctl/system/:

    • sudo cp my-app.service /etc/systemd/system/my-app.service

  • Перезагрузите демон systemd:

    • sudo systemctl daemon-reload

  • Запустите сервис:

    • sudo systemctl start my-app.service

  • Включите автозапуск сервиса при загрузке системы:

    • sudo systemctl enable my-app.service

Дополнительные советы:

  • Используйте Nginx или Apache для проксирования HTTP-запросов к вашему приложению.

  • Настройте SSL-сертификат для обеспечения безопасного доступа к вашему приложению.

  • Используйте инструменты мониторинга для отслеживания производительности вашего приложения.

  • Используйте Docker для упрощения развертывания приложения.

Важно:

  • Замените <имя_пользователя>, <пароль>, <имя_базы_данных>, <папка_развертывания> и <имя_исполняемого_файла>.dll на свои фактические значения.

  • Проверьте права доступа к папкам и файлам для правильной работы приложения.

  • Прочитайте документацию .NET 8 и PostgreSQL для получения дополнительной информации.