教你在heroku云平台上部署Node.js应用


Posted in Javascript onJuly 30, 2014

虽然AWS现在也推出了自己的PaaS平台,叫Elastic Beanstalk,但heroku的优势在于它上面有很多第三方的add-on,比如MongoDB,mysql, redis, memcached, 还有各种消息队列、sms和邮件、后台批处理、搜索、自动化监控等插件,从生态环境的角度来说比AWS还是强很多。

这也就是说,heroku上有现成的Node.js PaaS运行环境,还有很多add-on,每天会自动把数据备份到AWS S3上,你只需要用git命令把代码push上去就行了,其他的什么都不用管。对于咱们程序猿来说,世界上还有比这更爽的事情吗?

所以,为了造福网友,俺今天就把部署的几个小步骤总结一下。

假定你已经有了一个叫sample的node.js应用,代码放在/Home/Apps/sample9527下,目录下有你的服务器端核心js文件server.js,现在你已经cd到了这个目录下。

为了让heroku识别你的应用,需要在这个目录下加入一个文件Procfile,内容是一行代码:

web: node server.js

(这里的 web: node 是告诉heroku你要部署的是一个node.js web应用,后面的server.js 就是你的服务器端核心程序代码文件名)

好,现在部署工作可以开始了。

首先,你需要到 www.heroku.com 上注册一个用户,用户名是你的邮箱地址。然后安装 Heroku Toolbelt ,这是一个命令行工具,可以让你直接在shell里用命令发布代码,查看系统状态,修改服务器配置,等等。

然后在shell里用heroku login命令登录,输入你的用户名和密码即可。

$ heroku login

第一步可以用foreman start命令检查一下你的代码是否能顺利在heroku上运行,如果看到输出中没有报错,那就说明基本正常。

$ foreman start

然后就是用git同步代码:

$ git init

$ git add .

$ git commit -m "init"

创建heroku应用:

$ heroku create sample9527

如果sample9527这个app名在heroku上没有人用,那么你会创建成功,应用的链接就是http://sample9527.herokuapp.com/,不然就改个名字接着试,或者直接用heroku create让它帮你起一个新名字。

如果需要安装一些数据库之类的插件,可以看看它有什么add-on可用,然后在命令行加入。比如加入一个MongoLab提供的MongoDB数据库:

$ heroku addons:add mongolab

(大部分add-on需要你在用户信息中填入信用卡,但是如果选用免费版本则不会被扣费,放心吧)

然后就可以同步程序代码了:

$ git push heroku master

同步之后,heroku会自动根据npm配置下载和安装必要的dependencies,然后启动你的应用。

现在可以到应用链接看一下是否正常,如果有错误,可以在命令行查看日志:

$ heroku logs

根据日志中的错误信息修改代码后,可以再次提交代码:

$ git commit -a -m "update some code"

$ git push heroku master

或者在需要时直接用restart命令重启服务:

$ heroku restart

heroku的初级玩法基本上就是这些了,够简单吧?自己去试试呗。

Javascript 相关文章推荐
利用ASP发送和接收XML数据的处理方法与代码
Nov 13 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
图片无缝滚动代码(向左/向下/向上)
Apr 10 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
jsPDF导出pdf示例
May 02 Javascript
每日十条JavaScript经验技巧(二)
Jun 23 Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
Oct 25 Javascript
js实现二级联动简单实例
Jan 11 Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 #Javascript
JS实现图片无间断滚动代码汇总
Jul 30 #Javascript
使用jquery.upload.js实现异步上传示例代码
Jul 29 #Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 #Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 #Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 #Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 #Javascript
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
Python struct模块解析
2014/06/12 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
防灾减灾活动总结
2014/08/30 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Python经常使用的一些内置函数
2022/04/11 Python
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL
Python 图片添加美颜效果
2022/04/28 Python