本篇介紹如何用vapor連接另一種數(shù)據(jù)庫Mongodb
-
安裝MongoDB
首先付上官網(wǎng)的安裝教程:安裝mongodb,這個是社區(qū)版屁商,由于企業(yè)版是收費的烟很,就先來個社區(qū)版以供測試使用。
安裝步驟:
1蜡镶、在包管理系統(tǒng)中插入公鑰:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
2雾袱、為MongoDB創(chuàng)建list file
- Ubuntu 14.04
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
- Ubuntu 16.04
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
3、重載本地包數(shù)據(jù)庫
$ sudo apt-get update
4官还、安裝MongoDB包
$ sudo apt-get install -y mongodb-org
如果要安裝特定版本芹橡,可以替換下面命令的版本號:
sudo apt-get install -y mongodb-org=3.6.2 mongodb-org-server=3.6.2 mongodb-org-shell=3.6.2 mongodb-org-mongos=3.6.2 mongodb-org-tools=3.6.2
這樣MongoDB就安裝好了,為了測試是否安裝成功妻枕,執(zhí)行以下操作:
1僻族、啟動MongoDB:
$ sudo service mongod start
2、驗證是否成功啟動
查看日志文件: /var/log/mongodb/mongod.log
[initandlisten] waiting for connections on port 27017
3屡谐、終止MongoDB服務(wù):
$ sudo service mongod stop
4述么、重啟MongoDB:
$ sudo service mongod restart
5、開始使用MongoDB:
$ mongo --host 127.0.0.1:27017
卸載MongoDB:
1愕掏、停止服務(wù)
$ sudo service mongod stop
2度秘、移除包
$ sudo service mongod stop
3、刪除數(shù)據(jù)文件夾
$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb
到這里我們的MongoDB已經(jīng)安裝完成
如果要外網(wǎng)訪問,修改配置文件vim /etc/mongod.conf, 將綁定的ip改為0.0.0.0
另外如果使用的是云服務(wù)器需要修改安全組策略剑梳,添加支持對27017端口的授權(quán)
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
現(xiàn)在開始配置mogodb:
使用
$ mongo --host 127.0.0.1:27017
或者
$ mongo
來進入數(shù)據(jù)庫唆貌,看到以下內(nèi)容表示進入了mongo的地盤
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
下面創(chuàng)建一個新的用戶
- 首先,切換到admin庫, 因為在admin庫里才能操作用戶
> use admin
switched to db admin
- 接著創(chuàng)建一個新用戶
> db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "adminpassword", roles: [ { role: "root", db: "admin" } ] } )
Successfully added user: {
"user" : "admin",
"customData" : {
"description" : "superuser"
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
- 看看用戶是否創(chuàng)建成功
> show users
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"customData" : {
"description" : "superuser"
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
- 退出mongo
> exit
- 重啟mongo
$ sudo service mongod restart
現(xiàn)在就可以連接遠程服務(wù)器了垢乙,可以測試一下:
$ mongo -u admin -p adminpassword 127.0.0.1/admin
如果是遠程連接锨咙,只要把127.0.0.1換成主機的ip地址即可
配置Vapor項目
接下來開始配置我們的項目,步驟類似Vapor奇幻之旅(06 PostgreSQL)
- 首先添加# mongo-provider
在Package.swift中添加
swift3:
.Package(url: "https://github.com/vapor/mongo-provider.git", majorVersion: 2)
swift4:
.package(url: "https://github.com/vapor/mongo-provider.git", .upToNextMajor(from: "2.0.0"))
在Config+Setup.swift中添加Provider支持
import FluentProvider
import MongoProvider
extension Config {
...
/// Configure providers
private func setupProviders() throws {
try addProvider(FluentProvider.Provider.self)
try addProvider(MongoProvider.Provider.self)
}
...
}
- 修改驅(qū)動:
在項目Config/fluent.json中修改driver屬性(默認是memory):
"driver": "postgresql"
- 項目中新建文件Config/secrets/mongo.json
Config/
- mongo.json
secrets/
- mongo.json
內(nèi)容為
{
"url": "mongodb://<db-user>:<db-password>@<host>:<port>/<database>"
}
根據(jù)上面服務(wù)端的配置追逮,可以寫成:
{
"url": "mongodb://admin: adminpassword@xxx.xxx.xxx.xxx:27017/admin"
}
同樣也可以在代碼中連接數(shù)據(jù)庫:
import Vapor
import MongoProvider
let drop = Droplet()
let mongo = try MongoProvider.Provider(database: ..., user: ..., password: ...)
drop.addProvider(mongo)
- 最后運行項目儒洛,測試我們的插入和查詢操作:
表示已經(jīng)成功連接服務(wù)器铝量,并可以進行數(shù)據(jù)操作弥姻。
本篇介紹了怎么在ubuntu系統(tǒng)上安裝和配置mongodb婿禽, 如何在服務(wù)器的mongodb上創(chuàng)建新的用戶,并通過mongo-provider連接服務(wù)器上的數(shù)據(jù)庫巴席。
由于mongodb的Mac版對APFS支持并不好历涝,我并沒有安裝在我的Mac上,等待后續(xù)版本更新后我會進行相應(yīng)的補充漾唉。
關(guān)于Vapor其他知識荧库,可以參考以下文章:
Vapor奇幻之旅(01開始)
Vapor奇幻之旅(02部署)
Vapor奇幻之旅(03上手)
Vapor奇幻之旅(04Routing)
Vapor奇幻之旅(05 Fluent)
Vapor奇幻之旅(06 PostgreSQL)
Vapor奇幻之旅(07 連接服務(wù)端PostgreSQL)
Vapor奇幻之旅(08 連接服務(wù)端MongoDB)
Vapor奇幻之旅(09 連接MySQL)
希望你對我的教程能夠喜歡,你們的贊是我持續(xù)的動力毡证,歡迎加入QQ群參與互動:431296189