In questo articolo vedremo una configurazione VPS un file PM2 per avviare più applicazioni Node.js contemporaneamente sulla stessa VPS.
Innanzitutto, darò per scontato che abbiate già una configurazione VPS, con Node.js installato e Nginx pronto per gestire le richieste per diversi domini o sottodomini, ognuno dei quali punta a una specifica applicazione. Se non avete ancora configurato la vostra VPS in questo modo, vi consigliamo di farlo prima di proseguire.
Requisiti di Base
1) VPS operativa con accesso SSH.
2) Node.js installato.
3) Nginx configurato per gestire il proxy delle richieste verso le diverse applicazioni in esecuzione su porte differenti.
4) PM2 installato. PM2 è un manager per i processi di Node.js, che permette di gestire più applicazioni contemporaneamente e ne garantisce l’affidabilità in produzione.
Configurazione VPS di PM2 per Avviare Più Applicazioni
Quando gestite più applicazioni su una VPS, è importante avere un sistema affidabile per lanciare, gestire e monitorare le app. PM2 offre tutte queste funzionalità in modo semplice. Per esempio, se volete avviare due applicazioni differenti, potete utilizzare un file di configurazione simile al seguente:
module.exports = {
apps: [
{
name: "App1",
cwd: "./app1", // posizione dell'applicazione
script: "pnpm run start",
instances: 1, // avvia una sola istanza
exec_mode: "fork" // utilizza la modalità fork
},
{
name: "App2",
cwd: "./app2", // percorso della tua app2
script: "pnpm run start", // comando per avviare LandingPage
instances: 1, // avvia una sola istanza
exec_mode: "fork" // utilizza la modalità fork
}
]
};
Spiegazione del File di Configurazione VPS
- apps: Questo è l’array che contiene le configurazioni delle applicazioni che PM2 deve gestire.
- name: Ogni applicazione ha un nome univoco per essere facilmente identificabile. Qui abbiamo “App1” e “App2”.
- cwd (Current Working Directory): Specifica la directory di lavoro corrente dell’applicazione. Questo è il percorso in cui PM2 troverà il file package.json e dove eseguirà il comando per avviare l’applicazione.
- script: Questo è il comando che verrà eseguito per avviare l’applicazione. Nel nostro caso, usiamo
pnpm run start
, che eseguirà lo script di avvio specificato nel package.json di ciascuna applicazione. - instances: Definisce quante istanze dell’applicazione dovrebbero essere avviate. Per ora stiamo utilizzando un’unica istanza (1) per ciascuna applicazione, ma potete aumentare questo numero per abilitare il bilanciamento del carico.
- exec_mode: Specifica la modalità di esecuzione. La modalità fork è usata per avviare una singola istanza del processo. Se volete avviare più istanze in parallelo, potete passare alla modalità cluster.
Gestire le Applicazioni tramite il File di Configurazione
Una volta creato il file di configurazione (salvalo con un nome come pm2.config.js
), puoi avviare tutte le applicazioni configurate con un solo comando:
pm2 start pm2.config.js
Per stoppare tutte le applicazioni
pm2 stop pm2.config.js
Conclusioni
Con PM2, è possibile gestire più applicazioni su una VPS senza complicazioni, mantenendo le applicazioni attive e pronte a rispondere alle richieste, mentre Nginx funge da proxy per instradare correttamente il traffico ai diversi servizi. Questa configurazione permette di scalare le applicazioni e monitorarle facilmente con strumenti robusti.