Total Pageviews

Sunday 6 May 2018

部署Node应用程序选择Heroku.com平台还是Now.sh平台?

随着Node.js的不断流行,新教程层出不穷,教程序员如何编写服务器端Java应用程序和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提供了在本地//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使用这个来启动应用程序。这是s字段的样子:
让我们开始将代码部署到now.sh. 确保在代码示例的根目录下。要开始部署过程,只需点击now即可。我想你可以看到developer experience,一切都可以用一个关键字now执行!如果对应用程序进行更改,并且想要重新部署应用程序,那么只需在控制台中点击now即可。
应用程序的URL可以在控制台日志中找到,有关部署或其他命令的更多常规日志可以在仪表板找到。 部署Node应用程序:一文看懂Heroku和Now.sh的最大区别!



定制和定义环境变量
定制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或许更棒。

from  http://tech.it168.com/a2017/1108/3178/000003178495.shtml

No comments:

Post a Comment