DownOL 软件仓库– 软件下载,字节世界与新知

部署Node应用程序:一文看懂Heroku和Now.sh的最大区别!

发表于:2024-04-29 作者:创始人
编辑最后更新 2024年04月29日,随着Node.js的不断流行,新教程层出不穷,教程序员如何编写服务器端JavaScript应用程序和API。本文将介绍两大用于部署Node应用程序的项目:Now.sh和Heroku。解释如何将代码部署

随着Node.js的不断流行,新教程层出不穷,教程序员如何编写服务器端JavaScript应用程序和API。本文将介绍两大用于部署Node应用程序的项目:Now.sh和Heroku。解释如何将代码部署到上述两个平台,在监控选项、易用性、提供的功能以及免费托管计划方面各有哪些利弊。

用Heroku进行部署

为了能够将应用程序部署到Heroku,程序员必须在Heroku上注册并为机器安装Heroku CLI。

开始之前,需要向Procfile添加一些代码。因为,Heroku将利用这个文件来确定如何执行上传的代码。

如果将下面的代码添加到文件中,Heroku就知道应该执行什么命令来启动应用程序:

一旦完成,请尝试通过从终端输入heroku login的方式登陆,Heroku会要求输入登录凭证。

接下来,导航到项目的根目录并输入命令:heroku create。这将在Heroku上创建一个应用程序,该应用程序已准备好接收项目的源代码。Heroku上的应用程序名称是随机创建的。

要将代码部署到Heroku,只需使用git push heroku master。程序员可以使用heroku open命令来访问应用程序,这将打开生成的URL。

推动对Heroku的更改

遵循正常的Github流程可以推动更改:

有用的Heroku命令

  • 要确保至少有一个应用程序实例在运行:heroku ps:scale web = 1

  • 因为正在使用免费平台,所以不可能扩展应用程序。但是,可以缩减比例,因此不运行的应用程序实例:heroku ps:scale web = 0。

  • 按照Heroku生成的时间顺序查看最新的日志(流):heroku logs --tail

  • 可以只显示应用程序日志。应用程序日志是代码中console.log()语句的输出,可以使用如下语句查看:heroku logs--source app-name

  • Heroku提供了在本地http://localhost:5000上运行应用程序的可能性:heroku local web

  • 列出所有Heroku应用程序:heroku apps

  • 删除部署:heroku apps:destroy--app app-name

  • 添加所有者(账户)来访问应用程序:heroku access:add [email protected],删除heroku access:remove

Heroku环境变数

如果在本地使用.env文件,则可能需要为Heroku部署使用其他环境变数。可以使用heroku config来设置它们:heroku config:setPORT=3001.。这些值将覆盖用户在.env文件中设置的变数。

要查看所有定义的Heroku环境变数,只需使用heroku config。如果想删除一个环境变数例如 PORT,使用heroku config:unset PORT。

免费可用的版本

  • 允许最多五个Heroku应用程序

  • 512 MB RAM

  • 不可升级可用,只可以同时运行一个应用程序实例

  • 闲置30分钟后进入睡眠状态

  • 随机生成应用程序名称

  • 有关内存使用情况,响应时间和可用吞吐量的度量标准,但无法添加自定义度量标准

使用now.sh进行部署

Now.sh着重于开发者体验(DX),这是一种独特的方式。他们试图提供灵活的工具,使用起来非常简单。Now.sh是Zeit.cowhich开发的一些工具的一部分。

为了简单起见,我们将只通过npm安装Now.sh CLI:

接下来,需要注册以便可以在控制台中使用。登录和注册都发生在login page。每次登录时,都必须通过电子邮件验证来确认登录尝试。 确认后,将被重定向到仪表板,程序员可以查看日志和部署。

现在开始使用,只需在控制台中输入now即可。控制台将提示输入电子邮件,填写正确的电子邮件,并通过点击验证电子邮件。

登录之后,让我们来看看package.json中的启动脚本。 Now.sh使用这个来启动应用程序。这是scripts字段的样子:

让我们开始将代码部署到now.sh. 确保在代码示例的根目录下。要开始部署过程,只需点击now即可。我想你可以看到developer experience一切都可以用一个关键字now执行!如果对应用程序进行更改,并且想要重新部署应用程序,那么只需在控制台中点击now即可。

应用程序的URL可以在控制台日志中找到,有关部署或其他命令的更多常规日志可以在仪表板找到。

定制和定义环境变数

定制Now.sh部署的一种方法是使用now.json文件。但是,由于已经使用了package.json文件,因此可以在now键下添加所需的自定义。此配置允许自定义应用程序名称和别名,设置环境变数,指定部署类型并定义引擎。

程序员也可以通过CLI设置环境变数:now -e NODE_ENV ="production"-e PORT ="3001"。

如果想提供一个dotenv文件,可以设置选项--dotenv,如果想使用.env.production而不是.env?,可以考虑用--dotenv=.env.production来解决。最后,还可以将生产dotenv文件添加到你的package.json。

有用的Now.sh命令

  • 可以为部署添加一个别名:now alias deploy-url aliasname

  • 列出所有部署与他们唯一的代码:now ls

  • 删除部署:now rm unique-code

  • 强制新建(如有问题):now-f

  • 扩展web应用程序(免费版最多3个):now scale deployment-url3。有时,预测流量是不容易的。Now.sh允许设置自动缩放比例的最小值和最大值:now scale deployment-url min max。

监视日志

  • 日志输出可以通过以下命令获取:nowlogs[deployment-url|deployment-id]。更高级的日志记录也是可能的。

  • now logs-a-q"GET"-n10deployment-url:显示包含单词GET的10个最新日志。

  • now logs--since=20171028:显示2017年10月28日的所有日志(ISO 8601格式)

  • 点击Now.sh仪表板中的应用程序也可以访问日志。

Now.sh的OSS计划

OSS计划可以免费使用,并提供以下内容:

  • 带宽:1GB

  • 日志存储高达100MB

  • 无限的部署可能

  • 并发实例限制为3个

  • 不支持自定义域

  • 最大文件大小:1MB

  • 没有自动扩展支持

比较

Heroku和Now.sh都提供了很好的功能。Now.sh通过提供易于使用的CLI更多地关注开发者的体验。另一方面,Heroku更注重可视化的记录,特别是用度量指标进行监控。

就个人而言,我更喜欢简单的Now.sh,现在只需使用一个关键字now来进行(重新)部署。对于Node应用程序,我喜欢在.package.json文件中添加now属性来自定义Now.sh部署。不需要像Procfile Heroku所要求的那样添加额外的文件。

这两个平台之间很难选择, 但这只取决于你的喜好和需求。除了上述一些关于免费版本可以获得的支持,从易用性方面来说,Now.sh或许更棒!

2022-05-09 12:51:40
0