mysql - Cpanel 上的 Express/NodeJS 应用程序

标签 mysql reactjs apache express virtualhost

好的,我有一个带有 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/

相关文章:

mysql触发函数

javascript - 如何在 PHP CRUD 编辑操作中获取日期和复选框数据

javascript - React Javascript 中高阶函数中函数中的两个箭头是什么

php - 为什么 file_put_contents 从浏览器运行时有权限问题?

php - 更新 Centos 软件包吗?

java - 使用 Java 建立与 MySQL Amazon RDS (SSL/TLS) 的安全连接

reactjs - react-native - 无法访问组件函数内的 setState

javascript - 使用 NodeJS 数据库中的选项值选择表单

php - htaccess 单页条目不提供静态文件

php - 如何根据列之间的操作合并mysql中的行