web-dev-qa-db-ja.com

cpanelホスティングサーバーでnode.jsを実行する

これは単純なnode.jsコードです。

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

Cpanelホスティングサーバーにアップロードし、node.jsをインストールして実行しました。サーバーが通常のサーバーである場合、「http:// {serverip}:8080」にアクセスしてスクリプトの結果を確認できます。しかし、cpanelでは、ドメインとサブドメインをホストしており、すべてのドメインはすべてのサイトと一致しています。 http:// {serverip}でも有効なURLではありません。 node.jsの結果にアクセスするにはどうすればよいですか?教えてください。ありがとう。ビンビン。

15
bb14816

cPanelは通常、すべてのcPanel/unixアカウントで共有されるApacheまたは別のWebサーバーを実行します。 Webサーバーはポート80でリッスンします。要求されたURLのドメイン名に応じて、Webサーバーは「仮想ホスティング」を使用して、どのcPanel/unixアカウントが要求を処理するか、つまりどのホームディレクトリでファイルを検索するかを判断しますおよび実行するスクリプト。 URLにIPアドレスのみが含まれる場合、cPanelはcPanelアカウントのいずれかにデフォルト設定する必要があります。

通常、ルートアクセスなしでは、cPanelアカウントで実行されるジョブはポート80でリッスンできません。実際、使用可能なポートは非​​常に制限されている可能性があります。 8080が機能しない場合は、60000を試すことができます。実行中のnode.jsサーバーにアクセスするには、リッスンしているポート番号が必要です。そのサーバー上のそのポートでリッスンする唯一のジョブであるため、任意のcPanelアカウントのドメイン名またはサーバーのIPアドレスをブラウザーに指定して、ポート番号をURLに追加できる必要があります。ただし、node.jsジョブを実行するcPanelアカウントにはドメイン名を使用するのが一般的です。 http://cPanelDomainName.com:60000/

もちろん、ポート80はWebサービスのデフォルトであり、URLのオプションのポート番号に慣れているユーザーは比較的少数です。ユーザーの作業を容易にするために、Apacheを使用して、ポート80のリクエストをnode.jsプロセスがリッスンしているポートに「リバースプロキシ」することができます。これは、構成ファイルまたは.htaccessファイルでApacheのRewriteRuleディレクティブを使用して実行できます。リクエストのこの逆プロキシには、おそらく他の利点もあります。 Apacheは、より安全で、信頼性が高く、管理可能なフロントエンドであり、公共のインターネットに直面する可能性があります。

残念ながら、node.jsのこのセットアップは、すべてのWebホスティング会社によって承認されているわけではありません。 A2Hosting.comは、安価な共有ホスティングサービスでもサポートしているホスティング会社です。また、ナレッジベースにセットアッププロセスの説明が明確に記載されています。

最後に、cPanelの開発者がビルトインのnode.jsサポートに取り組んでいることは注目に値します。 「すべての星が揃うと、バージョン68になるとすぐにこの土地が表示される可能性があります」、つまり、おそらく2018年前半です。

参照資料

Apache仮想ホスティング- http://httpd.Apache.org/docs/2.4/vhosts/

Apache RewriteRuleディレクティブ- http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html

Node.jsの設定に関するA2Hosting.comナレッジベース記事- https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts

node.jsサポート用のcPanel機能リクエストスレッド- https://features.cpanel.net/topic/nodejs-hosting

関連するStackOverflowの質問

共有ホスティングでNode.Jsアプリケーションをホストする方法

なぜnode.jsは共有ホスティングで実行できないのですか?

20
aap

CPanelを使用したNodeJSのインストール/セットアップ

1。 SSHを使用してアカウントにログインします(アカウントコンタクトサポートチームでは有効になっていません)。

2。 NodeJSをダウンロードします

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

3。 NodeJSファイルを抽出します

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

4。フォルダーの名前をnodejs名に変更し、次のコマンドを入力します

mv node-v10.0.0-linux nodejs

