web-dev-qa-db-fra.com

Exécuter node.js sur le serveur d'hébergement cpanel

C'est un simple code node.js.

var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type' : 'text/plain'});
    res.end('Hello World!');
}).listen(8080);

Je l'ai téléchargé sur le serveur d'hébergement cpanel et j'ai installé node.js, puis je l'ai exécuté. Si un serveur est un serveur normal, je peux vérifier le résultat du script en accédant à 'http: // {serverip}: 8080'. Mais cpanel héberge des domaines et des sous-domaines et chaque domaine correspond à tous les sites. Même http: // {serverip} n'est pas une URL valide. Comment puis-je accéder à mon résultat node.js? Veuillez m'apprendre. Merci. Bing Bing.

15
bb14816

cPanel exécute généralement Apache ou un autre serveur Web partagé entre tous les comptes cPanel/unix. Le serveur Web écoute sur le port 80. En fonction du nom de domaine indiqué dans l'URL demandée, le serveur Web utilise "Hébergement virtuel" pour déterminer quel compte cPanel/unix doit traiter la demande, c.-à-d. Dans quel répertoire de base trouver les fichiers à servir. et des scripts à exécuter. Si l'URL contient uniquement une adresse IP, cPanel doit utiliser l'un des comptes cPanel par défaut.

Normalement, sans accès root, une tâche exécutée par un compte cPanel ne peut pas écouter sur le port 80. En effet, les ports disponibles peuvent être assez restrictifs. Si 8080 ne fonctionne pas, essayez 60000. Pour accéder à un serveur node.js en cours d'exécution, vous devez connaître le numéro de port sur lequel il est en écoute. Comme il s’agit du seul travail à l’écoute sur ce port sur ce serveur, vous devriez pouvoir indiquer à votre navigateur le nom de domaine de l’un des comptes cPanel ou même l’adresse IP du serveur, en ajoutant le numéro de port à l’URL. Toutefois, il est typique d’utiliser le nom de domaine pour le compte cPanel exécutant le travail node.js, par exemple. http://cPanelDomainName.com:60000/ .

Bien sûr, le port 80 est le port par défaut pour les services Web, et relativement peu d'utilisateurs connaissent les numéros de port facultatifs dans les URL. Pour faciliter la tâche des utilisateurs, vous pouvez utiliser Apache pour "inverser les requêtes proxy" sur le port 80 et le port écouté par le processus node.js. Cela peut être fait en utilisant la directive Apache RewriteRule dans un fichier de configuration ou .htaccess. Cette procuration inversée des demandes présente également d’autres avantages, par exemple: Apache peut être une interface plus sécurisée, plus fiable et plus facile à gérer face à l’Internet public.

Malheureusement, cette configuration pour node.js n’est pas approuvée par toutes les sociétés d’hébergement Web. A2Hosting.com est une société d'hébergement qui le prend en charge, même pour ses offres d'hébergement mutualisé peu coûteuses. Ils ont également une description écrite claire du processus d'installation dans leur base de connaissances.

Enfin, il convient de noter que les développeurs de cPanel travaillent sur la prise en charge intégrée de node.js. "Si toutes les étoiles s'alignent, nous pourrions voir cette terre dès la version 68", c'est-à-dire peut-être au début de 2018.

Les références

Apache Virtual Hosting - http://httpd.Apache.org/docs/2.4/vhosts/

Directive Apache RewriteRule - http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html

Article de la base de connaissances A2Hosting.com sur la configuration de Node.js - https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts

thread de demande de fonctionnalité cPanel pour support node.js - https://features.cpanel.net/topic/nodejs-hosting

Questions StackOverflow associées

Comment héberger une application Node.Js dans un hébergement partagé

Pourquoi node.js ne peut pas fonctionner sur un hébergement partagé?

20
aap

Installer/Configurer NodeJS avec CPanel

1. Connectez-vous à votre compte à l'aide de SSH (cette option n'est pas activée pour l'équipe de support de votre compte).

2. Télécharger le NodeJS

wget https://nodejs.org/dist/latest/node-v10.0.0-linux-arm64.tar.xz

3. Extraire les fichiers NodeJS

tar xvf noeud-v10.0.0-linux-arm64.tar.xz

4. Maintenant, renommez le dossier en nom nodejs. Pour ce faire, tapez la commande suivante

mv node-v10.0.0-linux nodejs

5. Maintenant, installez les fichiers binaires node et npm, tapez les commandes suivantes:

