我在 Github 上有一个 node.js 应用程序。我以前从未做过任何 VPS 部署,我正在不断学习。
我使用的是 Hostinger.in 的 VPS,所使用的操作系统是 Ubuntu 14.04。到目前为止,这就是我所做的:
我找不到任何在线资源来将我的node.js部署到Hostinger VPS,所以我遵循为DigitalOcean编写的资源。
我遵循的一个教程是这样的:https://code.tutsplus.com/tutorials/setting-up-continuous-integration-continuous-deployment-with-jenkins--cms-21511
我克隆了我的存储库:
git clone https://github.com/myusername/node-project.git
它似乎已部署(没有给我任何错误)。 我在服务器上进行的所有安装都是以 root/admin 用户身份进行的。到目前为止,我还没有创建任何单独的用户来执行任何这些任务。
给我的服务器主机名是dangerous-pigs.com。现在我假设我的 node.js 应用程序已部署,但是当我访问angerous-pigs.com 时,它显示服务器未找到错误。
我还为我的节点应用程序和运行时永久安装了
forever start app.js
它说:
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app.js
error: Cannot start forever
error: script /root/app.js does not exist.
这意味着该应用程序要么未安装,要么安装在根文件夹以外的位置。
发生了很多事情,我很困惑从哪里开始解决问题。
如何部署应用程序以在危险的pigs.com上运行它?
所以看来我必须进入根目录的项目文件夹并执行
npm install --production
之后我就这么做了
node app.js
服务器似乎正在运行,但是,如果我对服务提供的实际 IP 进行操作,我只能访问我的应用程序。
因此,如果我输入 http://93.188.163.249:8000 --> 这就是我的应用程序。
如何将其更改为指向域?
经过更多研究后,我发现:
目前默认情况下 Apache2 在端口 80 上运行。要首先在端口 80 上运行 Nodejs,我需要在我的 Ubuntu 服务器中安装 libcap2-bin,方法是:
sudo apt-get install libcap2-bin
之后我会做
sudo setcap cap_net_bind_service=+ep /usr/bin/nodejs
如果您有 Mac,则上述命令有效,对于 Windows,该命令 maybe
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
但请在操作前确认。
在进行这些更改之前,您的 Nodejs 服务器需要停止,否则它将无法工作。就我而言,我忘记停止我的节点服务器并继续运行 sudo setcap 命令,但它没有更改端口(出于明显的原因)。
如果您使用forever来运行节点,那么请执行以下操作:
forever stopall
查看我的文章https://blog.knovik.com/node-auto-deploy-github-actions/
我解释了每个步骤,包括详细的分步指南