薊縣網(wǎng)站制作培訓(xùn)網(wǎng)站源碼
mongodb的安裝,基本上參考文章[1]。
但是在過程中,有一些踩坑點(diǎn)。
1,高版本mongodb不自帶mongo腳本
在文章1中,作者在解壓后,直接使用了mongo腳本,而我下載的mongodb版本要更高,在解壓后,bin目錄中沒有mongo腳本,mongo腳本是mongodb的命令行客戶端,據(jù)說,這個從6.0版本開始是要自己安裝的。
2,mongodb缺少依賴
在使用mongod啟動server時,提示缺少依賴。通過ldd mongod
命令,發(fā)現(xiàn)缺少依賴如下:
libnetsnmpmibs.so.31
libnetsnmpagent.so.31
嘗試過使用yum whatprovides XXX來找到包含該依賴的組件并安裝,發(fā)現(xiàn)都是一些net-snmp-agent-XXX。yum install后并沒有解決問題。
后來從文章[2]那里,找到了解決辦法,安裝net-snmp。
yum install net-snmp
安裝后,就不會有缺少依賴的報錯了。
其實(shí)mongodb解壓后,里面包括一個snmp的包,應(yīng)該是需要snmp的。snmp是一種網(wǎng)絡(luò)協(xié)議[3],而net-snmp是實(shí)現(xiàn)了snmp的組件[4]。總之缺少了net-snmp,mongodb是無法工作的。
3,依然無法正常啟動,可能是data、logs目錄出現(xiàn)了問題
到此時,再次啟動Mongodb,依然無法正常啟動。奇怪的是,mongod腳本啟動server沒有提示信息就直接結(jié)束了。當(dāng)使用mongod關(guān)閉server時,提示似乎沒有server在運(yùn)行。
mongod關(guān)閉server
mongod --shutdown -f /etc/mongodb.conf
這就有點(diǎn)奇怪了。我找到這篇文章[5],殺死進(jìn)程,還是會有新的27017端口進(jìn)程出現(xiàn),按照文章[5]所述,應(yīng)該是守護(hù)進(jìn)程不斷重啟導(dǎo)致的,在/etc/mongodb.conf中,將fork設(shè)置為false,這樣就能夠正常殺死進(jìn)程了。但是發(fā)現(xiàn)還是無法正常啟動。
此時根據(jù)文章[5]給我的啟示,可能是data logs出現(xiàn)了問題。查看了下/etc/profile和/etc/mongodb.conf中data logs路徑的配置都沒有問題。而data目錄下存在了很多文件,我此時還沒有正常啟動,哪來的data文件呢,因此我猜測可能是data目錄出現(xiàn)了問題,因此刪除了data和logs目錄(logs里的Log是追加的,出問題的可能不大,但是保險起見,一起刪除了)。
刪除后,重新mkdir和touch來創(chuàng)建data和logs,再次啟動,啟動成功。
[root@localhost bin]# mongo --host 127.0.0.1 --port 27017
MongoDB shell version v5.0.24
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1be50feb-f2bb-4986-8153-ecf03190cd1d") }
MongoDB server version: 5.0.24
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.com
---
The server generated these startup warnings when booting: 2024-01-24T01:40:16.103-08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted2024-01-24T01:40:16.103-08:00: You are running this process as the root user, which is not recommended2024-01-24T01:40:16.104-08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'2024-01-24T01:40:16.104-08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'2024-01-24T01:40:16.104-08:00: Soft rlimits for open file descriptors too low2024-01-24T01:40:16.104-08:00: currentValue: 10242024-01-24T01:40:16.104-08:00: recommendedMinimum: 64000
---
MongoDB Enterprise >
但是此時不要忘記,最好把守護(hù)進(jìn)程打開,使用mongod shutdown將server關(guān)閉后,將配置文件里/etc/mongodb.conf里的fork改為true。
這時再次關(guān)閉server,依然會報錯,客戶端依然能夠連上server,可能是因?yàn)閒ork為true無法關(guān)閉。
參考文章:
[1],Linux下MongoDB的安裝與配置
[2],centos7 安裝mongo ./mongod: error while loading shared libraries: libnetsnmpmibs.so.31:
[3],什么是SNMP?
[4],Snmp學(xué)習(xí)總結(jié)(六)——NET-SNMP 簡介與使用
[5],mongodb啟動異常:about to fork child process, waiting until server is ready for connection