解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作:
chown -R mongod:mongod …

PHP + MongoDB + Centos

php 是可以使用 MongoDB 的。
CodeIgniter 3 這個框架沒有內建支援不過有很多人出來寫相關的東西,我測試了一下這個可用
https://github.com/intekhabrizvi/Codeigniter-mongo-library

抓下來以後複製到相對應的資料夾,由於這個 gitHUB 裡面沒有寫範例。所以可以看一下這邊:
http://classpattern.com/codeigniter-mongodb.html#.VvIvahJ96Hp


MongoDB 安裝完後並不是直接可以讓 PHP 使用 PHP需要安裝另外的拓展包。以 CentOS為例:

pecl install mongo

如果 pecl 找不到這個命令的話請執行:
yum install gcc php56w-pear php56w-devel
這樣就可以利用 pecl 去編譯 php 需要的模組啦!

接著~如果 pecl install mongo 的時候出現
make: *** [io_stream.lo] Error 1
ERROR: `make' failed
這樣的錯誤的話請多加裝一個
yum install openssl-devel
然後重新安裝 pecl install mongo



如果有成功的話,系統會提醒你需要去修改 php.ini 然後把這個模組掛上去
extension=mongo.so
重新開啟 httpd 服務就大功告成啦!

留言

這個網誌中的熱門文章

[JavaScript] 將 CSV 檔案轉換成 JSON 資料

JavaScript 將 Array 和 Object 轉成 JSON

讓 PHP 接收 post 的 json 資料