首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在cpanel宿主服务器上运行node.js

在cpanel宿主服务器上运行node.js
EN

Stack Overflow用户
提问于 2017-05-19 13:10:41
回答 6查看 113K关注 0票数 33

这是一个简单的node.js代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type' : 'text/plain'});
    res.end('Hello World!');
}).listen(8080);

我将它上传到cpanel托管服务器上,并安装了node.js并运行它。如果服务器是普通服务器,我可以通过访问'http://{serverip}:8080'‘来检查脚本结果。但在cpanel上是托管域和子域,每个域都与每个站点相匹配。甚至http://{serverip}也不是有效的url。如何访问我的node.js结果?请教我。谢谢。兵兵。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-07-30 17:59:08

cPanel通常运行Apache或其他在所有cPanel/unix帐户之间共享的web服务器。web服务器在端口80上监听。根据请求URL中的域名,web服务器使用“虚拟托管”来确定哪个cPanel/unix帐户应该处理请求,即在哪个主目录中查找要服务的文件和要运行的脚本。如果URL仅包含IP地址,则cPanel必须默认为cPanel帐户之一。

通常,如果没有根访问,由cPanel帐户运行的作业不能在端口80上侦听。实际上,可用的端口可能具有相当大的限制性。如果8080不起作用,你可以试试60000。要访问正在运行的node.js服务器,您需要有它正在监听的端口号。因为这是在该服务器上侦听该端口的唯一工作,所以您应该能够将浏览器指向任何cPanel帐户的域名,甚至是服务器的IP地址,从而将端口号添加到URL中。但是,运行cPanel作业的node.js帐户通常使用域名,例如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指令- rewrite.html

A2Hosting.com知识库关于配置Node.js - https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts的文章

cPanel特性请求线程用于node.js支持- https://features.cpanel.net/topic/nodejs-hosting

相关的StackOverflow问题

如何在共享宿主中托管Node.Js应用程序

为什么node.js不能在共享主机上运行?

票数 33
EN

Stack Overflow用户

发布于 2018-11-23 07:28:30

用NodeJS安装/安装CPanel

1.使用SSH登录到您的帐户(如果没有为您的帐户启用它,请与支持小组联系)。

2.下载Node.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://nodejs.org/dist/latest/node-v10.0.0-linux-arm64.tar.xz

3.解压Node.js文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar xvf node-v10.0.0-linux-arm64.tar.xz

4.现在将文件夹重命名为"nodejs“。为此,请键入以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mv node-v10.0.0-linux nodejs

5.现在要安装节点和npm二进制文件,输入以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir ~/bin <br> cp nodejs/bin/node ~/bin
cd ~/bin
ln -s
../nodejs/lib/node_modules/npm/bin/npm-cli.js npm

6. Node.js和npm安装在您的帐户上。要验证这一点,请输入以下命令

节点--版本npm --版本

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应用程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup node my_app.js &

8.停止应用程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pkill node

9.将Node.js应用程序与web服务器集成(可选)

根据您正在运行的Node.js应用程序的类型,您可能希望能够使用web浏览器访问它。为此,您需要为Node.js应用程序选择要侦听的未使用的端口,然后定义服务器重写规则,将访问者重定向到应用程序。

在文本编辑器中,将以下行添加到/home/ username /public_html目录中的.htaccess文件中,其中username表示您的帐户用户名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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行中,用Node.js应用程序侦听的端口替换XXXXX。要在托管服务器上运行Node.js应用程序,必须选择一个未使用的端口,端口号必须在49152到65535之间(包括在内)。保存对.htaccess文件的更改,然后退出文本编辑器。您网站的访问者将被重定向到侦听指定端口的Node.js应用程序。

如果应用程序启动失败,您选择的端口可能已经在使用。检查应用程序日志中是否存在诸如EADDRINUSE之类的错误代码,这些错误代码表明端口正在使用。如果是,请选择不同的端口号,更新应用程序的配置和.htaccess文件,然后再试一次。

票数 49
EN

Stack Overflow用户

发布于 2020-09-06 14:24:00

是的--这是可能的,但它几乎没有依赖项,无论是您的cpanel宿主提供商还是您选择的计划,都不支持它。

