这是一个简单的node.js代码。
UPDATE TASK SET all_done=1 WHERE t_id NOT in (SELECT distinct t_id from subtask where done=0)
我将它上传到cpanel托管服务器并安装了node.js并运行它。 如果服务器是普通服务器,我可以通过访问' http:// {serverip}:8080'来检查脚本结果。但是在cpanel上托管域和子域,每个域都匹配每个域。甚至http:// {serverip}也不是有效的网址。 如何访问我的node.js结果? 请教我。 谢谢。 冰冰。
答案 0 :(得分:16)
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
答案 1 :(得分:14)
1。使用SSH登录到您的帐户(您的帐户未启用该功能) 请与支持小组联系。)
2。下载NodeJS
wget https://nodejs.org/dist/latest/node-v10.0.0-linux-arm64.tar.xz
3。提取NodeJS文件
tar xvf节点-v10.0.0-linux-arm64.tar.xz
4。现在将文件夹重命名为nodejs名称,执行以下操作 命令
mv node-v10.0.0-linux nodejs
5。现在安装node和npm二进制文件,键入以下命令:
mkdir〜/ bin
cp nodejs / bin / node〜/ bin
cd〜/ bin
ln -s ../nodejs/lib/node_modules/npm/bin/npm-cli.js npm
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。停止应用程序
杀死节点
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文件,然后重试。
答案 2 :(得分:3)
您可以使用指向该cPanel服务器的任何域,而不是访问http://server-ip:8080尝试访问http://domain.tld:8080。默认情况下,cPanel不会在端口8080上绑定。请务必检查服务器上是否有防火墙。如果是,则允许tcp端口8080上的传入连接。根据您的WHM服务器配置,它也应该与http://server-ip:8080
一起使用答案 3 :(得分: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,在附加程序包中安装ea-nodejs10模块 WHM的EasyApache 4接口部分(WHM >>主页>>软件>> EasyApache 4)。
您可以在cPanel的应用程序管理器中注册Node.js应用程序 界面(cPanel >>主页>>软件>> Application Manager)。对于 有关更多信息,请阅读我们的Node.js安装指南。 文档。
要启用Application Manager:https://documentation.cpanel.net/display/80Docs/Application+Manager
您的托管服务提供商必须在中启用“应用程序管理器”功能 WHM的功能管理器界面(WHM >>主页>>程序包>>功能 经理)。
您的托管服务提供商必须安装以下Apache模块:
ea-ruby24-mod_passengermodule
。注意:此模块禁用Apache的 mod_userdir模块。
ea-apache24-mod_env
模块。注意:此模块允许您添加 注册应用程序时使用环境变量。欲了解更多 有关环境变量的信息,请阅读环境 下面的变量部分。如果要注册Node.js™应用程序,则使用
ea-nodejs10
模块。
您可以在以下YouTube视频中看到应用程序管理器的外观: https://www.youtube.com/watch?v=ATxMYzLbRco
答案 4 :(得分:1)
是可以的 ,但是它具有很少的依赖性,您的cpanel托管提供商或您选择的计划可能会或可能不支持这种依赖性。
以下我提到的步骤仅出于演示目的。如果您是学生或只是想玩它,可以尝试一下。我不是安全专家,所以从安全角度来看,我真的不知道它有多好。
话虽如此,让我们看看我如何配置它。我有托管服务商cpanel托管订阅,请执行以下步骤:
启用SSH访问
通过ssh连接到共享计算机
检查您的Linux发行版并下载并设置节点js
就我而言,以下是该命令:
Downloading node & extracting it using curl
curl https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.gz |tar xz
这将下载并提取节点并创建目录。您可以使用ls
命令来确认,如下图所示。
此时,您可以检查如下所示的版本
如您所见,对于node命令来说还可以,但是对于npm
命令,我们进行了如下修改
./node-v12.18.3-linux-x64/bin/node ./node-v12.18.3-linux-x64/lib/node_modules/npm/bin/npm-cli.js --version
我们还可以创建别名以简化生活
检查以下图像:
I tried using bashrc/bash_profile but somehow it didn't work .
这就是在共享cpanel计算机上运行的所有节点服务器。
现在,在这种情况下,我想获得基于js的快速REST API支持。问题在于它将在我提供的端口上本地托管。检查以下示例:
var express=require('express')
var app=express()
app.get('/', function (req, res) {
res.send('hosting node js base express api using php & shared hosting a great way to start yjtools')
})
console.log("listening yjtools node server on port 49876...")
app.listen(49876)
这里的问题是,尽管它将执行,但我将无法通过网络对其进行访问。这是因为我们只获得固定的预定义端口(例如80、21、3306等),这些端口在共享cpanel机器上允许/打开。因此,我托管的Express应用将仅在49876 port
上本地可用。
让我们看看我们有什么:
因此,我们可以使用具有重定向规则集的PHP和curl来缩小差距。 以下是我为使其正常运行所做的更改:
In .htaccess file
添加重定向规则,例如domain / api是我想要的其余api路径。
RewriteRule api/(.*)$ api/api.php?request=$1 [QSA,NC,L]
In the api/api.php file
(这是我选择的路径,您可以选择任何路径)
<?php
echo "Hello ".$_REQUEST['username'];
echo '<hr>';
$curl = curl_init('http://127.0.0.1:49976/');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//Get the full response
$resp = curl_exec($curl);
if($resp === false) {
//If couldn't connect, try increasing usleep
echo 'Error: ' . curl_error($curl);
} else {
//Split response headers and body
list($head, $body) = explode("\r\n\r\n", $resp, 2);
$headarr = explode("\n", $head);
//Print headers
foreach($headarr as $headval) {
header($headval);
}
//Print body
echo $body;
}
//Close connection
curl_close($curl);
?>
And on the ssh prompt just run the app.js file
node api/app.js
以下是实际操作的图像:
Here与我在程序中提到的类似,因此我们也可以通过php本身进行此节点调用。
现在,我已经获得了基于Express的Rest api支持,托管的角度应用程序和mysql,可用于cpanel上的所有数据库。
答案 5 :(得分:0)
任何想知道如何将 node js 应用程序部署到 Cpanel 的人这对他来说都是一个很好的来源,这彻底解释了如何将 node js 应用程序部署到 Cpanel 请检查 this