鍍金池/ 教程/ HTML/ 番外篇之——部署到 Heroku
第9章 增加標簽和標簽頁面
番外篇之——使用 Mongoose
番外篇之——使用 Async
第4章 實現(xiàn)用戶頁面和文章頁面
第12章 增加友情鏈接
第14章 增加頭像
第7章 實現(xiàn)分頁功能
第5章 增加編輯與刪除功能
第11章 增加文章檢索功能
第3章 增加文件上傳功能
番外篇之——部署到 Heroku
第2章 使用 Markdown
第13章 增加404頁面
第16章 增加日志功能
第1章 一個簡單的博客
番外篇之——使用 Handlebars
第10章 增加pv統(tǒng)計和留言統(tǒng)計
番外篇之——使用 Passport
第15章 增加轉(zhuǎn)載功能和轉(zhuǎn)載統(tǒng)計
第8章 增加存檔頁面
番外篇之——使用 generic pool
番外篇之——使用 _id 查詢
番外篇之——使用 Disqus
番外篇之——使用 KindEditor
第6章 實現(xiàn)留言功能

番外篇之——部署到 Heroku

使用 MongoHQ

在把我們的博客部署到 Heroku 之前,我們首先學(xué)習(xí)下如何使用 MongoHQ 。MongoHQ 是一個提供 MongoDB 存儲服務(wù)的云平臺,使用起來非常簡單,提供了在線查詢和修改數(shù)據(jù)庫的功能。MongoHQ 的免費套餐提供了 512MB 的存儲空間。

注冊

https://bridge.mongohq.com/signup

創(chuàng)建一個數(shù)據(jù)庫

注冊后,選擇一個 Free 的數(shù)據(jù)庫類型,并給數(shù)據(jù)庫起一個名字,點擊 Create Database 創(chuàng)建數(shù)據(jù)庫。此時跳轉(zhuǎn)到如下界面:

http://wiki.jikexueyuan.com/project/express-mongodb-setup-blog/images/8.1.jpg" alt="" />

如圖所示,我們可以在命令行中連接遠程數(shù)據(jù)庫,也可以通過 Mongo URL 使用數(shù)據(jù)庫。接下來,我們修改博客的代碼,使用 MongoHQ 提供的云端數(shù)據(jù)庫取代使用本地數(shù)據(jù)庫。

首先,我們需要給數(shù)據(jù)庫添加一個用戶。點擊左側(cè)的 Admin ,然后點擊 Users 進入用戶管理頁面。在 username 和 password 處分別填寫用戶名和密碼:

db.addUser('username','password')

點擊 Add user 添加用戶。

修改 settings.js 為:

module.exports = { 
  cookieSecret: 'myblog', 
  url: 'your_Mongo_URI'
};

將 your_Mongo_URI 替換為你自己創(chuàng)建的數(shù)據(jù)庫的 URL ,將 分別替換為剛才添加的用戶的名字和密碼。

打開 app.js ,將 app.use(express.session(...)); 修改為:

app.use(express.session({
  secret: settings.cookieSecret,
  cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
  url: settings.url
}));

