Введение
В современной среде разработки решающее значение имеют универсальность и эффективность доставки приложений. Это особенно актуально при работе с.NET Core, кросс-платформенной платформой Microsoft, которая получила широкое распространение для создания широкого спектра приложений. Распространенный сценарий предполагает запуск нескольких приложений.NET Core на одном сервере. В этом руководстве представлен подробный обзор того, как одновременно запускать несколько приложений.NET Core на одном экземпляре Ubuntu, не полагаясь на Docker, и рассматриваются все аспекты: от установки до настройки и развертывания.
Docker и контейнеризация предлагают мощные способы изоляции и развертывания приложений. Однако существуют сценарии, в которых лучше всего запускать приложения непосредственно в хост-системе из соображений простоты, экономии ресурсов или особых требований к производительности. В этом руководстве основное внимание уделяется Ubuntu как хост-системе, учитывая ее популярность и поддержку в экосистеме.NET Core.
Предварительные условия
- Сервер Ubuntu (рекомендуется 18.04 LTS или более поздняя версия)
- Базовые знания интерфейса командной строки
- Приложения.NET Core, предназначенные для разных версий (например, 3.1 и 6.0).
Шаг 1. Установите пакеты SDK для.NET.
.NET Core поддерживает параллельную установку различных версий среды выполнения, SDK для конкретных версий.NET Core, на которые нацелены ваши приложения. Это позволяет вам разрабатывать и запускать приложения для этих версий на вашем сервере Ubuntu.
Обновите индекс пакетов и установите необходимые пакеты, чтобы ваша система могла получить доступ к репозиторию пакетов Microsoft:
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update
Установите пакеты SDK для.NET Core для версий, необходимых вашим приложениям. Например, чтобы установить пакеты SDK для.NET Core 3.1,.NET 6 и.NET 8:
sudo apt install -y dotnet-sdk-3.1
sudo apt install -y dotnet-sdk-6.0
sudo apt install -y dotnet-sdk-8.0
Шаг 2. Настройте каждое приложение
Чтобы запускать несколько приложений на одном сервере, необходимо убедиться, что они настроены на прослушивание разных портов, чтобы избежать конфликтов портов.
В своем первом приложении отредактируйте файл appsettings.json или appsettings.Production.json, указав уникальный порт:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5001"
}
}
}
}
Для второго приложения аналогичным образом измените его конфигурацию, чтобы гарантировать, что оно прослушивает другой порт, например 5001:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
}
Шаг 3. Запустите приложения
Перейдите в каталог каждого приложения и используйте команду dotnet run для их запуска, убедившись, что они работают на настроенных портах.
dotnet run
Альтернативно, для производственных сред или если вы предпочитаете не использовать команду dotnet run напрямую, опубликуйте свои приложения, чтобы создать автономное развертывание:
Публикуйте приложения с помощью следующих команд, адаптируя их к конкретной среде выполнения и путям приложений:
dotnet publish -c Release -r ubuntu.20.04-x64 --output /path/to/YourApp
Запускайте опубликованные приложения непосредственно из их каталогов публикации.
Шаг 4. Использование обратного прокси-сервера (необязательно)
В производственной среде или для упрощения конфигурации сети вы можете использовать обратный прокси-сервер, например Nginx или Apache. Эта конфигурация позволяет перенаправлять трафик в правильное приложение на основе URL-путей или доменных имен, даже если приложения локально прослушивают разные порты.
Шаг 5. Настройка системных служб (необязательно)
Чтобы ваши приложения запускались как службы и автоматически запускались при запуске, вы можете создать служебные файлы systemd для каждого приложения. Вот пример приложения.NET:
Создайте служебный файл в /etc/systemd/system/yourapp.service:
[Unit]
Description=.NET Web Application
[Service]
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/dotnet /path/to/app/YourApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-yourapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
Перезагрузите службу системного демона:
sudo systemctl daemon-reload
Включите и запустите службу:
sudo systemctl enable yourapp.service
sudo systemctl start yourapp.service
Повторите процесс для каждого приложения, используя уникальные имена служб и правильные пути.
Заключение
Параллельное выполнение нескольких приложений.NET Core на одном экземпляре Ubuntu — это простой процесс, которого можно достичь без Docker или контейнеризации. Тщательно управляя установками SDK, настраивая порты приложений и, при необходимости, настраивая обратные прокси-серверы и системные службы, вы можете эффективно развертывать несколько приложений.NET Core и управлять ими. Такой подход обеспечивает гибкость в стратегиях разработки и развертывания, удовлетворяя различным сценариям и требованиям к производительности.