Как развернуть приложения .NET Core на серверах Linux

26 feb 2024 3 min di lettura
Как развернуть приложения .NET Core на серверах Linux

Введение

Развертывание приложений.NET Core на серверах Linux знаменует собой значительный отход от традиционных платформ развертывания, ориентированных на Microsoft. Кросс-платформенная природа.NET Core позволяет разработчикам воспользоваться преимуществами производительности, надежности и безопасности сред Linux. В этом руководстве представлен подробный обзор развертывания приложений.NET Core в различных дистрибутивах Linux с упором на использование Nginx или Apache в качестве обратного прокси-сервера и защиту дистрибутивов с помощью SSL.

Предварительные условия

Прежде чем приступить к процессу развертывания, убедитесь, что у вас есть:

  • Приложение.NET Core, готовое к развертыванию.
  • Сервер Linux (Ubuntu, CentOS или любой другой дистрибутив по вашему выбору).
  • Базовые знания командной строки Linux.

Шаг 1. Подготовьте свой Linux-сервер

Сначала обновите менеджер пакетов вашего сервера. Установите среду выполнения.NET Core или пакет SDK на свой сервер в зависимости от ваших конкретных потребностей. SDK необходим для целей разработки, а среды выполнения достаточно для запуска приложений.

Для дистрибутивов на основе Debian, таких как Ubuntu, используйте:

sudo dnf update
sudo apt install dotnet-runtime-6.0

Для дистрибутивов на базе Red Hat, таких как CentOS, используйте:

sudo apt update
sudo dnf install dotnet-runtime-6.0

Шаг 2. Опубликуйте приложение.NET на компьютере разработчика.

Публикация приложения.NET в рабочей среде — это важнейший шаг, который включает в себя подготовку приложения к развертыванию, включая компиляцию, оптимизацию и упаковку. Чтобы опубликовать приложение.NET в рабочей среде,.NET CLI предоставляет простую и мощную команду:

dotnet publish -c Release -o./publish

Эта команда компилирует приложение в режиме выпуска, позволяя оптимизировать производительность и уменьшить размер приложения. Аргумент -o./publish указывает выходной каталог, в котором будет храниться опубликованное приложение. Это гарантирует включение всех необходимых компонентов среды выполнения, библиотек и зависимостей, что делает приложение готовым к развертыванию на любой поддерживаемой платформе или среде хостинга.

Шаг 3. Перенесите опубликованный код на рабочий сервер.

Этот процесс включает безопасное копирование файлов приложения в рабочую среду. Широко используемой для этой цели командой является scp (защищенное копирование), которая использует SSH для передачи данных, обеспечивая безопасность и надежность. Следующая команда показывает, как перенести опубликованное приложение из локального каталога на удаленный сервер:

scp -r./publish username@your_production_server:/path/to/destination

Эта команда рекурсивно копирует все содержимое каталога./publish (где было опубликовано приложение.NET) по указанному пути на рабочем сервере. Замените имя пользователя, ваш_производственный_сервер и /path/to/destination на имя пользователя SSH, имя хоста или IP-адрес вашего фактического сервера и путь, по которому вы хотите, чтобы приложение располагалось соответственно.

Шаг 4. Запустите приложение.NET.

Перейдите в каталог приложения и запустите приложение с помощью следующей команды:

dotnet MyApplication.dll

Эта команда запускает приложение на порту по умолчанию, обычно 5000 для сервера Kestrel.

Шаг 5. Настройте обратный прокси-сервер с помощью Nginx или Apache.

Обратный прокси-сервер находится перед вашим приложением, обрабатывая входящие HTTP-запросы и перенаправляя их в приложение. Эта конфигурация повышает безопасность, обеспечивает балансировку нагрузки и эффективно обслуживает статический контент.

Использование Nginx

Установите Нгинкс:

sudo apt install nginx

Настройте Nginx, создав новый файл конфигурации для вашего приложения в /etc/nginx/sites-available/myapp и свяжите его с сайтами с поддержкой.

server {
 listen 80;
 server_name 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 ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Использование Apache

Установите Апач:

sudo apt install apache2

Включите модули proxy и proxy_http:

sudo a2enmod proxy proxy_http

Создайте новый файл конфигурации для вашего приложения в /etc/apache2/sites-available/myapp.conf со следующим содержимым:

<VirtualHost *:80>
 ServerName example.com

 ProxyPreserveHost On
 ProxyPass /http://localhost:5000/ProxyPassReverse /http://localhost:5000/</VirtualHost>

Включите сайт и перезапустите Apache:

sudo a2ensite myapp.conf
sudo systemctl restart apache2

Шаг 6. Защитите приложение с помощью Let’s Encrypt SSL.

Защита вашего приложения с помощью SSL имеет решающее значение для защиты конфиденциальных данных. Let's Encrypt предлагает бесплатные SSL-сертификаты. Certbot — популярный инструмент для получения и обновления сертификатов Let's Encrypt.

Для Нгинкс

Установите Certbot и плагин Nginx:

sudo apt-get install certbot python3-certbot-nginx

Получите и установите сертификат:

sudo certbot --nginx -d example.com

Для Апача

Установите Certbot и плагин Apache:

sudo apt-get install certbot python3-certbot-apache

Получите и установите сертификат:

sudo certbot --apache -d example.com

Лучшие практики

  • Постоянно обновляйте свой сервер и приложение, чтобы устранить уязвимости.
  • Используйте переменные среды для настроек приложения, особенно для конфиденциальных данных.
  • Внедрите ведение журнала и мониторинг для быстрого обнаружения и устранения проблем.
  • Рассмотрите возможность использования конвейера CI/CD для автоматического тестирования и развертывания.
  • Регулярно создавайте резервные копии вашего приложения и базы данных.

Заключение

Развертывание приложений.NET Core на серверах Linux открывает целый мир возможностей для разработчиков, привыкших к средам Windows. Следуя этому руководству, вы сможете использовать возможности Linux для размещения надежных, безопасных и масштабируемых приложений.NET Core.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.