从Heroku迁移到Render的步骤

464 阅读6分钟

DZone>Web Dev Zone>从Heroku迁移到Render

从Heroku迁移到Render

从Heroku迁移到Render有多难?在这篇文章中,请跟随一步步的过程,只花了大约10分钟。

Benjamin Patton user avatar通过

Benjamin Patton

-

五月。13, 22 - Web Dev Zone -教程

喜欢 (1)

评论

保存

鸣叫

409次浏览

加入DZone社区,获得完整的会员体验。

免费加入

不时有一些词或短语被我反复听到,以至于我最终想到,"嗯,我应该去看看这个"。渲染就是这些词之一。

在Twitter上,我看到各种对话,人们想从Heroku迁移到其他服务。人们提出的一些问题包括。

  • 成本

  • 缺少持久性存储的选择

  • 对于托管静态网站来说并不理想

  • 最近的产品开发速度放缓

在其中一些对话中,我看到了这样一个问题:"那Render呢?"

那么,Render怎么样?从Heroku转移到Render有多难?我想弄清楚。我从一个部署在Heroku上的简单网络应用开始,经历了将其迁移到Render的过程。总的来说,我花了大约10分钟。在这篇文章中,我将介绍一下我所采取的步骤。

你只需要一个GitHub账户就可以开始了。

我的Node.js应用程序的简要概述

目前,我有一个简单的Node.js应用程序在Heroku上运行。我还安装了Heroku Postgres和Heroku Redis作为该应用的附加组件。

这个应用程序很简单。当我向/countries 发送GET请求时,我得到一个响应体,告诉我数据的来源(数据库或缓存),并给我一个国家的列表。

还有一个端点(/clear_cache ),我可以用POST请求来清除Redis的缓存。

第1步:在Render中设置我们的应用程序

首先,去render.com,登录或用GitHub注册。一旦你登录了,点击顶部栏中你的账户头像旁边的 "新建"按钮。然后,选择网络服务

接下来,选择你要部署的GitHub仓库。为你的应用程序提供一个名称,并给它适当的启动命令。对于这个演示,由于这是一个Node.js项目,我的应用程序被设置为运行npm installnpm start

在这里也选择免费计划。就目前而言,这足以满足我们的演示需求。当你的应用程序规模扩大时,你可以随时升级你的计划。

第2步:在Render上设置Postgres

在Render上设置Postgres很简单。同样,在顶部的菜单栏中,你所要做的就是点击新建,然后点击PostgreSQL

接下来,为你的Postgres数据库提供一个名称。在这个演示中,我保留了其余的默认值,而且我选择了免费计划。

然后,点击创建数据库

你会看到下面有一个配置环境变量的步骤,但我们稍后会回来讨论这个问题。现在,我们将继续设置Redis。

第3步:在Render上设置Redis

Redis是一个快速而灵活的键值存储,我们将在我们的演示应用程序中使用它来进行缓存。不断地查询数据库会变得很昂贵,特别是当你的应用程序扩展时。当随后的查询返回相同的结果时,缓存这些结果以防止对数据库的不必要的点击是有意义的。Redis让我们做到这一点。

直到最近,Render还没有提供一个可管理的Redis服务。你必须自己在其他地方托管Redis,但好消息是:在几个月的早期访问可用性之后,Render最近发布了其管理的Redis服务,其中包括一个免费层

所以,就像以前一样,点击新建,从下拉菜单中选择Redis。请确保命名你的Redis实例,选择免费计划,然后点击创建Redis

现在Redis和Postgres都设置好了,我们可以继续设置我们的环境变量。

第4步:配置环境变量

我们的网络应用依赖于某些环境变量。特别是,我们希望能够灵活地指定Postgres数据库的位置和Redis的位置,而不是把这些位置硬塞进代码中。让我们来看看如何在Render中指定这些环境变量。

进入你的仪表板,点击你在第一步创建的网络服务。

在页面上的子导航菜单中点击环境

现在,你可以选择创建附属于网络服务的单个环境变量,或者你可以创建一个环境组并将其附属于你的网络服务。对于我们的应用来说,这两种方法都可以很好地工作。

我们需要创建这些环境变量。

  1. DATABASE_URL:将其设置为你在步骤2中设置的Postgres实例的配置页面中的内部连接字符串值。

  2. REDIS_URL:将其设置为你在步骤3中设置的Redis实例的配置页面中的内部连接字符串值。

  3. NODE_ENV:将此设置为生产。

你的网络服务的环境变量应该类似于以下内容。

测试我们的应用程序

设置好环境变量后,我们可以测试我们的应用程序。我使用curl 命令来向我的Render应用程序发送请求。

首先,我们发送一个GET 请求到https://redis-postgres-demo.onrender.com/countries 。在我的终端窗口中,该命令看起来像这样。

curl -X GET https://redis-postgres-demo.onrender.com/countries

这是我收到的响应。

源描述了我们从哪里获得数据,而数据只是所有的国家。我们可以从上面的响应中看到,对于这第一个请求,数据的来源是数据库。

接下来,我们向同一个端点发送第二个GET 请求。响应如下。

正如预期的那样,第二个请求的数据来源是Redis缓存而不是数据库。

接下来,我们发送一个POST 请求来清除缓存。

curl -X POST https://redis-postgres-demo.onrender.com/clear_cache

清除缓存后,我们再发送一个GET 请求,以检索我们的国家名单。正如预期的那样,由于没有缓存可供利用,返回的数据来源是数据库。

就这样,我们的小程序已经被无缝地移植到了Render。Render使设置Postgres和Redis的工作变得轻而易举。

结论

总之,我们有一个运行在Heroku上的应用程序,使用Postgres和Redis。通过简单地将我们的GitHub账户连接到Render,我们就能够使用Render来。

  • 部署我们的Web服务

  • 设置Postgres和Redis

  • 设置环境变量,将我们的Web服务指向我们的Postgres数据库和Redis实例。

我们只需点击几下,就完成了这一切,时间大约是冲泡一壶咖啡的时间。

那么,让我们回到最初的问题。如果你想从Heroku迁移出去,你可能会问,"那Render呢?"我想说,这绝对值得考虑。

这里有一段视频,介绍了我的整个过程。

数据库 应用 Redis(公司) PostgreSQL 网络服务

经Benjamin Patton许可发表于DZone。点击这里查看原文。

DZone贡献者所表达的观点属于他们自己。

DZone上的热门文章


评论

网络开发 合作伙伴资源