部署到 Heroku

使用 MongoHQ

在把咱們的博客部署到 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

Heroku 是一個主流的 PaaS 提供商,在開發人員中廣受歡迎。這個服務圍繞着基於 Git 的工做流設計,假如你熟悉 Git ,那部署就十分簡單。這個服務本來是爲託管 Ruby 應用程序而設計的,但 Heroku 以後加入了對 Node.js 、Clojure 、Scala 、Python 和 Java 等語言的支持。Heroku 的基礎服務是免費的。

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

註冊

https://www.heroku.com/

建立一個應用

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

點擊 Create a new app ,填寫獨一無二的應用名稱後,點擊 creat app 即建立成功,而後點擊Finish up 

此時跳轉到控制面板頁,而且能夠看到咱們建立的應用了。咱們經過 應用名稱.herokuapp.com便可訪問咱們的應用主頁。如圖所示:

安裝 Heroku Toolbelt

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

  • Heroku client :建立和管理 Heroku 應用的命令行工具
  • Foreman :一個在本地運行你的 app 的不錯的選擇
  • Git :分佈式版本控制工具,用來把應用推送到 Heroku

Heroku Toolbelt 下載地址:https://toolbelt.heroku.com/ 

注意:假如你的電腦上已經安裝了 Git ,那麼在安裝的時候選擇 Custom Installation 並去掉安裝 Git 的選項,不然選擇 Full Installation 

安裝成功後,打開 Git Bash ,輸入 heroku login ,而後輸入在 Heroku 註冊的賬號和密碼進行登陸。Git 會檢測是否有 SSH 密鑰,若是有,則使用此密鑰並上傳,若是沒有,則建立一個密鑰並上傳。

Tips:SSH 密鑰一般用於授予用戶訪問服務器的權限。可將它們用於某些配置中,以便無需密碼便可訪問服務器。許多 PaaS 提供商都使用了此功能。

Procfile

在工程的根目錄下新建一個 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啓動應用。

相關文章
相關標籤/搜索