Définition
Le gestionnaire d'application Node.js de CPANEL vous permettra d'installer une application Node.js avec les versions 6.x, 8.x, 9.x ou 10.x.
Il vous offre une interface utilisateur conviviale qui vous aidera à vous familiariser plus rapidement avec Node.js.
Procédure
Node.js est un environnement d'exécution open-source et multiplateforme vous permettant de créer un site web ou une application et de l'héberger sur un serveur, avec le langage JavaScript. Sur nos formules cPanel et CloudCP, nous vous mettons à disposition le gestionnaire d'application Node.js vous permettant de mettre en place une application Node.js sur votre formule d'hébergement web cPanel. Vous avez à disposition de la version 6.x jusqu'à la version 20.x inclus de Node.js.
Pour mettre à disposition à nos clients un environnement stable et robuste pour Node.js, nous intégrons vos applications Node.js avec le service web Apache grâce à l'outil Phusion Passenger.
Nous ne mettons pas en place un reverse proxy, et les applications Node.js ne peuvent pas s'exécuter en standalone avec son propre serveur web. Si vous avez l'habitude d'exécuter votre serveur Node.js avec une commande tel que npm run start ou pm2 start myapp, vous ne serez pas en mesure de faire cela sur nos formules d'hébergement cPanel. Si vous utilisez un framework, renseignez-vous de sa compatibilité avec Phusion Passenger.
Connectez-vous à votre interface de gestion cPanel et cliquez sur l'icône "Setup Node.js App".
Dans la page qui s'ensuit, cliquer sur le bouton "Create Application" pour ajouter une nouvelle application.
Remplissez ensuite les champs conformément aux besoins de votre application :
Cliquez ensuite sur le bouton "Create" une fois que votre application a été paramétrée.
Si votre application startup file n'existe pas encore, l'outil va créer immédiatement ce fichier avec un contenu à titre d'exemple. Cet exemple affichera « It works! » sur toutes les requêtes HTTP associés à celui-ci.
Voici le contenu de ce script d'exemple :
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var message = 'It works!\n', version = 'NodeJS ' + process.versions.node + '\n', response = [message, version].join('\n'); res.end(response); }); server.listen();
Vous pouvez également éditer le fichier package.json depuis l'interface pour ajouter des dépendances et installer ces dépendances avec le bouton « Run NPM Install » :
Notez qu'il faut redémarrer votre application si ses dépendances ont été modifiées.
Vous pouvez également définir des variables d'environnement dans la section Environment variables si votre application repose sur ces derniers pour obtenir certains paramètres.
L'utilisation du terminal en ligne de commande est partie intégrante de l'écosystème Node.js. Pour accéder à l'environnement de votre application depuis le terminal, connectez-vous à celui-ci (depuis le terminal web cPanel ou depuis un client SSH) et copiez la commande indiquée pour entrer dans l'environnement de votre application :
Cette action activera automatiquement le bon environnement virtuel pour votre application, incluant ainsi la bonne version de Node.js et NPM, ainsi que les dépendances installées dans l'environnement (au lieu d'être installé dans le dossier « node_modules » de votre dossier d'applications).
Pour déboguer une application Node.js, vous pouvez consulter le log d'erreur Apache. Le fichier log d'erreurs Apache contient :
Si vous avez défini manuellement la valeur PassengerLogFile dans le fichier .htaccess de votre site, la sortie STDOUT et STDERR ainsi que les erreurs liées à Passenger sont envoyés dans ce fichier au lieu du fichier log Apache.
Vous pouvez aussi mettre la valeur PassengerFriendlyErrorPages sur on dans votre fichier .htaccess pour afficher directement sur le navigateur web les erreurs liés au démarrage de votre application Node.js.
Raisons possibles : Votre application Node.js (ou l'une de ses dépendances) requiert une fonctionnalité spécifique dans la librairie C++, qui n'est actuellement pas présente sur le serveur en question. Ceci peut arriver sur nos formules cPanel muni du système d'exploitation CloudLinux 7 (un système d'exploitation basé sur CentOS / RHEL 7) alors que l'une de vos dépendances requiert RHEL 8 / CentOS 8 ou ultérieur.
Solution : Vous pouvez ouvrir une demande auprès du support pour demander à être migré sur un serveur muni d'un système d'exploitation CloudLinux 8.
Raisons possibles : Votre processus peut être arrêté par le serveur si celui-ci s'exécute au-delà du temps d'exécution et/ou quantité de ressource (CPU, RAM ...) autorisé sur votre formule d'hébergement. Vous pouvez consulter l'historique d'arrêt de processus depuis notre outil « Journaux » disponible depuis votre interface cPanel.
Solution : Vous pouvez limiter la mémoire RAM utilisée par npm avec la variable d'environnement NODE_OPTIONS comme suit :
NODE_OPTIONS='--max-old-space-size=2048' npm install
Cet exemple montre, par exemple, une limitation à 2048 Mio (2 Gio).
Raisons possibles :
Solutions :
Pour aller plus loin
Variables d'environnement : Généralement, les variables de projet sont globales et sont ajoutées à un fichier .env dans le répertoire de votre projet. vous pouvez configurer des variables d'environnement à partir de la page de configuration de chaque application. de cette façon, vous pouvez avoir la même variable pour différentes applications représentant différentes valeurs. pour ajouter une variable d'environnement il faut cliquer sur le bouton ADD VARIABLE et remplir les champs Name et Value correspondant.
Par exemple, vous pouvez ajouter une variable PORT avec le numéro du port comme valeur pour l'une de vos applications, puis utiliser la même variable PORT avec une valeur différente pour une autre application.
Vous pouvez entrer dans l'environnement virtuel de votre application via le terminal en utilisant la commande qui se trouve en dessous de la phrase Command for entering to virtual environment vous pourriez ainsi utiliser toutes les commandes NPM, et créer votre fichier package json en ligne de commande.