一尘不染

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

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


阅读 400

收藏
2020-07-07

共1个答案

一尘不染

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可能是面向公共Internet的更安全,可靠和可管理的前端。

不幸的是,并非所有网络托管公司都认可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

cPanel的功能要求主题为node.js的支持- https://features.cpanel.net/topic/nodejs-
hosting

2020-07-07