如何部署环回?需要简单的解释

How to deploy Loopback ? Need simple explanation

我开发了一个 Loopback API 并想将它部署到一个测试实例(可能是 Heroku 或 Digital Ocean)。

理解如何部署它是相当复杂的。似乎有很多解决方案,从 StrongLoop Process Manager 到普通的 Node.js 服务器...信息不是很消化所以任何人都可以帮助我了解我必须部署它的可能性以及什么是 pro/cons 每一个。

我正在阅读一些文档,但感觉有点迷茫。已经部署它的人的一些意见会很棒,此时我不能是唯一感到困惑的人。

第一个区别是您打算将其托管在服务器 (Digital Ocean) 上还是作为托管节点进程 (Heroku)。

在 Heroku 上,您需要了解他们的工作方式,但一旦了解,可以为您省去很多基础设施管理方面的烦恼。这不包括 StrongPM 并且 Heroku 已经是它自己的进程管理器。如果您对 Git 有基本的了解并且不使用高级的东西,例如。具有 OS 个依赖项,这是长 运行 中最简单的一个。没有经验,但 Heroku 似乎直接使用 Git 存储库,因此使用 Git 是此模型的要求。

在服务器(例如数字海洋)上,您需要决定 OS 并使用依赖项进行设置,安装节点、数据库等。一旦您可以使用流程管理器管理您的节点流程,例如。 StrongPM,尽管我曾与它进行过激烈的斗争,并且很久以前就决定使用 PM2 作为流程管理器,我发现它更容易理解和处理,无论是在最初还是在长期 运行。但基本与本地机器相同,你只需要它 运行 "node server.js",进程管理器只是给它一些额外的功能(出错时自动重启,监控和可重复的进程启动,是主要的事情)。

我已经做过很多次了,可以说是相当简单了。最复杂的一点是设置数据库。对于 Heroku,您不能使用文件系统存储(例如,将所有内容存储在 db.json 文件中),因为文件系统不是持久的。所以你需要一个外部数据库,幸运的是 Heroku 提供了其中一些作为插件,例如我强烈推荐 MongoDB 的 mLab。

配置数据库后,请确保为数据源配置了正确的详细信息。这是一个使用 mLab 的 Heroku 托管应用的示例(我已经 xxxx 列出了一些细节):

"db": {
  "host": "ds043471-a0.mongolab.com",
  "port": 43471,
  "database": "heroku_appxxxxxxx",
  "username": "heroku_appxxxxxxx",
  "password": "xxxxxxxxxx",
  "name": "KaranMongo_live",
  "connector": "mongodb"
}

您现在甚至可以在本地进行测试(尽管最佳做法是为 development/production 使用单独的数据源 json 文件)。

接下来,您需要做一些调整才能使您的申请"Heroku-ready":

  1. 添加 Strongloop buildpack,即 heroku buildpacks:set https://github.com/strongloop/strongloop-buildpacks.git
  2. 创建一个Procfile,只需要一行:web: slc run

然后推送到您的 heroku 应用程序(假设您已正确设置远程):

git push heroku master

魔法。它构建和部署。

  1. 按照此处的指南安装 NodeJS 如何在 Ubuntu 16.04 上设置 Node.js 生产应用程序 但输入 pm2 start server/server.js

  2. 而不是 pm2 start hello.js
  3. 编辑您的 ngnix 配置文件 sudo nano /etc/nginx/sites-available/default

    位置/{ proxy_pass http://localhost:3000; proxy_http_version1.1; proxy_set_header升级$http_upgrade; proxy_set_header连接'upgrade'; proxy_set_header主机$主机; proxy_cache_bypass$http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $方案; }

  4. 重启nginx sudo systemctl restart nginx