在把咱們的博客部署到 Heroku 以前,咱們首先學習下如何使用 MongoHQ 。MongoHQ 是一個提供 MongoDB 存儲服務的雲平臺,使用起來很是簡單,提供了在線查詢和修改數據庫的功能。MongoHQ 的免費套餐提供了 512MB 的存儲空間。node
https://bridge.mongohq.com/signupgit
註冊後,選擇一個 Free 的數據庫類型,並給數據庫起一個名字,點擊 Create Database 建立數據庫。此時跳轉到以下界面:github
如圖所示,咱們能夠在命令行中鏈接遠程數據庫,也能夠經過 Mongo URL 使用數據庫。接下來,咱們修改博客的代碼,使用 MongoHQ 提供的雲端數據庫取代使用本地數據庫。web
首先,咱們須要給數據庫添加一個用戶。點擊左側的 Admin ,而後點擊 Users 進入用戶管理頁面。在 username 和 password 處分別填寫用戶名和密碼:mongodb
db.addUser('username','password')
點擊 Add user 添加用戶。數據庫
修改 settings.js 爲:express
module.exports = { cookieSecret: 'myblog', url: 'your_Mongo_URI' };
將 your_Mongo_URI 替換爲你本身建立的數據庫的 URL ,將 <user>
和 <password>
分別替換爲剛纔添加的用戶的名字和密碼。服務器
打開 app.js ,將 app.use(express.session(...));
修改成:cookie
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 ,均做如下修改:session
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();
如今,無需啓動你的本地數據庫,運行你的博客試試吧~
注意:Heroku 也提供了 MongoHQ 的 Add-ons ,但須要填寫信用卡信息,因此咱們這裏直接使用外鏈的 MongoHQ 。
Heroku 是一個主流的 PaaS 提供商,在開發人員中廣受歡迎。這個服務圍繞着基於 Git 的工做流設計,假如你熟悉 Git ,那部署就十分簡單。這個服務本來是爲託管 Ruby 應用程序而設計的,但 Heroku 以後加入了對 Node.js 、Clojure 、Scala 、Python 和 Java 等語言的支持。Heroku 的基礎服務是免費的。
下面咱們使用 Heroku 部署咱們的博客。
註冊成功後,就進入了控制面板頁面,如圖所示:
點擊 Create a new app ,填寫獨一無二的應用名稱後,點擊 creat app 即建立成功,而後點擊Finish up 。
此時跳轉到控制面板頁,而且能夠看到咱們建立的應用了。咱們經過 應用名稱.herokuapp.com便可訪問咱們的應用主頁。如圖所示:
Heroku 官方提供了 Heroku Toolbelt 工具更方便地部署和管理應用。它包含三個部分:
Heroku Toolbelt 下載地址:https://toolbelt.heroku.com/ 。
注意:假如你的電腦上已經安裝了 Git ,那麼在安裝的時候選擇 Custom Installation 並去掉安裝 Git 的選項,不然選擇 Full Installation 。
安裝成功後,打開 Git Bash ,輸入 heroku login
,而後輸入在 Heroku 註冊的賬號和密碼進行登陸。Git 會檢測是否有 SSH 密鑰,若是有,則使用此密鑰並上傳,若是沒有,則建立一個密鑰並上傳。
Tips:SSH 密鑰一般用於授予用戶訪問服務器的權限。可將它們用於某些配置中,以便無需密碼便可訪問服務器。許多 PaaS 提供商都使用了此功能。
在工程的根目錄下新建一個 Procfile 文件,添加以下內容:
web: node app.js
Procfile 文件告訴了服務器該使用什麼命令啓動一個 web 服務,這裏咱們經過 node app.js
執行 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.
打開 Git Bash ,輸入:
$ git init $ git add . $ git commit -m "init" $ git remote add heroku git@heroku.com:yourAppName.git
注意:將 yourAppName 修改成你本身的應用名。
在 push 到 heroku 服務器以前,咱們還須要作一個工做。因爲我國某些政策的緣由,咱們需到~/.ssh/ 目錄下,新建一個 config 文件,內容以下:
Host heroku.com User yourName Hostname 107.21.95.3 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa port 22
而後回到 Git Bash ,輸入:
$ git push heroku master
稍等片刻即上傳成功。如今你就能夠訪問 http://yourAppName.herokuapp.com/ 了,如圖所示:
注意:假如出現了 Application Error,多是沒有啓動應用,到應用面板頁勾選 web node app.js ,而後點擊 Apply Changes啓動應用。