mkdir ~/bin
cp nodejs/bin/node ~/bin
cd ~/bin
ln -s ../nodejs/lib/node_modules/npm/bin/npm-cli.js npm

6. Node.js et npm sont installés sur votre compte. Pour vérifier, tapez les commandes suivantes

noeud --version
npm --version

The ~/bin directory is in your path by default, which means you can run node and npm from any directory in your account.

7. Démarrer l'application Node.js

Nohup node my_app.js &

8. Arrêtez l'application

noeud de pkill

9. Intégration d'une application Node.js au serveur Web (facultatif)

Selon le type d’application Node.js que vous exécutez, vous pouvez vouloir y accéder à l’aide d’un navigateur Web. Pour ce faire, vous devez sélectionner un port inutilisé sur lequel écouter l'application Node.js, puis définir des règles de réécriture du serveur qui redirigent les visiteurs vers l'application.

Dans un éditeur de texte, ajoutez les lignes suivantes au fichier .htaccess du répertoire/home/username/public_html, où username représente le nom d'utilisateur de votre compte:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:XXXXX/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:XXXXX/$1 [P,L]

Dans les deux lignes RewriteRule, remplacez XXXXX par le port sur lequel votre application Node.js écoute. Pour exécuter une application Node.js sur un serveur géré, vous devez sélectionner un port non utilisé. Le numéro de port doit être compris entre 49152 et 65535 (inclus). Enregistrez les modifications dans le fichier .htaccess, puis quittez l'éditeur de texte. Les visiteurs de votre site Web sont redirigés vers l'application Node.js qui écoute sur le port spécifié.

Si votre application ne parvient pas à démarrer, le port que vous avez choisi est peut-être déjà utilisé. Recherchez dans le journal des applications des codes d'erreur tels que EADDRINUSE indiquant que le port est utilisé. Si tel est le cas, sélectionnez un autre numéro de port, mettez à jour la configuration de votre application et le fichier .htaccess, puis réessayez.

19
Matee Gojra

Vous pouvez utiliser n’importe quel domaine pointé sur ce serveur cPanel et au lieu d’accéder à http: // server-ip: 808 essayez d’accéder à http: //domain.tld: 808 . Par défaut, cPanel ne se lie pas sur le port 8080. Assurez-vous de l'existence d'un pare-feu sur le serveur. Si tel est le cas, autorisez les connexions entrantes sur le port TCP 8080. En fonction de la configuration de votre serveur WHM, il devrait également fonctionner avec http: // server-ip: 808

4
Bogdan Stoica

la version 80 de cPanel est compatible avec nodejs 10.x: https://documentation.cpanel.net/display/80Docs/80+Release+Notes#id-80ReleaseNotes-InstallanduseNode.jsapplications

Installer et utiliser les applications Node.js

Vous pouvez maintenant installer et utiliser les applications Node.js sur votre serveur. Pour utiliser Node.js, installez le module ea-nodejs10 dans la section Packages supplémentaires de l'interface EasyApache 4 de WHM (WHM >> Accueil >> Logiciels >> EasyApache 4).

Vous pouvez enregistrer des applications Node.js dans l'interface du gestionnaire d'applications de cPanel (cPanel >> Accueil >> Logiciels >> Gestionnaire d'applications). Pour plus d'informations, consultez notre documentation Guide to Node.js Installations.

Pour que le gestionnaire d'applications soit activé: https://documentation.cpanel.net/display/80Docs/Application+Manager

Votre fournisseur d'hébergement doit activer la fonctionnalité Gestionnaire d'applications dans l'interface Gestionnaire de fonctionnalités de WHM (WHM >> Accueil >> Packages >> Gestionnaire de fonctionnalités).

Votre fournisseur d'hébergement doit installer les modules Apache suivants:

Le ea-Ruby24-mod_passengermodule. Remarque: Ce module désactive le module mod_userdir d'Apache.

Le ea-Apache24-mod_env module. Remarque: Ce module vous permet d'ajouter des variables d'environnement lorsque vous enregistrez votre application. Pour plus d'informations sur les variables d'environnement, lisez la section Variables d'environnement ci-dessous.

Le ea-nodejs10 module si vous souhaitez enregistrer une application Node.js ™.

Vous pouvez voir à quoi ressemble le gestionnaire d’application dans cette vidéo Youtube: https://www.youtube.com/watch?v=ATxMYzLbRco

3
Savvas Radevic