2014-10-27 365 views
4

我最近在Red Hat Enterprise Linux服務器上安裝了mongo 2.6.5版本。一切工作正常,直到我決定在/etc/mongod.conf文件中進行更改。我注意到從上面的版本2.6開始,mongo支持YAML格式的conf文件。 (我想做出改變是原因,我想啓用蒙戈實例的認證)啓動mongod服務時出現「dirname:missing operand」錯誤

http://docs.mongodb.org/manual/reference/configuration-options/

我改變了以前看像我下面的配置文件(我只增加的部分配置):

# mongod.conf 

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

logappend=true 

# fork and run in background 
fork=true 

#port=27017 

dbpath=/var/lib/mongo 

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

我改動過的文件mongod.conf文件看起來像現在如下:

systemLog: 
    destination: file 
    path: "/var/log/mongodb/mongodb.log" 
    logAppend: true 

storage: 
    dbPath: "/var/lib/mongo" 
    journal: 
     enabled: true 

processManagement: 
    pidFilePath: "/var/run/mongodb/mongod.pid" 
    fork: true 

security: 
    authorization: true![enter image description here][1] 

現在,當我嘗試運行的mongod服務它給我的錯誤(見附圖): 目錄名稱:缺少操作數 嘗試「目錄名稱--help」以獲取更多信息 開始的mongod:[失敗]

當我恢復我的mongod.conf文件到以前的版本,然後服務運行良好。我是否需要在我的mongo安裝中更改某些內容以使其使用YAML格式的配置?

+0

conf看起來不錯。 'dirname'是一個命令行程序 - 這聽起來像問題在於你如何運行服務。你看過嗎? – wdberkeley 2014-10-29 16:46:26

+0

我沒有看到你的依戀,但我突然得到了這個,儘管mongod無論如何開始。這是否與內核更新巧合? – 2014-11-06 07:27:16

回答

3

似乎雖然mongod支持YAML配置文件,但是initscripts還沒有被修改來處理它們。

2

我一直在使用mongo 2.6.5在Centos 6.6上跟蹤同樣的問題。錯誤來自/etc/init.d/functions,當它試圖找到程序的基本名稱,然後自動生成一個PID文件。這就是被稱爲由daemon像這樣:

daemon --user mongod ' /usr/bin/mongod -f /etc/mongod.conf >/dev/null 2>&1' 

基礎變量抓住最後一個斜線以及PidFile默認爲基地+「.pid」之後的一切。通常情況下,你可以執行這樣的事情:

daemon --user nobody /usr/bin/some-service 
# base: some-service 
# pid file: some-service.pid 

對於蒙戈,基變量設置爲「空2> & 1」,然後運行basename null 2>&1導致您所看到的錯誤。解決此問題的最簡單方法是使用--check命令行參數指定要運行的實際二進制文件daemon。編輯/etc/init.d/mongod和周圍線111搜索:

# Old version 
#daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 

# New, working version 
daemon --user "$MONGO_USER" --check "$mongod" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 

沒有挖掘太多進一步調查這個問題,它看起來像這種說法缺少由於疏忽。

4

有幾件事情:

  1. 確保您在/etc/mongod.conf定義PID文件位置

    pidfilepath=/var/run/mongodb/mongod.pid 
    
  2. 變化在/ etc /初始化的 「守護進程」 路線。d/mongod的明確使用PID文件

    daemon --user "$MONGO_USER" --check "$mongod" --pidfile "$PIDFILE" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 
    

另外,請確保以下全部由mongod的

  • 在/ var /日誌/ MongoDB的
  • /var/run中資/ MongoDB的
  • 您DBPATH
2

有一個JIRA問題本錯誤,here

他們有一個很好的解決方法,即更改用於在配置文件中查找值的REGEX。