下面的步骤,我提到的只是一个演示的目的。如果你是一个学生,或者只是想玩它,你可以尝试它。我不是一个安全专家,所以从安全的角度来看,我真的不知道它有多好。

这么说,让我们看看我是如何配置它的。我有hostinger托管订阅,以下是步骤:

启用SSH访问

通过ssh连接到共享机器

检查linux发行版,并下载和安装节点js

在我的例子中,以下是用于此的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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命令确认这一点,如下图所示。

此时,您可以检查如下所示的版本

正如您所看到的,对于节点命令,它是可以的,但是对于npm命令,我们必须修改它,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./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支持。问题是它将在本地托管在我将要给出的端口上。请检查下面的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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机器上允许/打开的。由于这个原因,我托管的特快应用程序只能在本地49876 port上使用。

让我们看看我们有什么

  • 一个基于js的特快专递应用程序托管在cpanel机器上。
  • 基于Php的托管Apache服务器可在http/https上使用。

因此,我们可以使用带有重定向规则集和卷曲的php来弥合差距。以下是我为使其发挥作用所做的改变:

In .htaccess file添加了一个重定向规则,比如域/ api就是我想要的rest路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteRule api/(.*)$ api/api.php?request=$1 [QSA,NC,L]

In the api/api.php file (这是我选择的路径,您可以选择任何路径)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <?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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node api/app.js

以下是这一实际工作的图像:

这里是我在程序中提到的类似的东西,所以我们也可以通过php本身进行节点调用。

现在,我已经为cpanel上的数据库提供了基于表达式的rest支持、承载的database和mysql。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44079039

