在 heroku 平台部署 node.js 程序

假如我们需要把自己写的 node.js 服务程序部署到云主机上,请问这样的开发任务该如何实现呢?可以使用免费的 heroku 云服务。下面是使用 heroku 平台部署 node.js 程序的步骤:

总共有七个步骤,具体操作步骤如下:

一、注册 heroku 网站账户

注意:

  • 访问网址:https://www.heroku.com/
  • 需要用翻墙软件,注册过程需要验证注册用户不是机器人,需要点击一个界面上的验证控件,这个验证控件用的是 google 的一个插件,所以不翻墙,这个验证通不过,完成不了注册。
  • 注册邮箱最好是 gmail 邮箱,如果没有 gmail 邮箱可以注册一个,同样需要翻墙。如果是 QQ 邮箱,会提示 QQ 邮箱会屏蔽注册的确认邮件。

二、安装下载 heroku-cli 工具

注意:

  • 需要切换到 root 用户,再执行安装命令
  • heroku -v 命令来验证程序安装是否成功,如果安装成功会在控制台打印出程序的版本信息
  • heroku --help 命令会列出 heroku 支持的所有子命令
su
npm install -g heroku-cli
heroku -v
heroku --help

三、准备待部署的服务程序

mkdir app-dir
npm init

修改代码,确保代码在本地测试通过。

注意:

  • 主脚本程序文件名最好是 index.js
  • 程序需要有 package.json 配置文件
  • package.json 文件中需要有 npm start 脚本,npm start 脚本就是 linux 命令,一般是 node index.js,表示如何运行服务程序
  • 如果程序中 createServer 创建 web 服务,需要监听端口,需要把监听端口的代码,做如下修改:
.listen(8080);      // 源代码
.listen(process.env.PORT || 8080);    // 修改后的代码

什么原因呢?因为很多人的 web 服务程序都被部署到同一个服务器上,可能大家写的端口号都是 8080,那样就是出现端口冲突,只有第一个被部署的程序能工作,其他人的程序都因为端口冲突而无法运行。这样,云端系统为了避免端口冲突,自动分配给每个部署的应用程序分配了一个端口号,这个端口号就放到 PORT 环境变量中,用 process.env.PORT 代码来调出这个端口号。因为,自己的测试环境没有 PORT 环境变量,所以后面或运算 8080,可以保证本地测试时,代码能正常运行。

四、用 heroku-cli 工具创建应用

heroku login
heroku create app-name

注意:

  • heroku login,需要输入用户名和口令,就是第一个步骤注册的
  • app-name 可以省略,托管平台会分配一个随机的字符串,保证 app-name 命名不会冲突
  • 当然,也可以自己指定 app-name,尽量不要用 www 或者 blog 之类的名称,一般都会冲突
  • 创建应用过程中,需要输入登录 heroku.com 网站的用户名和密码,在第一步已经注册
  • 提示信息很重要:

五、Git 推送代码到远程仓库

git init
git add .
git commit -m "first commit"
git remote add origin https://git.heroku.com/app-name.git
git remote -v
git push -u origin master

注意:

  • Git 工具推送代码成功后,有输出信息,远程托管主机会做一系列工作,包括:创建运行环境、安装必要的依赖库、压缩程序,启动服务,等

六、访问和测试 web 服务程序

curl https://app-name.herokuapp.com/

如果在 heroku 上部署的是 RESTful node.js 后台程序,愿意的话可以把前端页面部署到 GitHub 上,如何部署前端页面,请看一下 GitHub 开源之旅第一季的课程,这里就不再赘述了。注意一下,在部署前端页面之前,需要修改一下前端页面的代码,确保能够正确访问 RESTful API。

七、使用云服务管理后台

前提是需要翻墙,登录 heroku 网站。主要是查看服务器运行的日志信息,这里就不再多说了。

总结

因为用的是 heroku 的免费服务,可以使用的功能比较有限。另外,就是我们部署的服务程序,如果隔一段时间没有访问,服务进程会被杀掉。当接到下一个请求时,服务程序会被再次唤醒,当然,这样会导致第一次服务程序响应的比较慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值