Cpanel 上的 Express/NodeJS 应用程序

Posted

技术标签:

【中文标题】Cpanel 上的 Express/NodeJS 应用程序【英文标题】:Express/NodeJS application on Cpanel 【发布时间】:2019-05-29 09:30:11 【问题描述】:

好的,所以我有一个带有 Node/Express API 的应用程序,并且在 localhost 上一切正常。我试图弄清楚如何使一切都在 Apache 上运行的 CPanel 上运行。客户端的东西,但我无法从后台获取任何数据。我已经搜索并查看了,是的,但我仍然不确定如何处理这个问题。我必须使用虚拟主机吗?如果需要,我需要执行哪些具体步骤?

【问题讨论】:

【参考方案1】:

NodeJS 不能在 Apache 或 nginx 上运行。您可以在这些 Web 服务器中做的大部分事情就是设置反向代理。

NodeJS 有自己的网络服务器。 cPanel 在这方面不会帮助你,因为你只需要在你的服务器上安装 NodeJS(你必须有 SSH 访问根),然后从那里运行它。您可以守护您的 Node 进程以继续运行安装 PM2 或 Forever(NPM 包)。

这是一个很好的答案(问之前先搜索,到时候问题可能会解决)。

Run node.js on cpanel hosting server

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

关于配置 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

*** 相关问题

How to host a Node.Js application in shared hosting

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

值得指出的是,NodeJS 支持还没有来到 cPanel(早在 2019 年)

【讨论】:

以上是关于Cpanel 上的 Express/NodeJS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 cPanel 上的 django 项目中安装 mysqlclient 时出错

共享主机上的 Django 应用程序依赖项(Cpanel)

cPanel上的Zendframework 2

将文件 sql 导入 cpanel 服务器上的 phpmyadmin 时发生超时错误

更改 cPanel 密码后,Drupal 站点上的访问被拒绝

Cpanel 共享主机上的 Laravel