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

时间:2016-04-18 14:15:31

标签: node.js heroku loopbackjs strongloop

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

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

我正在阅读一些文档,但感觉有点迷失。来自已经部署它的人的一些意见将是很好的,我不能成为唯一一个感到困惑的人。

3 个答案:

答案 0 :(得分:5)

首先,如果您计划在服务器(数字海洋)或托管节点进程(Heroku)上托管它。

在Heroku上,您需要了解他们的做法,但一旦完成,可以为您节省大量的基础设施管理费用。这不包括StrongPM,而Heroku已经是它自己的流程管理员。如果您对Git有基本的了解并且不使用高级的东西,例如。从OS依赖,从长远来看,这是最简单的。没有经验,但似乎Heroku直接使用Git存储库,因此使用Git是这个模型的必需品。

在服务器(例如数字海洋)上,您需要决定操作系统并使用依赖项,安装节点,数据库等进行设置。您曾经可以使用流程管理器管理您的节点流程,例如。 StrongPM,尽管我已经与它进行了很多战斗,很久以前我决定选择PM2作为流程经理,我发现从初期和长期来看,我都更容易理解和处理。但是基本和本地机器上的基本相同,你只需要它运行"节点server.js",进程管理器只是给它一些铃声和口哨(错误时自动重启,监控和可重复)过程开始,是主要的事情)。

答案 1 :(得分:3)

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

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

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

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

接下来,您需要进行一些调整以使您的应用程序“Heroku-ready”:

  1. 添加Strongloop buildpack,即heroku buildpacks:set https://github.com/strongloop/strongloop-buildpacks.git
  2. 创建一个只需要一行的Procfile:web: slc run
  3. 然后推送到您的heroku应用程序(假设您已正确设置遥控器):

    git push heroku master
    

    万。它构建和部署。

答案 2 :(得分:2)

  1. 按照此处的指南安装NodeJS How To Set Up a Node.js Application for Production on Ubuntu 16.04 但不是pm2 start hello.js而是输入pm2 start server/server.js

  2. 编辑ngnix配置文件 sudo nano /etc/nginx/sites-available/default

    location / {       proxy_pass http://localhost:3000;       proxy_http_version 1.1;       proxy_set_header升级$ http_upgrade;       proxy_set_header连接'升级';       proxy_set_header主机$ host;       proxy_cache_bypass $ http_upgrade;       proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;       proxy_set_header X-Forwarded-Proto $ scheme; }

  3. 重新启动nginx sudo systemctl restart nginx