在cpanel托管服务器上运行node.js.

问题描述 投票:13回答:4

它是一个简单的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}也不是有效的网址。如何访问我的node.js结果?请教我。谢谢。冰冰。

node.js cpanel
4个回答
17
投票

cPanel通常运行Apache或在所有cPanel / unix帐户之间共享的其他Web服务器。 Web服务器侦听端口80.根据请求的URL中的域名,Web服务器使用“虚拟主机”来确定哪个cPanel / unix帐户应该处理请求,即在哪个主目录中查找要服务的文件和要运行的脚本。如果URL仅包含IP地址,则cPanel必须默认为其中一个cPanel帐户。

通常,在没有root访问权限的情况下,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的这种设置并未得到所有网络托管公司的认可。 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

A2Hosting.com有关配置Node.js的知识库文章 - 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问题

How to host a Node.Js application in shared hosting

Why node.js can't run on shared hosting?


16
投票

使用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 name,以执行此操作,键入以下命令

由于mv是v10,0,0,x等js

5.现在安装node和npm二进制文件,键入下一个命令:

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

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.停止申请

pkill节点

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文件,然后退出文本编辑器。您网站的访问者将被重定向到侦听指定端口的Node.js应用程序。

如果您的应用程序无法启动,您选择的端口可能已在使用中。检查应用程序日志中是否有错误代码(如EADDRINUSE),指示端口正在使用中。如果是,请选择其他端口号,更新应用程序的配置和.htaccess文件,然后重试。


3
投票

您可以使用指向该cPanel服务器的任何域,而不是访问http://server-ip:8080尝试访问http://domain.tld:8080。默认情况下,cPanel不会在端口8080上绑定。请务必检查服务器上是否有防火墙。如果是,则允许tcp端口8080上的传入连接。根据您的WHM服务器配置,它也应该与http://server-ip:8080一起使用


2
投票

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 >>软件>> EasyApache 4)的Additional Packages部分中安装ea-nodejs10模块。

您可以在cPanel的应用程序管理器界面(cPanel >> Home >> Software >> Application Manager)中注册Node.js应用程序。有关更多信息,请阅读我们的Node.js安装指南文档。

要启用应用程序管理器:https://documentation.cpanel.net/display/80Docs/Application+Manager

您的托管服务提供商必须在WHM的功能管理器界面(WHM >>主页>>软件包>>功能管理器)中启用应用程序管理器功能。

您的托管服务提供商必须安装以下Apache模块:

qazxsw poi。注意:此模块禁用了Apache mod_userdir模块。

ea-ruby24-mod_passengermodule模块。注意:此模块允许您在注册应用程序时添加环境变量。有关环境变量的更多信息,请阅读下面的“环境变量”部分。

如果要注册Node.js™应用程序,请使用ea-apache24-mod_env模块。

你可以在这个Youtube视频中看到应用程序管理器的样子:ea-nodejs10

© www.soinside.com 2019 - 2024. All rights reserved.