刪除 db.js ,打開 post.js 、 user.js 和 comment.js ,均作以下修改:

  • 將 mongodb = require('./db') 修改為 mongodb = require('mongodb').Db
  • 添加 var settings = require('../settings');
  • 將所有 mongodb.open(function (err, db) { 修改為 mongodb.connect(settings.url, function (err, db) {
  • 將所有 mongodb.close(); 修改為 db.close(); 現(xiàn)在,無需啟動你的本地數(shù)據(jù)庫,運行你的博客試試吧~

注意:Heroku 也提供了 MongoHQ 的 Add-ons ,但需要填寫信用卡信息,所以我們這里直接使用外鏈的 MongoHQ 。

部署到 Heroku

Heroku 是一個主流的 PaaS 提供商,在開發(fā)人員中廣受歡迎。這個服務(wù)圍繞著基于 Git 的工作流設(shè)計,假如你熟悉 Git ,那部署就十分簡單。這個服務(wù)原本是為托管 Ruby 應(yīng)用程序而設(shè)計的,但 Heroku 之后加入了對 Node.js 、Clojure 、Scala 、Python 和 Java 等語言的支持。Heroku 的基礎(chǔ)服務(wù)是免費的。

下面我們使用 Heroku 部署我們的博客。

注冊

https://www.heroku.com/

創(chuàng)建一個應(yīng)用

注冊成功后,就進入了控制面板頁面,如圖所示:

http://wiki.jikexueyuan.com/project/express-mongodb-setup-blog/images/8.2.jpg" alt="" />

點擊 Create a new app ,填寫?yīng)氁粺o二的應(yīng)用名稱后,點擊 creat app 即創(chuàng)建成功,然后點擊 Finish up 。

此時跳轉(zhuǎn)到控制面板頁,并且可以看到我們創(chuàng)建的應(yīng)用了。我們通過 應(yīng)用名稱.herokuapp.com 即可訪問我們的應(yīng)用主頁。如圖所示:

http://wiki.jikexueyuan.com/project/express-mongodb-setup-blog/images/8.3.jpg" alt="" />

安裝 Heroku Toolbelt

Heroku 官方提供了 Heroku Toolbelt 工具更方便地部署和管理應(yīng)用。它包含三個部分:

  • Heroku client :創(chuàng)建和管理 Heroku 應(yīng)用的命令行工具
  • Foreman :一個在本地運行你的 app 的不錯的選擇
  • Git :分布式版本控制工具,用來把應(yīng)用推送到 Heroku Heroku Toolbelt 下載地址:https://toolbelt.heroku.com/ 。

注意:假如你的電腦上已經(jīng)安裝了 Git ,那么在安裝的時候選擇 Custom Installation 并去掉安裝 Git 的選項,否則選擇 Full Installation 。

安裝成功后,打開 Git Bash ,輸入 heroku login ,然后輸入在 Heroku 注冊的帳號和密碼進行登錄。Git 會檢測是否有 SSH 密鑰,如果有,則使用此密鑰并上傳,如果沒有,則創(chuàng)建一個密鑰并上傳。

Tips:SSH 密鑰通常用于授予用戶訪問服務(wù)器的權(quán)限。可將它們用于某些配置中,以便無需密碼即可訪問服務(wù)器。許多 PaaS 提供商都使用了此功能。

Procfile

在工程的根目錄下新建一個 Procfile 文件,添加如下內(nèi)容:

web: node app.js

Procfile 文件告訴了服務(wù)器該使用什么命令啟動一個 web 服務(wù),這里我們通過 node app.js 執(zhí)行 Node 腳本。為什么這里聲明了一個 web 類型呢?官方解釋為:

The name “web” is important here. It declares that this process type will be attached to the HTTP routing stack of Heroku, and receive web traffic when deployed.

上傳應(yīng)用

打開 Git Bash ,輸入:

$ git init
$ git add .
$ git commit -m "init"
$ git remote add heroku git@heroku.com:yourAppName.git

注意:將 yourAppName 修改為你自己的應(yīng)用名。

在 push 到 heroku 服務(wù)器之前,我們還需要做一個工作。由于我國某些政策的原因,我們需到 ~/.ssh/ 目錄下,新建一個 config 文件,內(nèi)容如下:

Host heroku.com
User yourName
Hostname 107.21.95.3
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 22

然后回到 Git Bash ,輸入:

$ git push heroku master

稍等片刻即上傳成功?,F(xiàn)在你就可以訪問 http://yourAppName.herokuapp.com/ 了,如圖所示:

http://wiki.jikexueyuan.com/project/express-mongodb-setup-blog/images/8.4.jpg" alt="" />

注意:假如出現(xiàn)了 Application Error,可能是沒有啟動應(yīng)用,到應(yīng)用面板頁勾選 web node app.js ,然后點擊 Apply Changes 啟動應(yīng)用。