将Node.js应用部署到Bluehost

13

我在bluehost上有一个VPS,通过SSH安装了node和npm,并成功在www.mywebsite.com:3000运行了一个node应用程序,所以我有两个问题:

1)如何运行app.js,让它‘监听’ www.mywebsite.com?我的意思是当我访问www.mywebsite.com时,能够看到我的index.ejs和所有内容,就像在本地主机中一样,而不是访问www.mywebsite.com:3000。

2)当我成功在www.mywebsite.com:3000运行节点应用程序后,如果我停止SSH连接,它会关闭,它不能一直‘保持活动状态’,如何启动服务器并使其一直保持运行状态?就像Heroku一样,上传了带有脚本“node app.js”的package.json文件后,服务器将始终处于运行状态。

我如何在端口3000上运行node应用程序:

首先我运行了npm init,然后我安装了express npm install --save express

app.js:

var express = require("express");
var app = express();

app.get("/", function(req,res){
     res.send("hi");
});

app.listen(3000, functions(){
     console.log("Server Started");
});

1
回复:#1 你应该创建一个反向代理,从端口80或443使用另一台服务器(如apache或nginx)到端口3000(或您指定的任何端口上运行nodejs应用程序)。#2:说到[forever](https://github.com/foreverjs/forever)- pm2也是一个不错的选择。 - Explosion Pills
我实际上使用了端口号3000来测试,部署nodejs应用程序是否需要使用反向代理,还是只有当我想在特定端口上使用时才需要? - LuisEgan
我使用了forever,现在app.js保持运行状态。我还将app.js更改为监听端口80,但它不起作用。public_html目录中已经有一个index.html文件,并且正在加载它,我该如何让它首先加载app.js? - LuisEgan
你应该在80/443端口(SSL终止)上使用反向代理。如果根据您的防火墙/网络设置,端口3000对外开放,您仍然可以直接访问它。如果您想运行应用程序的测试和生产版本,我建议使用不同的服务器。 - Explosion Pills
好的,我明白你在说什么,但我不知道如何做...虽然这并没有回答是否必要或是良好的实践。我该如何在CentOS 6中使用反向代理? - LuisEgan
3个回答

10

我也遇到了同样的问题,但是我解决了。

按照以下步骤操作:

1- 从cpanel安全中开放ssh访问,然后点击管理ssh密钥

2- 点击生成新密钥,然后输入密码(请牢记您的密码,因为您将需要它),然后点击生成密钥

3- 在生成新公钥后,它会列在您的公钥列表中,点击管理,然后授权您的密钥

4- 点击刚创建的公钥所对应的私钥(您将在公钥下找到私钥列表)

5- 输入密码,然后将您的密钥转换为ppk格式,然后下载它

6- 下载并安装用于ssh访问的putty工具

7- 打开putty,然后输入您的主机名,并从单选按钮列表中选择ssh

8- 在连接列表下的左侧打开ssh清单,然后单击auth

9- 导入您的私钥,然后点击打开

10- 一个新的提示会打开,输入您的域名用户名(您可以在cpanel的一般信息部分找到它),以及您用于将密钥转换为ppk格式的密码

11- 如果您无法连接到ssh,请联系bulehost支持人员启用您的ssh访问权限

12- 连接后从此链接https://github.com/nvm-sh/nvm安装nvm

13- 使用命令nvm install安装所需的节点版本,例如nvm install 12.14.0

14- 然后创建服务器文件夹,然后使用npm安装所需的软件包

15- 首先使用npm init,然后使用npm install ****=>(您的软件包)

16- 压缩服务器文件,然后上传到您的服务器文件夹

17- 回到putty ssh,然后导航到您的服务器文件夹

18- 现在像node app.js这样编写您的命令,应该可以正常工作。

19- 要将nodejs作为后端服务运行,您可以使用forever (https://www.npmjs.com/package/forever)


感谢@Hossam的帮助。我正在安装nvm。使用Putty连接后,我进行了git克隆,并可以在我的cpanel目录中看到nvm文件夹。我还按照说明运行了命令“curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash”。但是,我无法安装任何东西,例如创建一个服务器文件夹,进入其中,运行npm install,然后出现错误“-jailshell:npm:找不到命令”。我认为我没有安装nvm,或者我没有安装node(npm)。有什么提示可以帮助我解决这个问题吗? - Casivio

1

Node 15需要在bluehost上进行额外的文件或更新。 Node 10运行良好。


0

尝试这个方法,让你的应用程序在www.mywebsite.com上运行:

    app.listen(80, functions(){
     console.log("Server Started");
});

你使用的是哪个Web服务器?

1
我正在使用Bluehost。如果我这样做,服务器将如何运行app.js?我的意思是,当我在本地执行时,我必须从终端键入“node app.js”,以便启动服务器。 - LuisEgan
2
这看起来更像是一个评论而不是一个答案。你能否将它添加到原始问题的评论部分? - soundslikeodd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接