Come sviluppare ASP.NET Framework 4.x su macOS
ServBay, attraverso un potente ambiente Mono integrato, semplifica lo sviluppo e il testing di ASP.NET Framework 1.1/2.0/3.x/4.x (fino alla versione 4.7.x) su macOS.
A partire dalla versione 1.12.0 di ServBay, abbiamo integrato Mono 6.14.0 e fornito un server di sviluppo XSP, offrendoti due modalità principali per eseguire le applicazioni ASP.NET Framework 4.x:
- Utilizzare XSP per lo sviluppo e il testing rapidi.
- Utilizzare Nginx + FastCGI per implementazioni più stabili e vicine all'ambiente di produzione.
Questo documento guiderà nella configurazione e nell'esecuzione del tuo progetto ASP.NET Framework 4.x nell'ambiente ServBay.
Prerequisiti
- Installare ServBay: Assicurati di avere installato ServBay v1.12.0 o superiore su macOS.
- Installare Mono:
- Apri l'applicazione ServBay.
- Nella barra di navigazione a sinistra, seleziona "Pacchetti".
- Nella lista dei pacchetti, trova la categoria ".NET" e clicca per espandere.
- Trova "Mono 6" (la versione dovrebbe essere 6.14.0 o superiore), premi il pulsante "Installa" a destra e attendi il completamento dell'installazione.
Preparare il tuo progetto ASP.NET
- File di progetto: Assicurati di avere un progetto di Applicazione Web o Sito Web ASP.NET Framework 4.x.
- Posizione consigliata: Ti consigliamo vivamente di collocare il tuo progetto web nella directory
www
gestita uniformemente da ServBay, ovvero/Applications/ServBay/www/
. Crea una sottodirectory separata per ogni progetto.- Esempio: Se il tuo progetto si chiama
MyWebApp
, il percorso consigliato è/Applications/ServBay/www/MyWebApp
. - Nei passaggi successivi, useremo
/Applications/ServBay/www/MyWebApp
come percorso di esempio. Assicurati di sostituirlo con il percorso reale del tuo progetto.
- Esempio: Se il tuo progetto si chiama
Metodo 1: Utilizzare XSP (server di sviluppo integrato)
XSP è un server web ASP.NET leggero e progettato specificamente per Mono, ideale per la fase di sviluppo e di test rapido. La versione di Mono 6 installata con ServBay include XSP4 (corrispondente ad ASP.NET 4.x).
Suggerimento
- Se desideri eseguire progetti ASP.NET 1.1, utilizza il comando
xsp
. - Se desideri eseguire progetti ASP.NET 2.0, utilizza il comando
xsp2
.
Passaggi:
Apri il terminale: Apri l'applicazione Terminal di macOS.
Naviga nella directory del progetto: Usa il comando
cd
per accedere alla directory principale del tuo progetto ASP.NET (la directory che contiene il fileweb.config
).bash# Esempio: accedi alla directory del progetto chiamato MyWebApp cd /Applications/ServBay/www/MyWebApp
1
2Avvia il server XSP: Nella root del progetto, esegui il seguente comando per avviare il server XSP4. Puoi specificare un numero di porta (ad esempio 8080 o 9000) per evitare conflitti con altri servizi in ServBay.
bash# Avvio del progetto attuale sulla porta 9000 xsp4 --port 9000
1
2xsp4
: invoca il server XSP per .NET 4.x.--port 9000
: specifica il numero di porta ascoltato dal server.
Accedi all'applicazione: Apri il tuo browser web e accedi a
http://localhost:9000
ohttp://127.0.0.1:9000
. Dovresti vedere la tua applicazione ASP.NET in esecuzione.Ferma il server: Quando hai completato lo sviluppo o il testing, torna alla finestra del terminale e premi
Ctrl + C
oInvio
per fermare il server XSP.
Vantaggi:
- Configurazione semplice e avvio rapido.
- Ideale per sviluppo e debugging locali.
Svantaggi:
- Prestazioni inferiori rispetto a server di produzione come Nginx.
- Funzionalità relativamente basilari, non emulano completamente l'ambiente di produzione.
Metodo 2: Utilizzare Nginx + FastCGI
Questo metodo utilizza Nginx gestito da ServBay come server web front-end, inoltrando le richieste dinamiche al processo di backend Mono (fastcgi-mono-server4
) tramite il protocollo FastCGI. Questo approccio è più vicino alla distribuzione in ambiente di produzione e offre prestazioni migliori.
Suggerimento
- Se desideri eseguire progetti ASP.NET 1.1, utilizza il comando
fastcgi-mono-server
. - Se desideri eseguire progetti ASP.NET 2.0, utilizza il comando
fastcgi-mono-server2
.
Passaggi:
Assicurati che Mono e Nginx siano installati e in esecuzione:
- Installa Mono 6 e Nginx tramite i pacchetti di ServBay.
- Nella sezione "Servizi" di ServBay, assicurati che il servizio Nginx sia attivo.
Prepara il progetto ASP.NET: Assicurati che il tuo progetto si trovi nel percorso consigliato, ad esempio
/Applications/ServBay/www/MyWebApp
.Avvia FastCGI Mono Server:
- Apri una nuova finestra del terminale.
- Esegui il processo
fastcgi-mono-server4
. Questo processo è responsabile dell'ascolto delle richieste FastCGI provenienti da Nginx ed eseguirà il tuo codice ASP.NET.bash# Esempio: avvia il servizio FastCGI per il progetto 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
: mappa il percorso radice del sito (/
) al percorso fisico del tuo progetto. Assicurati di sostituire/Applications/ServBay/www/MyWebApp
con la tua reale directory di progetto.--socket=tcp:127.0.0.1:9001
: specifica l'indirizzo e la porta TCP su cui il server FastCGI ascolterà. Assicurati che questa porta (ad esempio 9001) non sia occupata e corrisponda all'istruzionefastcgi_pass
nella configurazione di Nginx qui sotto.--loglevels=Standard --printlog
: (opzionale) stampa i log a livello standard nel terminale per facilitare il debug.
- Nota: Questa finestra del terminale deve rimanere aperta per eseguire il servizio FastCGI. Per esecuzioni prolungate, potresti dover utilizzare strumenti come
nohup
,screen
otmux
per mantenerlo in esecuzione in background.
Configura il sito Nginx:
Nella sezione "Siti" di ServBay.
Clicca su "Aggiungi sito" o scegli un sito esistente per modificarlo.
Imposta il nome del dominio: ad esempio
mywebapp.test
. ServBay lo aggiungerà automaticamente al file Hosts.Imposta la directory radice del sito: Molto importante! Imposta questo valore sul percorso reale del tuo progetto ASP.NET, ad esempio
/Applications/ServBay/www/MyWebApp
. Questo configura correttamente l'istruzioneroot
nella configurazione di Nginx.Importante: controlla/modifica il file di configurazione di Nginx: clicca sulla casella di selezione "Configurazione personalizzata" nell'angolo in alto a destra delle impostazioni del sito. ServBay genererà una configurazione base in base alla directory radice impostata. Devi assicurarti che le configurazioni
location /
e@mono
(o altre blocchi di denominazione simile) siano corrette per inoltrare le richieste al FastCGI Mono Server.Un esempio della configurazione generata automaticamente da ServBay, da controllare o aggiungere, si può vedere di seguito:
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; # Assicurati che il certificato corrisponda al percorso reale ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # Assicurati che il certificato corrisponda al percorso reale server_name mywebapp.test; # Dovrebbe corrispondere al dominio impostato in ServBay root /Applications/ServBay/www/MyWebApp; # **Assicurati** che questo corrisponda alla directory radice impostata index index.html index.htm default.aspx Default.aspx; # Aggiungi il documento predefinito ASP.NET location / { try_files $uri $uri/ @mono; # Prova file statici, altrimenti inoltra a @mono } # (opzionale, ma raccomandato) Nginx gestisce direttamente file statici comuni # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # Inoltra la richiesta al FastCGI Mono Server # **La porta deve** corrispondere a quella specificata dal --socket all'avvio di fastcgi-mono-server4 fastcgi_pass 127.0.0.1:9001; # Parametri FastCGI necessari include fastcgi_params; # SCRIPT_FILENAME viene impostato correttamente in base all'istruzione root e $fastcgi_script_name fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBay potrebbe anche includere altre configurazioni predefinite, come log, accesso e controlli # 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
43Salva la configurazione e riavvia Nginx: Salva il file di configurazione di Nginx. ServBay ricaricherà automaticamente la configurazione di Nginx dopo il salvataggio. Se ci sono errori nella configurazione, ServBay fornirà un messaggio di errore. Se necessario, puoi riavviare manualmente Nginx nella pagina "Servizi" di ServBay.
Accesso all'applicazione: Apri il browser e accedi al nome di dominio configurato in Nginx (ad esempio
https://mywebapp.test
, nota l'uso del protocollo HTTPS). Nginx inoltrerà la richiesta afastcgi-mono-server4
, che eseguirà il tuo codice ASP.NET.
Vantaggi:
- Prestazioni migliori e maggiore stabilità.
- Modalità di distribuzione più vicina all'ambiente di produzione.
- Può sfruttare le funzionalità avanzate di Nginx per la gestione di file statici, bilanciamento del carico, SSL e altro.
- Maggiore integrazione con la gestione dei siti di ServBay, gestione dei domini e file Hosts.
Svantaggi:
- Configurazione relativamente più complessa rispetto a XSP.
- Richiede la gestione manuale del processo
fastcgi-mono-server4
.
Come scegliere
- Per sviluppo rapido, debugging e test semplici, utilizzare XSP è il modo più conveniente.
- Per test che richiedono prestazioni superiori e più vicine all'ambiente di produzione, o se si desidera sfruttare le funzionalità avanzate di Nginx e le capacità di gestione dei siti di ServBay, la scelta migliore è Nginx + FastCGI.
Considerazioni e risoluzione dei problemi
- Permessi dei file: Assicurati che il processo Nginx (di solito gestito da ServBay) e l'utente macOS che esegue
fastcgi-mono-server4
abbiano i permessi di lettura sui file del tuo progetto (situati in/Applications/ServBay/www/YourProjectName
). Potrebbe essere necessario modificare i permessi della directory (chmod
ochown
). - Percorso: Verifica attentamente che il percorso nel file di configurazione Nginx (
istruzione root
) e il percorso del comandofastcgi-mono-server4
(parametro --applications
) siano assolutamente corretti e puntino alla directory che contieneweb.config
. - Conflitti di porta: Assicurati che le porte utilizzate da XSP o
fastcgi-mono-server4
(negli esempi 9000 o 9001) non siano già occupate da altre applicazioni. - Log:
- Controlla i log di output nel terminale al momento dell'avvio di
fastcgi-mono-server4
. - Controlla i log di errore di Nginx. Puoi trovare il percorso del log di errore per il sito specifico nelle impostazioni di ServBay (di solito in
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
).
- Controlla i log di output nel terminale al momento dell'avvio di
- Compatibilità della versione Mono: Mono 6.14.0 è compatibile con .NET Framework da 1.1 fino a circa 4.7.2. Se utilizzi funzionalità di versioni superiori di .NET Framework, considera di utilizzare .NET Core o .NET installato ufficialmente tramite ServBay.
Grazie all'ambiente Mono 6 integrato in ServBay e alla struttura di progetto consigliata, sviluppare e far funzionare applicazioni ASP.NET Framework 4.x su macOS diventa più normale e conveniente. Speriamo che questo documento ti aiuti a iniziare con successo il tuo lavoro di sviluppo!