dotCloud 中部署 Node.js 和 MongoDB 續記


自從二零一一年由試用 dotCloud 的那篇小記後.
就一直都在斷斷續續地使用他的服務放小玩具等等.
因為之前的 Project Topic 爛掉.
所以將他整理一下放回到 dotCloud 上.
所以也來小記一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 切換到要部署的程式目錄裡
cd ~/deploy/project-topic

# 建立一個 supervisor 的設定文件
touch supervisord.conf

[program:node]
command = node app.js
directory = /home/dotcloud/current

# 建立一個 dotcloud 環境的設定文件
touch dotcloud.yml

www:
type: nodejs
approot: .
config:
node_version: v0.6.x
data:
type: mongodb

# 先更新一下 dotcloud CLI
pip install --upgrade dotcloud

# 於 dotcloud 內建立程式環境
dotcloud create project-topic

# 因在同一目錄所以直接 push
dotcloud push

# 之後查看 MongoDB 的資訊
dotcloud info data

# 之後登入 MongoDB 中建立一個用戶
# - 如無法選取要用的資料庫名
# - 請先執行一次會失敗的程式
dotcloud run data mongo

use 程式用的資料庫名
db.getSisterDB("admin").auth("root", "在上面看見的 ROOT 密碼");
db.addUser("用戶名", "密碼");

# 編輯 app.js 加入連線資料和設定 Port

# MongoDB
var fs = require('fs');
var env = JSON.parse(fs.readFileSync('/home/dotcloud/environment.json', 'utf-8'));

console.log('Application Name: ' + env['DOTCLOUD_SERVICE_NAME']);
mongoose.connect('mongodb://用戶名:密碼@'+env['DOTCLOUD_DATA_MONGODB_HOST']+':'+env['DOTCLOUD_DATA_MONGODB_PORT']+'/程式用的資料庫名');

# Port
app.listen(8080, function (err) {
if (err) throw err;
console.log("Express server listening on port %d in %s mode", 8080, app.settings.env);
});

# 最後就是 push 上去
dotcloud push

# 查看目前的執行狀態
dotcloud run www supervisorctl status

# 查看運行記錄
dotcloud logs

# 查看目前已有的 App
dotcloud list

# 刪掉指定的 App
dotcloud destroy --application [名]