好的,我有一个带有 Node/Express API 的应用程序,并且在本地主机上一切正常。我试图弄清楚如何使在 Apache 上运行的 CPanel 上的一切正常工作。客户端的东西,但我无法从后台获取任何数据。我已经搜索并查看了,是的,但我仍然不确定如何处理这个问题。我是否必须使用虚拟主机?如果是,我需要执行哪些具体步骤?
最佳答案
NodeJS 不在 Apache 或 Nginx 上运行。您在这些 Web 服务器中所能做的大部分事情就是设置反向代理。
NodeJS 有自己的网络服务器。 cPanel 在这方面不会帮助你,因为你只需要在你的服务器上安装 NodeJS(你必须有 SSH 访问根),然后从那里运行它。您可以守护您的 Node 进程以继续运行安装 PM2 或 Forever(NPM 包)。
这里有一个很好的答案(问之前搜索一下,到时候问题可能就解决了)。
Run node.js on cpanel hosting server
cPanel 通常运行 Apache 或其他在所有 cPanel/unix 帐户之间共享的网络服务器。 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 可能是面向公共(public) 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
相关 StackOverflow 问题
How to host a Node.Js application in shared hosting
Why node.js can't run on shared hosting?
值得指出的是,cPanel 尚未支持 NodeJS(截至 2019 年初)
关于mysql - Cpanel 上的 Express/NodeJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54011334/