虽然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,内容是一行代码:
1
|
web: node server.js
|
(这里的 web: node 是告诉heroku你要部署的是一个node.js web应用,后面的server.js 就是你的服务器端核心程序代码文件名)
好,现在部署工作可以开始了。
首先,你需要到 www.heroku.com 上注册一个用户,用户名是你的邮箱地址。然后安装 Heroku Toolbelt ,这是一个命令行工具,可以让你直接在shell里用命令发布代码,查看系统状态,修改服务器配置,等等。
然后在shell里用heroku login命令登录,输入你的用户名和密码即可。
1
|
$ heroku login
|
第一步可以用foreman start命令检查一下你的代码是否能顺利在heroku上运行,如果看到输出中没有报错,那就说明基本正常。
1
|
$ foreman start
|
然后就是用git同步代码:
1
2
3
4
5
|
$ git init
$ git add .
$ git commit -m "init"
|
创建heroku应用:
1
|
$ heroku create sample9527
|
如果sample9527这个app名在heroku上没有人用,那么你会创建成功,应用的链接就是http://sample9527.herokuapp.com/,不然就改个名字接着试,或者直接用heroku create让它帮你起一个新名字。
如果需要安装一些数据库之类的插件,可以看看它有什么add-on可用,然后在命令行加入。比如加入一个MongoLab提供的MongoDB数据库:
1
|
$ heroku addons:add mongolab
|
(大部分add-on需要你在用户信息中填入信用卡,但是如果选用免费版本则不会被扣费,放心吧)
然后就可以同步程序代码了:
1
|
$ git push heroku master
|
同步之后,heroku会自动根据npm配置下载和安装必要的dependencies,然后启动你的应用。
现在可以到应用链接看一下是否正常,如果有错误,可以在命令行查看日志:
1
|
$ heroku logs
|
根据日志中的错误信息修改代码后,可以再次提交代码:
1
2
3
|
$ git commit -a -m "update some code"
$ git push heroku master
|
或者在需要时直接用restart命令重启服务:
1
|
$ heroku restart
|
heroku的初级玩法基本上就是这些了,够简单吧?自己去试试呗。