Nodejs&Mongodb 安裝手冊(AmazonEC2)

安裝及設定DB Server

3.14.23-22.44.amzn1.x86_64(ID_LIKE="rhel fedora")
  |-- nodejs 0.10.33,npm
  |   |-- mongodb_s3_backup 
  |   \-- forever    
  \-- mongodb-linux-x86_64-enterprise-amzn64-2.6.6

安裝mongodb

參考:http://docs.mongodb.org/manual/tutorial/install-mongodb-enterprise-on-amazon

必要程式安裝:

  • sudo yum install openssl net-snmp net-snmp-libs net-snmp-utils cyrus-sasl cyrus-sasl-lib cyrus-sasl-devel cyrus-sasl-gssapi

下載及安裝mongodb:

curl -O http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-amzn64-2.6.6.tgz
tar -zxvf mongodb-linux-x86_64-enterprise-amzn64-2.6.6.tgz
sudo cp -R -n mongodb-linux-x86_64-enterprise-amzn64-2.6.6/ /usr/local/mongodb

設定環境變數:

  • vim .bashrc開啟環境變數檔
  • 新增export PATH=$PATH:/usr/local/mongodb/bin加入mongodb
  • source .bashrc重新載入環境變數檔

建立mongod.conf設定檔:

# mongod.conf

#where to log
logpath=/var/log/mongodb/mongod.log

logappend=true

# fork and run in background
fork=true

port=27017

dbpath=/db

# location of pidfile
pidfilepath=/var/run/mongodb/mongod.pid

# Listen to local interface only. Comment out to listen on all interfaces.
#bind_ip=0.0.0.0
#bind_ip=127.0.0.1

# Disables write-ahead journaling
# nojournal=true

# Enables periodic logging of CPU utilization and I/O wait
#cpu=true

# Turn on/off security.  Off is currently the default
#noauth=true
#auth=true

# Verbose logging output.
#verbose=true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck=true

# Enable db quota management
#quota=true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog=0

# Ignore query hints
#nohints=true

# Enable the HTTP interface (Defaults to port 28017).
#httpinterface=true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting=true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan=true

# Disable data file preallocation.
#noprealloc=true

# Specify .ns file size for new databases.
# nssize=<size>

# Replication Options

# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#keyFile=/path/to/keyfile
  • 修改設定值
    • 設定dbpath=/db指定資料庫儲存位置
    • 註解#bind_ip=127.0.0.1取消IP限制,否則只有localhost連得到
    • 保留註解#auth=true不啟用帳號管理
  • 設定資料夾存取權限
    • sudo mkdir /var/run/mongodb
    • sudo chown ec2-user /var/run/mongodb
    • sudo mkdir /var/log/mongodb
    • sudo chown ec2-user /var/log/mongodb
    • sudo mkdir /db
    • sudo chown ec2-user /db/db對應dbpath路徑
  • mongod --config /etc/mongodb/mongodb.conf使用設定檔設定啟動資料庫(初次啟動執行較久)

mongodb測試:

  • netstat -ndlp |grep 27017檢視PORT開啟
    • 若有資料表示資料庫已啟動

設定mongodb

參考:

建立管理者帳號:

  • 輸入mongo進入資料庫
  • >use admin
  • >db.createUser( { user: "superuser", pwd: "passwd", roles: ["root"] } )新增最高權限用戶
    • 依實際情況替換"superuser"、"passwd"
  • >ctrl+c離開

關閉資料庫:

  • mongod --config /etc/mongodb/mongodb.conf --shutdown停止資料庫
  • 或者輸入mongo進入資料庫
    • >use admin切換至admin db
    • >db.shutdownServer()關閉資料庫
    • >ctrl+c離開

測試管理者帳號:

  • mongod -–auth驗證模式啟動資料庫(未啟用帳號管理啟動的資料庫,不會進行任何帳號驗證,任何人都可以登進去!!!)
  • mongo -u username -p passwd --authenticationDatabase admin使用帳號密碼進入資料庫
  • 關閉資料庫
    • >use admin切換至admin db
    • >db.shutdownServer()關閉資料庫
    • >ctrl+c離開

啟用帳號管理:

  • sudo vim /etc/mongodb/mongodb.conf開啟設定檔
    • 移除註解#auth=true>>auth=true啟用帳號管理
  • mongod --config /etc/mongodb/mongodb.conf啟動資料庫

設定應用程式登入帳號

為application建立專用帳號:

  • mongo -u username -p passwd --authenticationDatabase admin
  • >use admin
  • >db.createUser( { user: "application_user", pwd: "passwd", roles: [ { role: "dbAdmin", db: "applicationDB" }, { role: "readWrite", db: "applicationDB" } ] } )
    • 依實際情況替換"application_user"、"passwd"、"applicationDB"
  • >use applicationDB切換資料庫
  • >db.createUser( { user: "application_user", pwd: "passwd", roles: [ { role: "dbAdmin", db: "applicationDB" }, { role: "readWrite", db: "applicationDB" } ] } )
    • 與前一個db.createUser指令相同,因應不同程式撰寫方式可能會先向admin進行認證後再切換資料庫至applicationDB,或者直接向applicationDB進行認證,所以兩邊都建立帳號。

設定開機自動啟動

  • 新增自動執行批次檔:sudo vim /etc/rc.d/rc.local
  • 內容:
    mongod --config /etc/mongodb/mongodb.conf