Introducción
En el panorama de desarrollo moderno, la versatilidad y eficiencia en la entrega de aplicaciones son fundamentales. Esto es especialmente cierto cuando se trabaja con.NET Core, el marco multiplataforma de Microsoft, que ha experimentado una adopción significativa para crear una amplia gama de aplicaciones. Un escenario común implica ejecutar varias aplicaciones.NET Core en el mismo servidor. Esta guía proporciona una descripción general completa de cómo ejecutar varias aplicaciones.NET Core en paralelo en una única instancia de Ubuntu sin depender de Docker, y cubre todos los aspectos, desde la instalación hasta la configuración y la implementación.
Docker y la contenedorización ofrecen formas poderosas de aislar e implementar aplicaciones. Sin embargo, hay escenarios en los que es mejor ejecutar aplicaciones directamente en el sistema host, ya sea por simplicidad, conservación de recursos o requisitos de rendimiento específicos. Esta guía se centra en Ubuntu como sistema host, dada su popularidad y soporte dentro del ecosistema.NET Core.
Requisitos previos
- Servidor Ubuntu (se recomienda 18.04 LTS o posterior)
- Conocimientos básicos de la interfaz de línea de comandos.
- Aplicaciones.NET Core destinadas a diferentes versiones (por ejemplo, 3.1 y 6.0)
Paso 1: Instale los SDK de.NET
.NET Core admite la instalación en paralelo de diferentes versiones de tiempo de ejecución, los SDK para las versiones específicas de.NET Core a las que se dirigen sus aplicaciones. Esto le permite desarrollar y ejecutar aplicaciones para esas versiones en su servidor Ubuntu.
Actualice el índice del paquete e instale los paquetes de requisitos previos para garantizar que su sistema pueda acceder al repositorio de paquetes de 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
Instale los SDK de.NET Core para las versiones requeridas por sus aplicaciones. Por ejemplo, para instalar los SDK de.NET Core 3.1,.NET 6 y.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
Paso 2: configurar cada aplicación
Para ejecutar varias aplicaciones en el mismo servidor, debe asegurarse de que estén configuradas para escuchar en diferentes puertos para evitar conflictos de puertos.
En su primera aplicación, edite el archivo appsettings.json o appsettings.Production.json para especificar un puerto único:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5001"
}
}
}
}
Para la segunda aplicación, cambie su configuración de manera similar para asegurarse de que esté escuchando en un puerto diferente, como 5001:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
}
Paso 3: ejecuta las aplicaciones
Navegue hasta el directorio de cada aplicación y use el comando dotnet run para iniciarlas, asegurándose de que se estén ejecutando en los puertos configurados.
dotnet run
Como alternativa, para entornos de producción o si prefiere no utilizar el comando dotnet run directamente, publique sus aplicaciones para crear una implementación independiente:
Publique aplicaciones con los siguientes comandos, adaptándolas a rutas de aplicación y tiempos de ejecución específicos:
dotnet publish -c Release -r ubuntu.20.04-x64 --output /path/to/YourApp
Ejecute aplicaciones publicadas directamente desde sus directorios de publicación.
Paso 4: usar un proxy inverso (opcional)
En un entorno de producción o para simplificar las configuraciones de red, puede optar por utilizar un proxy inverso como Nginx o Apache. Esta configuración permite enrutar el tráfico a la aplicación correcta según las rutas URL o los nombres de dominio, incluso si las aplicaciones escuchan en diferentes puertos localmente.
Paso 5: configurar los servicios del sistema (opcional)
Para asegurarse de que sus aplicaciones se ejecuten como servicios y se inicien automáticamente al iniciarse, puede crear archivos de servicio systemd para cada aplicación. A continuación se muestra un ejemplo de una aplicación.NET:
Cree un archivo de servicio en /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
Vuelva a cargar el servicio del demonio del sistema:
sudo systemctl daemon-reload
Habilite e inicie el servicio:
sudo systemctl enable yourapp.service
sudo systemctl start yourapp.service
Repita el proceso para cada aplicación, asegurándose de utilizar nombres de servicio únicos y rutas correctas.
Conclusión
Ejecutar varias aplicaciones.NET Core en paralelo en una única instancia de Ubuntu es un proceso simple que se puede lograr sin Docker ni contenedorización. Al administrar cuidadosamente las instalaciones del SDK, configurar los puertos de aplicaciones y, opcionalmente, configurar los servidores proxy inversos y los servicios del sistema, puede implementar y administrar de manera eficiente múltiples aplicaciones.NET Core. Este enfoque ofrece flexibilidad en las estrategias de desarrollo e implementación, satisfaciendo una variedad de escenarios y requisitos de rendimiento.