La guía completa para alojar ASP.NET Core en Linux
Pasos y consejos importantes para una implementación segura y óptima de aplicaciones ASP.NET Core en Linux usando Kestrel y Nginx

La guía completa para alojar ASP.NET Core en Linux

Este artículo le enseñará a alojar aplicaciones ASP.NET Core en Linux. Aprenda a instalar el entorno de ejecución de .NET, configurar Kestrel y Nginx, y a considerar la seguridad, la optimización y la escalabilidad.
0 acciones
0
0
0
0

 

Hospedaje de ASP.NET Core en Linux: ¿por qué y cuándo?

ASP.NET Core funciona bien en Linux con *Kestrel*, y elegir esta plataforma para alojamiento puede proporcionar beneficios importantes, incluidos: Reducción de costos, compatibilidad con herramientas de código abierto y facilidad de contenedorización Esta opción es adecuada para sitios web, API, servicios en segundo plano y aplicaciones sensibles a la latencia, como juegos y comercio.

 

Requisitos previos y selección del servidor

 

Distribución de Linux y versión .NET

Las distribuciones sugeridas incluyen: Ubuntu LTS (20.04/22.04), Debian (11/12), y CentOS Stream o Rocky/Alma Son para producción. Para entornos con estricta seguridad de RHEL Utilice el entorno de ejecución y el SDK oficiales de Microsoft (por ejemplo, .NET 6/7/8).

 

Recursos de hardware y tipo de servicio

Para sitios web y API ligeras generalmente 1-2 vCPU, 1-4 GB de RAM y SSD NVMe Suficiente. Negocios y aplicaciones pesadas para 4+ vCPU y 8+ GB de RAM Y necesitan una red de alta velocidad.

Para comerciar y jugar con ping bajo Lo mejor es elegir un VPS localizado cerca de un centro de datos regional o de intercambio. Nuestra empresa cuenta con más de 85 ubicaciones en todo el mundo, lo que facilita la elección del centro de datos más cercano.

Utilice servidores gráficos (GPU) para IA/inferencia o renderizado; nuestra empresa ofrece servicio de GPU en la nube y servidor de cómputo con red de alta velocidad.

Para protegerse contra ataques, considere un servidor anti-DDoS y una red con BGP y CDN.

 

Instalación y configuración básicas (tiempo de ejecución .NET): ejemplo para Ubuntu

Para instalar el entorno de ejecución oficial de Microsoft, agregue el repositorio y luego instale el entorno de ejecución:

sudo apt update
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-runtime-7.0

A continuación, cree un directorio de aplicaciones y usuarios de servicio seguro:

sudo useradd -r -s /usr/sbin/nologin aspnetuser
sudo mkdir -p /var/www/myapp
sudo chown aspnetuser:aspnetuser /var/www/myapp

 

Implementación sin contenedores: Kestrel + systemd + Nginx

 

Publicar la aplicación y configurar systemd

Construya y publique la aplicación en la ruta del directorio de la aplicación:

dotnet publish -c Release -o /var/www/myapp

Archivo de unidad de ejemplo para systemd en /etc/systemd/system/myapp.service Lugar:

[Unit]
Description=My ASP.NET Core App
After=network.target

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll
Restart=always
# Safe User/Group
User=aspnetuser
Group=aspnetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Activación y ejecución del servicio:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo journalctl -u myapp -f

 

Configuración de Nginx como proxy inverso (terminación SSL)

Instalar Nginx y Certbot:

sudo apt install -y nginx certbot python3-certbot-nginx

Ejemplo de configuración de Nginx en /etc/nginx/sitios-disponibles/myapp Lugar:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass         http://127.0.0.1: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;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Obtenga un certificado SSL gratuito:

sudo certbot --nginx -d example.com -d www.example.com

 

Implementación con Docker y Docker Compose

Ejemplo de Dockerfile de varios pasos para producir una imagen pequeña y optimizada:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Ejemplo docker-compose.yml (también puedes usar nginx-proxy o Traefik):

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
  nginx:
    image: nginx:stable
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/letsencrypt

Para CI/CD, use GitLab CI o GitHub Actions para compilar, probar e implementar imágenes en el registro y luego subirlas al servidor. Nuestra empresa ofrece alojamiento de GitLab para equipos privados.

 

Seguridad y mejores prácticas

 

Red y firewall

Abra solo los puertos esenciales (80/443) y limite el acceso SSH a las direcciones requeridas.

sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp  # مثال
sudo ufw enable

 

TLS y endurecimiento

 

Ataques y protección

Utilice fail2ban para proteger SSH y la limitación de velocidad en Nginx. Utilice servidores anti-DDoS para aplicaciones sensibles; nuestra empresa ofrece paquetes anti-DDoS y CDN con BGP.

 

SELinux / AppArmor

En distribuciones con SELinux habilitado (RHEL/CentOS), asegúrese de que los contextos de archivos y puertos estén configurados correctamente. En otras distribuciones, use AppArmor para la generación de perfiles; no se recomienda el apagado permanente.

 

Optimización y monitorización del rendimiento

 

Configuración de conexión y sintonización de Kestrel

Utilice HTTP/2 y Keep-Alive en la capa de proxy inverso. Tenga en cuenta las limitaciones de Kestrel en ajustes de la aplicación.json Establecer (por ejemplo, Limits.MaxConcurrentConnections, MaxRequestBodySize).

Utilice la compresión de respuestas (Brotli/Gzip) para comprimir las respuestas:

servicios.AddResponseCompression(opciones => { opciones.EnableForHttps = true; });

 

Caché y reuniones

Utilice Redis para la caché distribuida y el estado de la sesión para permitir el escalamiento horizontal. Utilice CDN para contenido estático y así reducir la carga del servidor.

 

Monitoreo y registro

Combine el registro estructurado con Serilog o Microsoft.Extensions.Logging y envíelo a ELK/Graylog. Para las métricas, utilice dotnet-counters, el exportador de Prometheus (dotnet_exporter) y Grafana. Un APM como Application Insights es útil para el seguimiento.

 

Comparar ubicaciones y elegir la correcta según la aplicación

Para operar, es importante un ping bajo y la estabilidad: elige una ubicación cercana a plataformas de intercambio o redes privadas. Para jugar, se recomiendan servidores regionales y VPS para juegos con una red de alta velocidad.

Para IA y renderizado, utilice GPU Cloud y servidores de cómputo con NVMe y alto ancho de banda. Para sitios web y aplicaciones, se recomienda una ubicación cercana a los usuarios principales y una combinación de CDN y multiregión para una mejor disponibilidad. Nuestra empresa ofrece más de 85 ubicaciones globales y una red CDN y BGP.

 

Alta escalabilidad y disponibilidad

Utilice un balanceador de carga de capa 7 (Nginx/HAProxy/Cloud LB) o un balanceador de carga de centro de datos. Almacene las sesiones en Redis o en una base de datos compartida. Horizontalice los contenedores y las máquinas virtuales para el escalado automático; utilice HPA en Kubernetes. Utilice BGP anycast y CDN para la distribución global del tráfico.

 

Correcciones de errores comunes

Casos comunes y métodos de examen:

  • 502 Puerta de enlace incorrecta: verifique systemd con journalctl -u miaplicación, puerto local con ss-tlnp y permisos de archivos.
  • Problema con SSL: Comprobar renovación de certbot, acceder a la carpeta cert y referenciarla correctamente en Nginx.
  • Errores de archivo/permiso: Verifique el propietario/grupo correcto para el usuario del servicio.
  • Lentitud inesperada: utilice dotnet-counters y profiler para encontrar cuellos de botella en la CPU o en el GC.

 

Consejos prácticos para la producción (DevOps)

  • Utilice compilaciones Docker de varias etapas para reducir el tamaño de la imagen.
  • Almacene secretos en un administrador de secretos (Vault, secretos de GitLab CI).
  • Escriba puntos finales de salud y configure la actividad/preparación para el orquestador.
  • Realice automatización de compilación/prueba/implementación con GitLab CI o GitHub Actions.

 

Resumen y ofertas de servicios

Alojar ASP.NET Core en Linux es una opción **escalable, segura y extensible** para aplicaciones web y API. Para un alto rendimiento y disponibilidad, se recomienda implementar la aplicación con Kestrel + Nginx o en un contenedor con orquestador, priorizar TLS y el endurecimiento, usar Redis/DB para el estado y una CDN para el contenido estático.

Con más de 85 ubicaciones globales, GPU Cloud, servidores dedicados y de cómputo, VPS comerciales y de juegos, infraestructura anti-DDoS, alojamiento GitLab, CDN y red BGP, nuestra empresa ofrece soluciones de alojamiento y soporte para aplicaciones ASP.NET Core con diferentes planes.

También te puede gustar
API de Amazon Web Services

API y servicios de Amazon (AWS): Todo lo que necesitas saber

En el mundo actual, donde la tecnología de la información crece a pasos agigantados, el uso de la infraestructura en la nube se ha convertido en una necesidad fundamental para las empresas. Amazon Web Services, o AWS, es uno de los proveedores de servicios en la nube más grandes y potentes del mundo. En este artículo, explicaremos qué es una API, su función en AWS y los servicios más importantes de Amazon.
aumentar la velocidad del sitio

Soluciones para aumentar la velocidad del sitio web utilizando las herramientas de cPanel

La velocidad de carga del sitio web es uno de los factores más importantes para mejorar la experiencia del usuario (UX) y el SEO. Los usuarios que experimentan retrasos en la carga del sitio suelen abandonar la página, lo que aumenta la tasa de rebote. Exploraremos soluciones expertas para aumentar la velocidad del sitio mediante la configuración y las herramientas disponibles en cPanel.