使用 pm2

当我们的论坛要部署到线上时,不能靠 npm start 来启动,因为我们 ^C 或者断掉 SSH 连接后服务就终止了,这时我们就需要像 pm2 或者 forever 这样的进程管理器了。以 pm2 为例,首先运行:

npm install pm2 -g

全局安装 pm2,修改 bin/start 如下:

#! /bin/bash
DEBUG=* NODE_ENV=default pm2 start app.js --node-args="--harmony" --name "N-club"

然后我们就可以使用以下命令启动论坛了 :

sh bin/start

还有种常用的方式是使用 npm scripts,将:

"start": "NODE_ENV=default DEBUG=* node --harmony app"
修改为:
"start": "DEBUG=* NODE_ENV=default pm2 start app.js --node-args='--harmony' --name 'N-club'"

最后,不要忘记,如果要部署到线上的话,我们要切换到 production 环境(即 NODE_ENV=production),并且实现相应的 config/production.js 和 config/production.scheme.js。

申请 mLab

mLab 是一个 mongodb 云数据库提供商,用户可选择 500MB 空间的免费套餐用来测试。注册成功后,点击右上角的 Create New 创建一个数据库,成功后点击进入到该数据库详情页,注意页面中有一行黄色的警告:

A database user is required to connect to this database. Click here to create a new one.

每个数据库至少需要一个 user,所以我们点击 Click here 创建一个用户。最后将分配给我们的类似下面的 mongodb url:

mongodb://<dbuser>:<dbpassword>@ds045478.mlab.com:45478/n-club

覆盖配置文件中的:

mongodb://127.0.0.1:27017/club

并将 <dbuser><dbpassword> 替换为刚才创建的用户名和密码。

部署到 Heroku

Heroku 是一个支持多种编程语言的云服务平台,Heroku 也提供免费的基础套餐供开发者测试使用。现在,我们将论坛部署到 Heroku。

在之前,我们需要修改部分代码。

1. 在根目录下新建 Procfile 文件,添加如下内容:

web: npm start
Procfile 文件告诉 Heroku 该使用什么命令启动一个 web 服务。

2. 将 co-cache 的 redis 配置指向远程的 redis 地址。

首先,需要到 https://toolbelt.heroku.com/ 下载安装 Heroku 的命令行工具包 toolbelt。然后登录(如果没有账号,请注册)到 Heroku 的 Dashboard,点击右上角 + 创建一个应用。创建成功后运行:

$ heroku login

填写正确的 email 和 password 验证通过后,本地会产生一个 SSH public key,然后输入以下命令:

$ git init
$ heroku git:remote -a 你的应用名称
$ git add .
$ git commit -am "first blood"
$ git push heroku master

稍后,我们的论坛就部署成功了。访问:

https://你的应用名称.herokuapp.com/

试试吧。笔者部署的论坛地址为:

https://n-club.herokuapp.com/