Introducción
Desarrollar una aplicación C# es solo la mitad del trabajo. Para que tu proyecto esté disponible para los usuarios en Internet, es necesario desplegarlo en un servidor. Un Servidor Privado Virtual (VPS) es la solución ideal para alojar aplicaciones .NET, ya que te da control total sobre el entorno y te permite configurarlo todo según tus necesidades específicas.
En este artículo, analizaremos el proceso completo de despliegue de una aplicación C# (ASP.NET Core) en un VPS con Linux (Ubuntu 22.04). Aprenderás cómo preparar el servidor, instalar el software necesario, publicar la aplicación y configurar el servidor web para que funcione con ella. Todos los pasos están acompañados de ejemplos de código y comandos.
1. Preparación del VPS e instalación del SDK de .NET
El primer paso es la preparación del servidor. Usaremos Ubuntu 22.04 LTS, ya que es uno de los sistemas operativos más populares y estables para servidores. Nos conectamos al VPS por SSH:
ssh user@your-server-ip
Después de iniciar sesión, actualizamos la lista de paquetes e instalamos las dependencias necesarias:
sudo apt update
sudo apt upgrade -y
sudo apt install wget apt-transport-https software-properties-common -y
Ahora agregamos el repositorio de Microsoft e instalamos el SDK de .NET. Para .NET 8 ejecutamos:
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 dotnet-sdk-8.0 -y
Verificamos la instalación:
dotnet --version
Si ves el número de versión (por ejemplo, 8.0.100), todo está instalado correctamente.
Importante: Si tu aplicación usa una base de datos (por ejemplo, PostgreSQL o SQLite), instala el paquete correspondiente. Para PostgreSQL:
sudo apt install postgresql postgresql-contrib -y
2. Publicación y carga de la aplicación al servidor
Ahora prepararemos la propia aplicación para el despliegue. En tu computadora local (donde desarrollas), abre la terminal en la raíz del proyecto y ejecuta la publicación en modo Release:
dotnet publish -c Release -o ./publish
Este comando creará una carpeta publish con todos los archivos necesarios para ejecutar la aplicación en el servidor. Ahora necesitas cargar esta carpeta al VPS. Usa SCP o SFTP. Ejemplo con SCP:
scp -r ./publish user@your-server-ip:/home/user/myapp
Donde myapp es el nombre de la carpeta donde se almacenará tu aplicación en el servidor.
Después de la carga, conéctate al servidor y mueve los archivos a una ubicación más adecuada, por ejemplo, a /var/www/myapp:
sudo mkdir -p /var/www/myapp
sudo cp -r /home/user/myapp/* /var/www/myapp/
No olvides asignar los permisos correctos a la carpeta:
sudo chown -R www-data:www-data /var/www/myapp
sudo chmod -R 755 /var/www/myapp
3. Configuración de systemd para el inicio automático
Para que tu aplicación se inicie automáticamente al arrancar el sistema y se reinicie en caso de fallo, crearemos un servicio systemd. Crea un archivo de configuración:
sudo nano /etc/systemd/system/myapp.service
Inserta el siguiente contenido (reemplaza las rutas y el nombre de usuario por los tuyos):
[Unit]
Description=My ASP.NET Core Application
After=network.target
[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/YourApp.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=myapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Guarda el archivo (Ctrl+O, luego Enter) y sal (Ctrl+X). Ahora recarga systemd e inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
Verifica el estado: