Desplegar .NET 6 MVC en Linux

Empieza creando una carpeta en tu servidor Linux, por ejemplo con el nombre myweb. Recuerda configurar los permisos adecuados; el valor estándar por defecto es 0755. 0755 equivale a los permisos rwxr-xr-x:

Otros usuarios: Solo lectura y ejecución (r-x)

Propietario (tu cuenta de usuario): Acceso total de lectura, escritura y ejecución (rwx)

Miembros del grupo: Solo lectura y ejecución (r-x)

A continuación, publica tu proyecto desde Visual Studio. Cambia primero a la configuración de compilación Release y compila el proyecto. Después haz clic derecho sobre el proyecto y selecciona Publicar. Cuando termine la publicación, copia todos los archivos generados desde la carpeta de publicación al directorio myweb que acabas de crear usando un cliente FTP.

cd /usr/myweb

Una vez transferidos los archivos, ejecuta el siguiente comando para iniciar la aplicación en segundo plano. Al ejecutarse en segundo plano, el programa seguirá activo aunque cierres la ventana de conexión SSH remota de Linux.

sudo nohup dotnet yourprogramname.dll &Lenguaje del código: CSS (css)

El símbolo & al final del comando es fundamental para la ejecución en segundo plano. Si lo omites, la app funcionará en primer plano y al cerrar el terminal o pulsar Ctrl + C, el programa se detendrá de inmediato.

Aquí tienes mi ejemplo práctico: sudo nohup dotnet WebSite.dll &

Nota adicional importante

Configura los puertos antes de publicar. Abre el archivo appsettings.json dentro de tu proyecto .NET MVC.

Agrega la siguiente configuración como plantilla:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8080"
      }
    }
  }
}Lenguaje del código: JSON / JSON con comentarios (json)

Esta configuración acepta conexiones desde cualquier dirección IP a través del puerto 8080. También puedes usar Nginx como proxy inverso para gestionar el tráfico y alojar varios dominios independientes en un mismo servidor Linux.

Si solo usas Nginx como proxy inverso, no necesitas abrir este puerto en el cortafuegos. En ese caso, vincula el servicio únicamente a la dirección local de esta manera:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://127.0.0.1:8080"
      }
    }
  }
}Lenguaje del código: JSON / JSON con comentarios (json)

Con esta configuración, la aplicación solo acepta peticiones locales y bloquea todas las conexiones directas externas.

Mi objetivo final es acceder a esta aplicación mediante la dirección abc.com/hello.

Luego ejecuta sudo nohup dotnet WebSite.dll & para poner en marcha la aplicación.

Comprueba si la app funciona correctamente con este comando: ps -aux | grep WebSite.dll

Si aparece una entrada de proceso coincidente, significa que el servicio se ha iniciado con éxito.

Configurar proxy inverso de Nginx (salta esta sección si no necesitas funciones de proxy)

Si ya tienes Nginx instalado, su archivo de configuración principal se encuentra en /etc/nginx/nginx.conf

Edita el archivo de configuración del sitio ubicado en /etc/nginx/sites-available/default

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/web/xxxx;
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	# Sitio principal
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Punto clave: redirigir /hello a .NET
	location /hello {
		proxy_pass http://127.0.0.1:8080;
		proxy			

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *