02.28 如何在 Fedora 上安裝 MongoDB 服務器

如何在 Fedora 上安裝 MongoDB 服務器

它已從 Fedora 倉庫中完全刪除。讓我們看看 Fedora 用戶可以如何獲取非自由的包。-- Honza Horak(作者)

Mongo(來自 “humongous” —— 巨大的)是一個高性能、開源、無模式的、面向文檔的數據庫,它是最受歡迎的 NoSQL 數據庫之一。它使用 JSON 作為文檔格式,並且可以在多個服務器節點之間進行擴展和複製。

有關許可證更改的故事

MongoDB 上游決定更改服務器代碼的許可證已經一年多了。先前的許可證是 GNU Affero General Public License v3(AGPLv3)。但是,上游公司寫了一個新許可證,旨在使運行 MongoDB 即服務的公司可以回饋社區。新許可證稱為 Server Side Public License(SSPLv1),關於這個舉措及其解釋的更多說明,請參見 MongoDB SSPL FAQ 。

Fedora 一直只包含自由軟件。當 SSPL 發佈後,Fedora 確定 它並不是自由軟件許可證。許可證更改日期(2018 年 10 月)之前發佈的所有 MongoDB 版本都可保留在 Fedora 中,但之後再也不更新的軟件包會帶來安全問題。因此,從 Fedora 30 開始,Fedora 社區決定完全 移除 MongoDB 服務器 。

開發人員還有哪些選擇?

是的,還有替代方案,例如 PostgreSQL 在最新版本中也支持 JSON,它可以在無法再使用 MongoDB 的情況下使用它。使用 JSONB 類型,索引在 PostgreSQL 中可以很好地工作,其性能可與 MongoDB 媲美,甚至不會受到 ACID 的影響。

開發人員可能選擇 MongoDB 的技術原因並未隨許可證而改變,因此許多人仍想使用它。重要的是要意識到,SSPL 許可證僅更改僅針對 MongoDB 服務器。MongoDB 上游還開發了其他項目,例如 MongoDB 工具、C 和 C++ 客戶端庫以及用於各種動態語言的連接器,這些項目在客戶端使用(通過網絡與服務器通信的應用中)。由於這些包的許可證人保持自由(主要是 Apache 許可證),因此它們保留在 Fedora 倉庫中,因此用戶可以將其用於應用開發。

唯一的變化實際是服務器軟件包本身,它已從 Fedora 倉庫中完全刪除。讓我們看看 Fedora 用戶可以如何獲取非自由的包。

如何從上游安裝 MongoDB 服務器

當 Fedora 用戶想要安裝 MongoDB 服務器時,他們需要直接向上遊獲取 MongoDB。但是,上游不為 Fedora 提供 RPM 包。相反,MongoDB 服務器可以獲取源碼 tarball,用戶需要自己進行編譯(這需要一些開發知識),或者 Fedora 用戶可以使用一些兼容的包。在兼容的選項中,最好的選擇是 RHEL-8 RPM。以下步驟描述瞭如何安裝它們以及如何啟動守護進程。

1、使用上游 RPM 創建倉庫(RHEL-8 構建)

<code>$ sudo cat > /etc/yum.repos.d/mongodb.repo >>EOF[mongodb-upstream]name=MongoDB Upstream Repositorybaseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.2/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.2.ascEOF/<code> 

2、安裝元軟件包,來拉取服務器和工具包

<code>$ sudo dnf install mongodb-org......Installed:  mongodb-org-4.2.3-1.el8.x86_64           mongodb-org-mongos-4.2.3-1.el8.x86_64    mongodb-org-server-4.2.3-1.el8.x86_64    mongodb-org-shell-4.2.3-1.el8.x86_64  mongodb-org-tools-4.2.3-1.el8.x86_64          Complete!/<code>

3、啟動 MongoDB 守護進程

<code>$ sudo systemctl status mongod● mongod.service - MongoDB Database Server   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)   Active: active (running) since Sat 2020-02-08 12:33:45 EST; 2s ago     Docs: https://docs.mongodb.org/manual  Process: 15768 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)  Process: 15769 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)  Process: 15770 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)  Process: 15771 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 15773 (mongod)   Memory: 70.4M      CPU: 611ms   CGroup: /system.slice/mongod.service/<code>

4、通過 mongo shell 連接服務器來驗證是否運行

<code>$ mongoMongoDB shell version v4.2.3connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("20b6e61f-c7cc-4e9b-a25e-5e306d60482f") }MongoDB server version: 4.2.3Welcome to the MongoDB shell.For interactive help, type "help".For more comprehensive documentation, see    http://docs.mongodb.org/---/<code>

就是這樣了。如你所見,RHEL-8 包完美兼容,只要 Fedora 包還與 RHEL-8 兼容,它就應該會一直兼容。請注意,在使用時必須遵守 SSPLv1 許可證。


via: https://fedoramagazine.org/how-to-get-mongodb-server-on-fedora/

作者: Honza Horak 選題: lujun9972 譯者: geekpi 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


分享到:


相關文章: