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

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

Введение

Развертывание приложений.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.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

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.