5。ノードとnpmバイナリをインストールし、次のコマンドを入力します:

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

6。 Node.jsとnpmがアカウントにインストールされます。確認するには、次のコマンドを入力します

node --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。 Node.jsアプリケーションを起動します

Nohupノードmy_app.js&

8。アプリケーションを停止します

スキルノード

9。 Node.jsアプリケーションとWebサーバーの統合(オプション)

実行しているNode.jsアプリケーションのタイプによっては、Webブラウザーを使用してアクセスできるようにしたい場合があります。これを行うには、Node.jsアプリケーションがリッスンする未使用のポートを選択し、訪問者をアプリケーションにリダイレクトするサーバー書き換えルールを定義する必要があります。

テキストエディタで、/ home/username/public_htmlディレクトリの.htaccessファイルに次の行を追加します。usernameはアカウントのユーザー名を表します:

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]

両方のRewriteRule行で、XXXXXをNode.jsアプリケーションがリッスンするポートに置き換えます。管理対象サーバーでNode.jsアプリケーションを実行するには、未使用のポートを選択する必要があり、ポート番号は49152〜65535(両端を含む)でなければなりません。変更を.htaccessファイルに保存してから、テキストエディターを終了します。 Webサイトへの訪問者は、指定されたポートでリッスンしているNode.jsアプリケーションにリダイレクトされます。

アプリケーションの起動に失敗した場合、選択したポートがすでに使用されている可能性があります。ポートが使用中であることを示すEADDRINUSEなどのエラーコードについては、アプリケーションログを確認してください。その場合は、別のポート番号を選択し、アプリケーションの構成と.htaccessファイルを更新してから、もう一度試してください。

19
Matee Gojra

そのcPanelサーバーを指すドメインを使用して、 http:// server-ip:808 にアクセスする代わりに http://domain.tld:808 にアクセスしてみてください。デフォルトでは、cPanelはポート8080にバインドしません。サーバーにファイアウォールがあるかどうかを確認してください。そうである場合は、TCPポート8080での着信接続を許可します。WHMサーバーの構成に応じて、 http:// server-ip:808 でも動作するはずです。

4
Bogdan Stoica

cPanelバージョン80にはnodejs 10.xのサポートがあります: https://documentation.cpanel.net/display/80Docs/80+Release+Notes#id-80ReleaseNotes-InstallanduseNode.jsapplications

Node.jsアプリケーションをインストールして使用する

これで、サーバーにNode.jsアプリケーションをインストールして使用できます。 Node.jsを使用するには、WHMのEasyApache 4インターフェイス(WHM >> Home >> Software >> EasyApache 4)のAdditional Packagesセクションにea-nodejs10モジュールをインストールします。

Node.jsアプリケーションは、cPanelのアプリケーションマネージャーインターフェイス(cPanel >>ホーム>>ソフトウェア>>アプリケーションマネージャー)で登録できます。詳細については、Node.jsインストールガイドのガイドを参照してください。

Application Managerを有効にするには: https://documentation.cpanel.net/display/80Docs/Application+Manager

ホスティングプロバイダーは、WHMの機能マネージャーインターフェイス(WHM >>ホーム>>パッケージ>>機能マネージャー)でアプリケーションマネージャー機能を有効にする必要があります。

ホスティングプロバイダーは、次のApacheモジュールをインストールする必要があります。

ea-Ruby24-mod_passengermodule。注:このモジュールは、Apacheのmod_userdirモジュールを無効にします。

ea-Apache24-mod_envモジュール。注:このモジュールを使用すると、アプリケーションを登録するときに環境変数を追加できます。環境変数の詳細については、以下の「環境変数」セクションをご覧ください。

ea-nodejs10 Node.js™アプリケーションを登録する場合のモジュール。

このYoutubeビデオでアプリケーションマネージャーの外観を確認できます。 https://www.youtube.com/watch?v=ATxMYzLbRco

3
Savvas Radevic