当我们的论坛要部署到线上时,不能靠 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 是一个 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。
在之前,我们需要修改部分代码。
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/