复制
相关文章
在服务器上运行Python项目
Anaconda是一个开源Python发行版本,包括Python 和很多常用库如Numpy、Matplotlib等,对小白很方便
Minerva
2020/05/25
4.2K0
在 Node.js 上运行 Flutter Web 应用和 API[每日前端夜话0xDC]
大量的跨平台应用开发框架,使你可以编写一次代码,然后在 Android,iOS 等多个平台上甚至在台式机上运行。你可能听说过一些流行的框架,例如 Ionic,Xamarin 和 React Native。另一个相对较新的框架是 Flutter。
疯狂的技术宅
2019/11/03
4.1K0
使用Termux在Android上运行SSH服务器
借助出色的Termux终端仿真器应用程序,您可以在Android上运行SSH服务器。
用户5005176
2021/08/10
4.6K0
在Centos上安装Node.js
Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台avaScript 运行环境。Node.js由Node.js基金会持有和维护,并与Linux基金会有合作关系。Node.js采用Google开发的V8运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。这些技术通常用于数据密集的实时应用程序。 Node.js大部分基本模块都用JavaScript语言编写。在Node.js出现之前,JavaScript通常作为客户端程序设计语言使用,以JavaScript写出的程序常在用户的浏览器上运行。Node.js的出现使JavaScript也能用于服务器端编程。
八十岁的背影
2018/07/30
2.6K0
在QEMU上运行OPTEE
TEE越来越成为一种基础的安全技术,optee作为一种优秀的开源TEE OS正吸引了越来越多的厂商,越来越多的学习者,安智客之前也多次介绍过
安智客
2018/07/30
2.6K0
在QEMU上运行OPTEE
在centos上安装Munin监控服务器运行状态
老高的服务器在搬瓦工上跑着,虽然后台有各种监控信息,但是要想查看还是必须登录后再点击很多次才能看到,很麻烦,于是通过Google找到了这个小巧的系统监控软件 -- Munin。这个软件在系统中部署很简单,几行代码就能搞定!
老高的技术博客
2022/12/28
6830
在centos上安装Munin监控服务器运行状态
CPanel安装教程
2、确定服务器主显IP地址(购买授权时要用的IP,对于LinodeVPS就是你的VPS的IP)
用户1673664
2018/08/31
10.1K0
在OS X上运行Docker
本文介绍了如何在OS X上运行Docker,通过使用boot2docker和VirtualBox,使基于Linux的Docker能在OS X上正常运行。同时,还探讨了如何将现有的基于Linux的Docker容器迁移到基于macOS的Docker。
Techeek
2018/01/04
1.9K0
在OS X上运行Docker
在Android系统上运行frp
一时兴起,想在Android上跑一下frpc,本来以为需要在PC上交叉编译后放到机器上才行,后来发现好像更简单,Android YYDS!
老高的技术博客
2022/12/28
4.3K0
在Android系统上运行frp
在kubernetes上运行WASM负载
WASM一般用在前端业务中,但目前有扩展到后端服务的趋势。本文使用Krustlet 将WASM服务部署到kubernetes。
charlieroro
2021/05/10
1.5K0
在kubernetes上运行WASM负载
在Hadoop上运行Python脚本
之前已经配置好了Hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。
py3study
2020/01/06
4.2K0
在eclipse中创建maven项目、导出jar包、在windows服务器上运行
我们找到打包好的jar包,以压缩包的形式打开,找到META-INF文件下的MANIFEST.MF文件。
翟凤玺
2020/10/29
4.1K0
在eclipse中创建maven项目、导出jar包、在windows服务器上运行
在浏览器中本地运行Node.js
一切要从收到一封邮件开始 大早上,我收到一封邮件,StackBlitz说正在与Next.js和Google的团队合作开发一项新技术 几年前,StackBlitz意识到网络正朝着关键的拐点发展。WebAssembly和新功能API的出现使编写基于WebAssembly的操作系统似乎变得可能,该操作系统功能强大到可以完全在浏览器中运行Node.js。我们设想了一个比本地环境更快,更安全和一致的高级开发环境,以实现无缝的代码协作而无需设置本地环境 技术名为:WebContainers WebContainer
Peter谭金杰
2022/03/22
3.7K0
在浏览器中本地运行Node.js
在Apache服务器上同时运行多个Django程序的方法
由于腾讯云服务器特别便宜(120元/年),禁不住诱惑买了两年。然后前前后后搭建了几个网站,分别是一个科技新闻抓取网站 https://news.stackoverflow.club, 一个书籍分享网站 https://book.stackoverflow.club, 一个网站内容开源api(还没有做前端界面) https://api.stackoverflow.club, 一个机器学习的数据集论坛 https://data.stackoverflow.club.
羽翰尘
2019/11/21
3.6K0
在Docker上运行Django和Vue
在Docker上运行Django和Vue Run Django and Vue on Docker Django Dockerfile 生成django项目依赖包. Generate Django project dependencies. pip freeze > requirements.txt 编写django启动脚本 run.sh Write a Django startup script run.sh python3 manage.py runserver 0.0.0.0:8000 编写 D
葫芦
2021/09/08
1.4K0
在Docker上运行Django和Vue
Spacebuilder在Mono上运行修改备忘
Spacebuilder 是一个asp.net mvc3项目,使用到了Combres,Combres依赖于dotless,然后在Spacebuilder的项目没有见到的dotless,运行要求dotless 1.3.0.2版本,通过Nuget获取: Install-Package dotless -Version 1.3.0.2 修改web.config加入dotless配置: <configuration>   <configSections>     <section name="combr
张善友
2018/01/29
1.2K0
Spacebuilder在Mono上运行修改备忘
在gpu上运行Pandas和sklearn
当涉及大量数据时,Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快,但处理大量数据仍然效率不高。
deephub
2022/11/11
1.6K0
在gpu上运行Pandas和sklearn
在Windows上使用Docker运行.NetCore
今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker。
小世界的野孩子
2019/09/11
4.3K0
在Windows上使用Docker运行.NetCore
在 FPGA 上运行 eBPF XDP 应用
这篇文章是对 OSDI20 的 Best Paper hXDP: Efficient Software Packet Processing on FPGA NICs 的阅读笔记,感兴趣的同学可以点击阅读原文查看论文的 paper,slide 和 video。
Oilbeater
2021/10/20
1.3K0
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.3K0
在 Linux or windows 上后台运行服务

相似问题

内部服务器错误- CPanel宿主

22

尝试让node.js应用程序在cPanel上运行

10

无法在宿主服务器上运行应用程序

24

如何运行手工命令调度:在宿主服务器上运行?(Laravel)

33

如何使用cpanel在服务器上运行javascript setInterval

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文