是的,这是可能的,但它几乎没有依赖项,您的 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)
这里的问题是即使它会执行,我也无法通过网络访问它。这是因为我们只能获得在共享 cpanel 机器上允许/打开的固定预定义端口(如 80、21、3306 等)。因此,我托管的 express 应用只能在 49876 port 本地使用。
让我们看看我们有什么:
- 在 cpanel 机器上本地托管的基于 express js 的应用程序。
- 基于 PHP 的托管 Apache 服务器可通过 http/https 获得。
所以我们可以使用带有重定向规则集和 curl 的 php 来弥补差距。
以下是我为使其正常工作所做的更改:
In .htaccess file 添加一个重定向规则,说 domain/api 是我想要的我的 rest 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本身来调用这个节点。
现在我在 cpanel 上拥有基于 express 的 rest api 支持、托管的 angular 应用程序和用于数据库的 mysql。