Applicazioni Node.js e Python
Un sito può essere un'applicazione Node.js o Python invece di PHP: Express, Next.js, NestJS, Django, Flask, FastAPI e simili. Si imposta nella pagina del sito, scheda Node.js / Python.
Come funziona
- L'applicazione gira come servizio di sistema con l'utente del sito: stessi permessi dei file del sito, nessun accesso agli altri siti. Il servizio ha un limite di memoria e di CPU (di base 512 MB e un core) e riparte da solo se si ferma per un errore.
- nginx resta davanti: certificato HTTPS, HTTP/2, WebSocket. Passa tutte le richieste all'applicazione, che deve ascoltare su
127.0.0.1sulla porta indicata nella variabilePORT(il pannello la sceglie e la imposta). - Le versioni vengono installate dal pannello quando servono: Node.js dai pacchetti ufficiali di nodejs.org (verificati con il loro SHA-256), Python con uv; ogni applicazione Python ha il suo ambiente virtuale
.venv.
Crearla
- Scegli linguaggio e versione, la cartella (dentro la home del sito, fuori da
public_html; di baseapp) e il comando di avvio. Vuoto vuol direnpm start(onode server.js) per Node.js epython app.pyper Python. Esempi:gunicorn -b 127.0.0.1:$PORT progetto.wsgi,uvicorn main:app --host 127.0.0.1 --port $PORT,node dist/main.js. - Aggiungi le variabili d'ambiente (una per riga,
NOME=valore):PORT,HOSTePATHle imposta il pannello,NODE_ENVvaleproductionse non lo cambi. - Premi Avvia l'applicazione. Se la cartella è vuota il pannello scrive un piccolo esempio che risponde subito; carica poi i tuoi file con il file manager o SFTP, oppure usa il deploy da Git.
Prima dell'avvio il pannello installa le dipendenze (npm ci o npm install se c'è package.json; uv pip install -r requirements.txt o del pyproject.toml per Python) ed esegue il comando di build, se c'è.
Deploy da Git
Indica il repository (https://… pubblico o git@github.com:azienda/app.git) e il ramo. Per un repository privato premi Mostra la chiave di deploy e aggiungila al repository come chiave in sola lettura (GitHub: Settings › Deploy keys; GitLab: Settings › Repository › Deploy keys).
Deploy scarica l'ultima versione del ramo, installa le dipendenze, esegue la build, riavvia il servizio e fa il controllo di salute: se l'applicazione non risponde (errore 500 o nessuna risposta sul percorso indicato, di base /), il deploy viene segnalato come non riuscito e trovi il motivo nel log.
Gestirla
- Riavvia, Ferma, Avvia, Controlla (controllo di salute immediato).
- Log: le ultime righe scritte dall'applicazione (quello che stampa su standard output ed errore).
- Togli l'applicazione ferma il servizio e il sito torna servito da PHP; i file nella cartella restano.
- I backup del sito includono la cartella dell'applicazione (è nella home del sito); il database, se usa MySQL o PostgreSQL, è nei backup anche lui.
Da sapere
- Su un sito con WordPress o con un'applicazione di Installa app non si può attivare un'applicazione Node.js o Python: usa un altro sito (per esempio un sottodominio come
api.example.com). - Il servizio può scrivere solo nella home del sito;
/tmpè privato per ogni applicazione.