Attualmente stiamo sviluppando un sito Web (TYPO3 in Apache) per un cliente supportato da un'applicazione node.js/socket.io che fornisce aggiornamenti in tempo reale al contenuto servito dal CMS.Installazione di Node.js per una facile implementazione e aggiornamento
Poiché questo è il nostro primo progetto node.js, non ho alcuna procedura da seguire quando si tratta di "l'installazione perfetta", quindi ho dedicato del tempo a ricercare le tecniche di implementazione.
Un paio di domande rimangono per me, per ottenere una buona messa a punto, che:
è facile per il cliente di implementare. Questo è molto importante perché il nostro sito web sarà integrato nella loro installazione "live" di TYPO3 che serve un'abbondanza di siti Web e funziona su server che non sono gestiti dal cliente ma un'altra organizzazione (centralizzata) che rende le chiamate di supporto e le modifiche del server un processo lento.
Dovrebbe essere facile da aggiornare. Come accennato, la richiesta di riavvio e l'esecuzione delle modifiche al server è un processo lento, quindi è consigliabile che l'installazione del nodo venga riavviata/aggiornata quando riceve le modifiche inviate all'installazione live utilizzando
git
.
Deployment
La general consensus sembra essere quella di utilizzare forever
quando si tratta di distribuzione di applicazioni nodo per tenerli in esecuzione. Ho provato forever
e sembra funzionare bene quando installato da npm install forever -g
(globale). Ciò richiederebbe comunque un'assistenza esterna per l'installazione globale sull'ambiente live, quindi preferirei che fosse in esecuzione dalla directory node_modules
dell'applicazione, ma non sono stato in grado di creare un wrapper solido per farlo.
Inoltre, forever
funziona correttamente, ma deve essere avviato manualmente. Quale sarebbe l'approccio migliore per garantire che venga avviato all'avvio del server e continui a funzionare?
- Un semplice script
init.d
? - Scrivere un wrapper watchdog?
- Un'attività scheduler TYPO3 che verifica lo stato
forever
?
Il rapido sviluppo/Restart aggiornata
Siamo attualmente ancora in fase di sviluppo del progetto e ogni volta che faccio modifiche all'applicazione node.js ricomincio manualmente node
o forever
. Questo funziona, ma è lontano dall'ideale. Ci sono diversi piccoli npm
moduli che verificano modifiche file e riavviare node
dalle variazioni rilevate, come:
- Nodemon
- Node.js Supervisor
- Bounce
- Nodules (che non richiede il riavvio nodo, così potrebbe essere più facile da combinare con
forever
) - Up
Qualcuno ha esperienza con qualcuno di questi?
Aggiornamento: Perché non usi solo Cluster?
Il Cluster module fornisce funzionalità simili tramite il meccanismo reload, ma doesn't work with Node 0.5+. Il core Cluster module (Node 0.6+) che lo ha sostituito non ha tutte queste caratteristiche ma fornisce solo il clustering. Che a sua volta doesn't play well with socket.io. Almeno not without using Redis (che è un problema per noi, perché non possiamo forzare un altro servizio prereq al cliente).
-
Ovviamente sto cercando di trovare la soluzione più stabile che combina un update-restarter con forever
prima di consegnare il progetto al cliente e sono davvero sperando chiunque ha prodotto una comprovata combinazione di tecniche.
ea chiunque altro pensi di Cluster: non è stato aggiornato negli ultimi tre anni. – oligofren