Cómo desarrollar ASP.NET Framework 4.x en macOS
ServBay, a través de su potente entorno Mono integrado, hace que el desarrollo y la prueba de ASP.NET Framework 1.1/2.0/3.x/4.x (hasta 4.7.x) en macOS sea sencillo y viable.
A partir de la versión ServBay v1.12.0, hemos integrado Mono 6.14.0 y un servidor de desarrollo XSP, ofreciéndole dos formas principales de ejecutar aplicaciones ASP.NET Framework 4.x:
- Utilizando XSP para un desarrollo y prueba rápidos.
- O implementando una aplicación más estable con Nginx + FastCGI, más cercana al entorno de producción.
Este documento le guiará sobre cómo configurar y ejecutar su proyecto ASP.NET Framework 4.x en el entorno de ServBay.
Requisitos previos
- Instalar ServBay: Asegúrese de que ha instalado ServBay v1.12.0 o superior en macOS.
- Instalar Mono:
- Abra la aplicación ServBay.
- En la barra de navegación izquierda, seleccione "Paquetes".
- En la lista de paquetes, encuentre la categoría ".NET" y haga clic para expandirla.
- Busque "Mono 6" (la versión debe ser 6.14.0 o superior), haga clic en el botón "Instalar" a la derecha y espere a que se complete la instalación.
Preparar su proyecto ASP.NET
- Archivo del proyecto: Asegúrese de tener un proyecto de aplicación web o sitio web ASP.NET Framework 4.x.
- Ubicación recomendada: Recomendamos encarecidamente colocar su proyecto web en el directorio
www
administrado uniformemente por ServBay, es decir, en/Applications/ServBay/www/
. Cree un subdirectorio separado para cada proyecto.- Ejemplo: Si el nombre de su proyecto es
MyWebApp
, la ruta recomendada sería/Applications/ServBay/www/MyWebApp
. - En los pasos siguientes, utilizaremos
/Applications/ServBay/www/MyWebApp
como ruta de ejemplo. Asegúrese de reemplazarlo con la ruta real de su proyecto.
- Ejemplo: Si el nombre de su proyecto es
Método 1: Usando XSP (servidor de desarrollo integrado)
XSP es un servidor web ASP.NET ligero diseñado específicamente para Mono, ideal para las etapas de desarrollo y prueba rápida. El paquete Mono 6 instalado en ServBay incluye XSP4 (para ASP.NET 4.x).
Sugerencia
- Si desea ejecutar un proyecto de ASP.NET 1.1, use el comando
xsp
. - Si desea ejecutar un proyecto de ASP.NET 2.0, use el comando
xsp2
.
Pasos:
Abrir la terminal: Abra la aplicación terminal de macOS (Terminal).
Navegar al directorio del proyecto: Utilice el comando
cd
para entrar en el directorio raíz de su proyecto ASP.NET (el directorio que contiene el archivoweb.config
).bash# Ejemplo: Entrar en el directorio del proyecto llamado MyWebApp cd /Applications/ServBay/www/MyWebApp
1
2Iniciar el servidor XSP: En el directorio raíz del proyecto, ejecute el siguiente comando para iniciar el servidor XSP4. Puede especificar un número de puerto (como 8080 o 9000) para evitar conflictos con otros servicios en ServBay.
bash# Iniciar el proyecto en el puerto 9000 xsp4 --port 9000
1
2xsp4
: Llama al servidor XSP correspondiente a .NET 4.x.--port 9000
: Especifica el número de puerto que escuchará el servidor.
Acceder a la aplicación: Abra su navegador web y acceda a
http://localhost:9000
ohttp://127.0.0.1:9000
. Debería ver su aplicación ASP.NET en funcionamiento.Detener el servidor: Cuando haya terminado de desarrollar o probar, regrese a la ventana de la terminal y presione
Ctrl + C
oEnter
para detener el servidor XSP.
Ventajas:
- Configuración simple y arranque rápido.
- Muy adecuado para desarrollo y depuración local.
Desventajas:
- Menor rendimiento en comparación con servidores de producción como Nginx.
- Funcionalidad relativamente básica, no simula completamente el entorno de producción.
Método 2: Usando Nginx + FastCGI
Este método utiliza Nginx, gestionado por ServBay, como servidor web frontal y envía solicitudes dinámicas al proceso Mono en backend (fastcgi-mono-server4
) usando el protocolo FastCGI. Este enfoque se asemeja más a la implementación en producción y proporciona un mejor rendimiento.
Sugerencia
- Si desea ejecutar un proyecto de ASP.NET 1.1, use el comando
fastcgi-mono-server
. - Si desea ejecutar un proyecto de ASP.NET 2.0, use el comando
fastcgi-mono-server2
.
Pasos:
Asegúrese de que Mono y Nginx estén instalados y en funcionamiento:
- Instale Mono 6 y Nginx a través de ServBay en "Paquetes".
- En la sección de "Servicios" de ServBay, asegúrese de que el servicio Nginx esté iniciado.
Preparar el proyecto ASP.NET: Asegúrese de que su proyecto esté en la ruta recomendada, por ejemplo,
/Applications/ServBay/www/MyWebApp
.Iniciar el servicio FastCGI Mono:
- Abra una nueva ventana de terminal.
- Ejecute el proceso
fastcgi-mono-server4
. Este proceso es responsable de escuchar las solicitudes FastCGI de Nginx y ejecutar su código ASP.NET.bash# Ejemplo: Iniciar el servicio FastCGI para el proyecto MyWebApp fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5--applications=/:/Applications/ServBay/www/MyWebApp
: Mapea la ruta raíz del sitio (/
) a la ruta física de su proyecto. Asegúrese de reemplazar/Applications/ServBay/www/MyWebApp
con la ruta real de su proyecto.--socket=tcp:127.0.0.1:9001
: Especifica la dirección y el puerto TCP que escuchará el servidor FastCGI. Asegúrese de que este puerto (por ejemplo, 9001) no esté en uso y que coincida con la directivafastcgi_pass
en la configuración de Nginx a continuación.--loglevels=Standard --printlog
: (opcional) Imprime en la terminal los registros de nivel estándar para facilitar la depuración.
- Nota: Esta ventana de terminal debe permanecer abierta para ejecutar el servicio FastCGI. Para ejecuciones prolongadas, considere usar herramientas como
nohup
oscreen
/tmux
para ejecutarlo en segundo plano.
Configurar el sitio de Nginx:
En ServBay, dirígete a la sección de "Sitios".
Haga clic en "Agregar sitio" o seleccione un sitio existente para editarlo.
Establecer el dominio: Por ejemplo,
mywebapp.test
. ServBay lo añadirá automáticamente al archivo Hosts.Establecer el directorio raíz del sitio: ¡Muy importante! Establezca esto como la ruta real de su proyecto ASP.NET, por ejemplo,
/Applications/ServBay/www/MyWebApp
. Esto configurará correctamente la directivaroot
en la configuración de Nginx.Clave: Revisar/Editar el archivo de configuración de Nginx: Haga clic en el cuadro de selección "Configuración personalizada" en la esquina superior derecha de la configuración del sitio. ServBay generará una configuración básica según la ruta raíz de su sitio. Necesitará asegurarse de que la configuración de
location /
y@mono
(u otros bloques de ubicación con nombres similares) esté correcta para dirigir las solicitudes al FastCGI Mono Server.Un ejemplo de parte de una configuración generada automáticamente por ServBay que necesita ser revisada o añadida es la siguiente:
nginxserver { listen 443; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:ServBay:10m; ssl_session_tickets off; ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.crt; # Asegúrese de que el certificado coincida con la ruta real ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # Asegúrese de que el certificado coincida con la ruta real server_name mywebapp.test; # Debe coincidir con el dominio que configuró en ServBay root /Applications/ServBay/www/MyWebApp; # **Asegúrese** de que esta ruta coincida con el directorio raíz del sitio que configuró index index.html index.htm default.aspx Default.aspx; # Añadir documentos por defecto de ASP.NET location / { try_files $uri $uri/ @mono; # Intentar archivos estáticos, de lo contrario, enviar al @mono para su procesamiento } # (opcional, pero recomendado) Nginx maneja directamente los archivos estáticos comunes # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # Pasa la solicitud al FastCGI Mono Server # **El puerto debe** coincidir con el especificado al iniciar fastcgi-mono-server4 con el parámetro --socket fastcgi_pass 127.0.0.1:9001; # Parámetros necesarios para FastCGI include fastcgi_params; # SCRIPT_FILENAME se configura correctamente basado en la directiva root y $fastcgi_script_name fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBay puede incluir otras configuraciones predeterminadas, como logs, control de acceso, etc. # access_log /Applications/ServBay/logs/nginx/mywebapp.test.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.test.error.log; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Guardar la configuración y reiniciar Nginx: Guarde el archivo de configuración de Nginx. ServBay volverá a cargar automáticamente la configuración de Nginx al guardar. Si hay un error en la configuración, ServBay mostrará un mensaje de error. Si es necesario, puede reiniciar manualmente Nginx en la página de "Servicios" de ServBay.
Acceder a la aplicación: Abra el navegador y acceda al nombre de dominio que configuró en Nginx (por ejemplo,
https://mywebapp.test
, asegurándose de usar el protocolo HTTPS). Nginx redirigirá la solicitud alfastcgi-mono-server4
, que ejecutará su código ASP.NET.
Ventajas:
- Mejor rendimiento y mayor estabilidad.
- Más cerca de un enfoque de implementación en producción.
- Puede aprovechar Nginx para manejar archivos estáticos, balanceo de carga, SSL, y otras funciones avanzadas.
- Mayor integración con la gestión de sitios, dominios y Hosts en ServBay.
Desventajas:
- La configuración es relativamente más compleja que la de XSP.
- Se requiere gestionar manualmente el proceso
fastcgi-mono-server4
.
Cómo elegir
- Para desarrollo rápido, depuración y pruebas simples, usar XSP es la forma más conveniente.
- Para pruebas de mayor rendimiento, más cerca de un entorno de producción, o si desea aprovechar las características avanzadas de Nginx y las funciones de gestión de sitios de ServBay, elegir el modo Nginx + FastCGI es la mejor opción.
Consideraciones y solución de problemas
- Permisos de archivo: Asegúrese de que el proceso Nginx (generalmente administrado por ServBay) y el usuario de macOS que ejecuta
fastcgi-mono-server4
tengan permisos de lectura sobre sus archivos de proyecto (localizados en/Applications/ServBay/www/YourProjectName
). A veces, puede que necesite ajustar los permisos de los directorios (chmod
ochown
). - Ruta: Verifique cuidadosamente que la configuración de Nginx (
directiva root
) y el comandofastcgi-mono-server4
(parámetro --applications
) apunten correctamente al directorio que contieneweb.config
. - Conflictos de puerto: Asegúrese de que los puertos utilizados por XSP o
fastcgi-mono-server4
(9000 o 9001 en el ejemplo) no estén ocupados por otras aplicaciones. - Logs:
- Revise los registros de salida en la terminal al iniciar
fastcgi-mono-server4
. - Revise los registros de error de Nginx. Puede encontrar la ruta del registro de errores del sitio correspondiente en la configuración del sitio de ServBay (generalmente en
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
).
- Revise los registros de salida en la terminal al iniciar
- Compatibilidad de versiones de Mono: Mono 6.14.0 es compatible desde .NET Framework 1.1 hasta .NET Framework 4.7.2 aproximadamente. Si utiliza características de una versión superior de .NET Framework, instale la versión oficial de .NET Core o .NET desde ServBay.
Con el entorno Mono 6 integrado y la estructura de proyecto recomendada por ServBay, el desarrollo y la ejecución de aplicaciones ASP.NET Framework 4.x en macOS se vuelve más estándar y conveniente. ¡Esperamos que este documento le ayude a comenzar su trabajo de desarrollo con éxito!