Nous développons actuellement un site web (TYPO3 sous Apache) pour un client qui est soutenu par une application node.js/socket.io qui fournit des mises à jour en temps réel du contenu servi par le CMS.
Étant donné qu'il s'agit de notre premier projet node.js, je n'ai pas de meilleures pratiques à suivre en ce qui concerne la "configuration parfaite". J'ai donc passé un certain temps à rechercher des techniques de déploiement.
Il me reste quelques questions à régler pour obtenir une bonne installation :
-
est facile à déployer pour le client . C'est très important car notre site web sera intégré dans leur installation TYPO3 "en direct", qui sert une multitude de sites web et fonctionne sur des serveurs qui ne sont pas gérés par le client mais par une autre organisation (centralisée), ce qui rend les appels au support et les changements de serveur très lents.
-
La mise à jour devrait être facile. Comme nous l'avons mentionné, demander des redémarrages et effectuer des modifications sur le serveur est un processus lent. Idéalement, l'installation du nœud devrait redémarrer / mettre à jour lorsqu'elle reçoit des modifications qui sont poussées sur l'installation en direct en utilisant les éléments suivants
git
.
Déploiement
El consensus général semble être d'utiliser forever
quand il s'agit de déployer des applications de nœuds pour les faire fonctionner. J'ai testé forever
et il semble fonctionner correctement lorsqu'il est installé par npm install forever -g
(global). Cela nécessiterait cependant une assistance externe pour l'installation globale sur l'environnement réel, et je préférerais donc qu'elle soit exécutée à partir de la page d'accueil de l'application. node_modules
mais je n'ai pas été capable de créer une enveloppe solide pour le faire.
En outre, forever
fonctionne bien, mais il doit être démarré manuellement. Quelle serait la meilleure approche pour s'assurer qu'il est lancé au démarrage du serveur et qu'il continue à fonctionner ?
- Un simple
init.d
script ? - Écrire une enveloppe de chien de garde ?
- Une tâche du planificateur TYPO3 qui vérifie
forever
statut ?
Développement rapide / Redémarrage à la mise à jour
Nous sommes actuellement toujours dans la phase de développement du projet et chaque fois que je fais des changements à l'application node.js, je redémarre manuellement. node
o forever
. Cela fonctionne, mais c'est loin d'être idéal. Il y a plusieurs petits npm
des modules qui vérifient les modifications de fichiers et redémarrent node
sur les changements détectés, comme :
- Nodemon
- Superviseur Node.js
- Rebondir
-
Nodules (ce qui ne nécessite pas de redémarrer le nœud, donc peut être plus facile à combiner avec
forever
) - Up
Quelqu'un a-t-il de l'expérience dans ce domaine ?
Mise à jour : Pourquoi n'utilisez-vous pas simplement Cluster ?
El Module en grappe fournit une fonctionnalité similaire par le biais de la recharger mécanisme, mais ne fonctionne pas avec Node 0.5+. . Le site Module de base Cluster (Node 0.6+) qu'il a remplacé il n'a pas toutes ces fonctionnalités mais fournit seulement le clustering. Qui à son tour ne joue pas bien avec socket.io . Au moins pas sans utiliser Redis (ce qui est un problème pour nous, car nous ne pouvons pas imposer un autre service préalable au client).
--
Il est évident que j'essaie de trouver la solution la plus stable qui combine une mise à jour du démarrage avec forever
avant de remettre le projet au client et j'espère vraiment que quelqu'un a produit une combinaison de techniques qui a fait ses preuves.