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