余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

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

xiyangw 2023-05-14 11:40 14 浏览 0 评论

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

用Heroku进行部署

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

为了能够将应用程序部署到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 me@email.com,删除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或许更棒!

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: