教你在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 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
dul无法加载bootstrap实现unload table/user恢复
Sep 29 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
微信小程序block的使用教程
Apr 01 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
Sep 18 Javascript
js实现可爱的气泡特效
Sep 05 Javascript
三步搞定:Vue.js调用Android原生操作
Sep 07 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 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
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
vue文件运行的方法教学
2019/02/12 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python list操作用法总结
2015/11/10 Python
用Python编写简单的微博爬虫
2016/03/04 Python
python binascii 进制转换实例
2019/06/12 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python实现GIF图倒放
2020/07/16 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
军训感想500字
2014/02/20 职场文书
爱情寄语大全
2014/04/09 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
力学专业求职信
2014/07/23 职场文书
外国人来华邀请函
2015/01/31 职场文书
师范生小学见习总结
2015/06/23 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS
为什么RedisCluster设计成16384个槽
2021/09/25 Redis