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


110

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

我想在共享托管中托管一个node.js应用程序。有没有人要参考或参考文件?


我通过运行npm build来了解它的方式将生成js文件,您可以缩小这些文件,然后将其包含在脚本标签中。使用vuejs甚至angular2 cli进行构建时的示例
Geoff


1
@ Dan-Cornilescu可以重新打开。这很有价值。在超级用户中会更好。还找到了我想添加的答案。
eddyparkinson

在大多数共享主机上,安装Node和NPM将会失败(不支持CentOS);这是一个解决方案(使用Node v6.2.2)-medium.com/@yatko/…–
Yatko

Answers:


158

可以在典型的Linux,Apache和PHP(LAMP)共享主机上运行node.js服务器。即使NPM,Express和Grunt运行正常,我也已经成功安装了它。按照步骤:

1)使用以下代码在服务器上创建一个新的PHP文件并运行它:

<?php
//Download and extract the latest node
exec('curl http://nodejs.org/dist/latest/node-v0.10.33-linux-x86.tar.gz | tar xz');
//Rename the folder for simplicity
exec('mv node-v0.10.33-linux-x86 node');

2)使用npm安装节点应用程序的方式相同,例如jt-js-sample:

<?php
exec('node/bin/npm install jt-js-sample');

3)从PHP运行节点应用程序:

<?php
//Choose JS file to run
$file = 'node_modules/jt-js-sample/index.js';
//Spawn node server in the background and return its pid
$pid = exec('PORT=49999 node/bin/node ' . $file . ' >/dev/null 2>&1 & echo $!');
//Wait for node to start up
usleep(500000);
//Connect to node server using cURL
$curl = curl_init('http://127.0.0.1:49999/');
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);
//Close node server
exec('kill ' . $pid);

瞧!看一下PHP共享主机上的节点应用程序演示

编辑:在GitHub上启动了一个Node.php项目


2
并安装mongoDB吗?
jsky 2015年

3
@jsky应该可以,因为mongodb不需要root。只需遵循手动安装指南
niutech

3
还没有尝试过,但是看起来很漂亮!!!……不错
Gabriel Rodriguez 2015年

2
建议您更新 下载网址据此
若昂·皮门特尔·费雷拉

5
node.php非常好!
Hemant Sharma 2015年

51

连接SSH并按照以下说明在共享主机上安装Node

简而言之,您首先安装NVM,然后使用NVM安装您选择的Node版本。

wget -qO- https://cdn.rawgit.com/creationix/nvm/master/install.sh | bash

重新启动外壳程序(关闭并重新打开会话)。那么你

nvm install stable

例如,安装最新的稳定版本。您可以安装您选择的任何版本。检查node --version当前使用的节点版本,并nvm list查看已安装的版本。

另外,您可以轻松切换版本(nvm use <version>

如果您使用SSH,则不需要PHP或任何棘手的解决方法。


嗨,谢谢你的回答。尽管我遇到了麻烦,但它说一旦我使用nvm进行安装,就找不到该节点。有什么帮助吗?
阿米特·萨克森纳

如果您发现节点未发现 nvm错误,也许应该尝试stackoverflow.com/a/33874050/328117
Vinyl

大多数共享主机提供商不提供SSH访问权限。至少不是我的。
coder.in.me,2017年

4
工作完美!感谢
Devin Norgarb '17

2
@SyamsoulAzrien(如果有的nvm:command not found话)可以运行以下命令:命令source ~/.nvm/nvm.sh
Hans Tiono

12

我使用以下命令在bluehost.com(共享服务器)上安装了Node.js:

wget <path to download file>
tar -xf <gzip file>
mv <gzip_file_dir> node

这将下载tar文件,解压缩到目录,然后将该目录重命名为“ node”,以使其易于使用。

然后

./node/bin/npm install jt-js-sample

Returns:
npm WARN engine jt-js-sample@0.2.4: wanted: {"node":"0.10.x"} (current: {"node":"0.12.4","npm":"2.10.1"})
jt-js-sample@0.2.4 node_modules/jt-js-sample
└── express@4.12.4 (merge-descriptors@1.0.0, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, cookie@0.1.2, fresh@0.2.4, escape-html@1.0.1, range-parser@1.0.2, finalhandler@0.3.6, content-type@1.0.1, vary@1.0.0, parseurl@1.3.0, serve-static@1.9.3, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.1, qs@2.4.2, on-finished@2.2.1, debug@2.2.0, etag@1.6.0, proxy-addr@1.0.8, send@0.12.3, type-is@1.6.2, accepts@1.2.7)

我现在可以使用以下命令:

# ~/node/bin/node -v
v0.12.4

# ~/node/bin/npm -v
2.10.1

出于安全原因,我将节点目录重命名为其他名称。


1
npm start在中尝试过,jt-js-sample然后转到mysite.com:5000,但该页面不可用。我需要改为使用IP地址吗?
zachdyer

该端口可能被阻塞,您应该使用标准的80端口
RicardoE

〜/ node / bin / npm -v给我一个错误,说:let notifier = require('update-notifier')({pkg})语法错误:Modules处exports.runInThisContext(vm.js:69:16)处的意外标识符._compile(module.js:432:25)在Object.Module._extensions..js(module.js:467:10)在Module.load(module.js:349:32)在Function.Module._load(module .js:305:12)在启动时(node.js:123:16)在Function.Module.runMain(module.js:490:10)在node.js:1027:3
codeinprogress

10

A2托管允许在其共享托管帐户上使用node.js。我可以保证我对他们有过积极的经历。

以下是其知识库中有关使用Apache / LiteSpeed作为反向代理安装node.js的说明:https ://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- 托管帐户。大约需要30分钟来设置配置,并且可以与npm,Express,MySQL等一起使用。

请参阅a2hosting.com。


1
谢谢!正是我想要的。
Pedro Ferreira

差不多两年后,A2 Hosting仍然是极少数在其共享服务器上正式支持Node.js的托管提供商之一。在这里
Dalie

1
反应和前端在共享节点js托管计划上运行良好吗?任何想法
Samkit Shah,

在同一个博客上写一个博客。medium.com/@pampas93/...
作者Abhijit小号

2

您应该寻找一家提供这种功能的托管公司,但是标准的简单static + PHP + MySQL托管将不允许您使用node.js。

您需要找到专为node.js设计的主机,或者购买虚拟专用服务器并自行安装。


您是否表示无法使用共享托管来托管Node.js应用程序
2014年

3
@somesh可能-看到我的答案。
niutech

这是一个很酷的技巧,但是请记住,许多共享托管服务提供商会终止此过程,并认为它滥用了共享托管帐户...
Tiago

如@niutech所说,从技术上讲是可行的,但是我绝对不会认为它的生产安全,其他同事(不能提及一个以上的用户)是正确的,我相信大多数托管服务提供商会终止节点进程,否则您将耗尽处理器周期时间很快
马立克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.