0%

在 Heroku 上开发、部署Node程序的快速指南

尝试使用了下Heroku, 在上面部署 Node 程序还是很方便的, 主要优势在于它的网络可以访问到外网, 具体应用都懂得

这里记录下如何在 Heroku 上创建、开发、部署 Node

官方的文档在这里

安装 Heroku cli

其余的访问 下载地址

创建一个 Express 应用

使用Yeomangenerator-express来快速创建一个 Express 应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 安装 yeoman
npm install -g yo

// 安装 generator-express
npm install -g generator-express

// 新建项目文件夹
mkdir heroku-express
cd heroku-express
git init

// 创建项目
yo express

// 提交代码
git add .
git commit -m "Init project"

测试一下刚刚创建的项目

1
2
// 启动 Express
npm start

访问 http://localhost:3000/ 查看 Express 是否成功启动

在 Heroku 上创建项目

进入我们刚刚新建的项目, 运行 create 指令创建项目

1
heroku create [your_app_name]

运行完成后, Heroku 会在我们的项目上新建一个git 的远程分支, 同时会为项目创建一个域名供我们访问

这里是我的运行结果运行结果

在 Heroku 上部署应用

部署之前我们需要创建一个类似启动脚本的文件 Procfile

1
2
3
// Profile 

web: node ./bin/www

这个文件告诉 Heroku需要创建一个web 容器, 同时执行 node ./bin/www 来启动程序

我们的项目只需要这样就可以了, 更多的详细信息在这里 Process Types and the Procfile

然后将刚刚的改动提交, 同时推送的 Heroku

1
2
3
4
git add .
git ci -m "Add procfile"

git push heroku master

当你将代码推送到 Heroku 的 master 分支上时, 它就会根据package.json中的内容安装所需要的依赖, 然后执行 Procfile 中的内容, 这就完成的程序的部署

这里是我的部署结果

然后你在访问刚刚 Heroku 给的网址, 就可以看到程序已经运行

定义程序依赖和运行变量

  1. 通过package.json定义程序依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    {
    "name": "heroku-express",
    "version": "0.0.1",
    ...
    "dependencies": {
    "express": "^4.13.3",
    "serve-favicon": "^2.3.0",
    "morgan": "^1.6.1",
    "cookie-parser": "^1.3.3",
    "body-parser": "^1.13.3",
    "swig": "^1.4.2"
    },
    ...
    "engines": {
    "node": "^8.3.0"
    }
    }

    dependencies 字段定义程序依赖

    engines 字段定义需要的 Node 版本

  2. 定义运行变量

    1. 本地运行变量

      本地使用 .env 文件来定义变量, 格式如下

      1
      NAME=VALUE

      使用 heroku local web 来启动本地开发服务器, 同时会将变量信息注入到process.env

    2. 容器运行变量

      容器的运行变量需要通过 heroku config:set NAME=VALUE来设置

      使用 heroku config来查看变量

    详细信息 Configuration and Config Vars

与容器进行远程交互

  1. 查看运行日志

    1
    heroku logs --tail
  2. 在容器中运行命令 heroku run command

    1. heroku run node 进入Node 的 REPL
    2. heroku run bash 进去容器运行bash

其他

Heroku 的免费版本每个月提供了 550 小时的使用时间, 当我们的程序半个小时内没有访问流量时就会被休眠掉, 在下次被访问的时候激活

所以长时间没有访问的应用, 在第一次访问会很慢, 不过也就够用了

我也将这篇文章部署在这个应用上, https://lleohao-heroku-express.herokuapp.com/article