14218


**現象** ：  
serviceコマンドからのスタートが出来ない。

[code]

    $ service mongod start    [失敗]
    
[/code]

**試したこと** ：  
lockファイルの削除、DBの修復

[code]

    $ rm -f /var/lib/mongo/mongod.lock /usr/local/var/mongod/mongod.lock
    $ mongod --repair --dbpath=/data/db/
    
[/code]

**現状** ：  
\- mongodコマンドを打つと、実行中には出来ます。  
\- 別のシェルを立ち上げて、mongoコマンドでシェルを起動することも出来ました。  
\- `$ service mongod status`とすると停止状態です。  
\- psコマンド、netstatコマンドで確認してもポートかぶりや実は動いている・・・  
といったことは確認できませんでした。

**設定ファイル** ：  
bind_ipの変更とipv6=trueの追記をしました。

[code]

    bind_ip=192.168.XX.XX
    ipv6=true
    
[/code]

**環境** ：  
Vagrant  
host:windows8.1  
guest:CentOS6.6  
MongoDB shell version: 2.6.10  
MongoDB db version: 2.6.10

以上です、何かご存知の方がいらっしゃいましたら  
ご教授願います。

追記します。

**エラーログ** ：  
シェル上は特に何も出ずです。

[code]

    [root@localhost log]# service mongod start
    Starting mongod:                                           [失敗]
    [root@localhost log]#
    
[/code]

mongoDBのログファイルも更新されていませんでした。

ただ、/var/log/secureに以下のエラーログが吐かれていました。

[code]

    Aug  5 07:16:41 localhost runuser: pam_unix(runuser:session): session opened for user mongod by vagrant(uid=0)
    Aug  5 07:16:41 localhost runuser: pam_unix(runuser:session): session closed for user mongod
    
[/code]

**実行ログ** ：  
`bash -x /etc/init.d/mongod start`を実行してみました。  
始めて使ったコマンドなのでちんぷんかんぷんですが；  
頑張ってみます。

[code]

    + . /etc/rc.d/init.d/functions
    ++ TEXTDOMAIN=initscripts
    ++ umask 022
    ++ PATH=/sbin:/usr/sbin:/bin:/usr/bin
    ++ export PATH
    ++ '[' -z '' ']'
    ++ COLUMNS=80
    ++ '[' -z '' ']'
    +++ /sbin/consoletype
    ++ CONSOLETYPE=pty
    ++ '[' -f /etc/sysconfig/i18n -a -z '' -a -z '' ']'
    ++ . /etc/profile.d/lang.sh
    ++ unset LANGSH_SOURCED
    ++ '[' -z '' ']'
    ++ '[' -f /etc/sysconfig/init ']'
    ++ . /etc/sysconfig/init
    +++ BOOTUP=color
    +++ RES_COL=60
    +++ MOVE_TO_COL='echo -en \033[60G'
    +++ SETCOLOR_SUCCESS='echo -en \033[0;32m'
    +++ SETCOLOR_FAILURE='echo -en \033[0;31m'
    +++ SETCOLOR_WARNING='echo -en \033[0;33m'
    +++ SETCOLOR_NORMAL='echo -en \033[0;39m'
    +++ PROMPT=yes
    +++ AUTOSWAP=no
    +++ ACTIVE_CONSOLES='/dev/tty[1-6]'
    +++ SINGLE=/sbin/sushell
    ++ '[' pty = serial ']'
    ++ __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
    + CONFIGFILE=/etc/mongod.conf
    + OPTIONS=' -f /etc/mongod.conf'
    + SYSCONFIG=/etc/sysconfig/mongod
    ++ awk '-F[:=]' -v IGNORECASE=1 '/^[[:blank:]]*dbpath[[:blank:]]*[:=][[:blank:]]*/{print $2}' /etc/mongod.conf
    ++ tr -d '[:blank:]'
    + DBPATH=/var/lib/mongo
    ++ tr -d '[:blank:]'
    ++ awk '-F[:=]' -v IGNORECASE=1 '/^[[:blank:]]*pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' /etc/mongod.conf
    + PIDFILE=/var/run/mongodb/mongod.pid
    ++ dirname /var/run/mongodb/mongod.pid
    + PIDDIR=/var/run/mongodb
    + mongod=/usr/bin/mongod
    + MONGO_USER=mongod
    + MONGO_GROUP=mongod
    + '[' -f /etc/sysconfig/mongod ']'
    + . /etc/sysconfig/mongod
    + NUMACTL_ARGS=--interleave=all
    + which numactl
    + NUMACTL=
    + RETVAL=0
    + case "$1" in
    + start
    + '[' '!' -d /var/run/mongodb ']'
    + ulimit -f unlimited
    + ulimit -t unlimited
    + ulimit -v unlimited
    + ulimit -n 64000
    + ulimit -m unlimited
    + ulimit -u 64000
    + echo -n 'Starting mongod: '
    Starting mongod: + daemon --user mongod --check /usr/bin/mongod ' /usr/bin/mongod  -f /etc/mongod.conf >/dev/null 2>&1'
    + local gotbase= force= nicelevel corelimit
    + local pid base= user= nice= bg= pid_file=
    + local cgroup=
    + nicelevel=0
    + '[' --user '!=' -user ']'
    + case $1 in
    + user=mongod
    + shift 2
    + '[' --check '!=' -check ']'
    + case $1 in
    + base=/usr/bin/mongod
    + gotbase=yes
    + shift 2
    + '[' ' /usr/bin/mongod  -f /etc/mongod.conf >/dev/null 2>&1' '!=' ' /usr/bin/mongod  -f /etc/mongod.conf >/dev/null 2>&1' ']'
    + '[' -z yes ']'
    + __pids_var_run /usr/bin/mongod ''
    + local base=mongod
    + local pid_file=/var/run/mongod.pid
    ++ /usr/bin/dirname /var/run/mongod.pid
    + local pid_dir=/var/run
    + local binary=
    + '[' -d /var/run -a '!' -r /var/run ']'
    + pid=
    + '[' -f /var/run/mongod.pid ']'
    + return 3
    + '[' -n '' -a -z '' ']'
    + corelimit='ulimit -S -c 0'
    + '[' -n '' ']'
    + '[' -n '' ']'
    + '[' color = verbose -a -z '' ']'
    + '[' -z mongod ']'
    + runuser -s /bin/bash mongod -c 'ulimit -S -c 0 >/dev/null 2>&1 ;  /usr/bin/mongod  -f /etc/mongod.conf >/dev/null 2>&1'
    + '[' 1 -eq 0 ']'
    + failure '/usr/bin/mongod 起動'
    + local rc=1
    + '[' color '!=' verbose -a -z '' ']'
    + echo_failure
    + '[' color = color ']'
    + echo -en '\033[60G'
                                                               + echo -n '['
    [+ '[' color = color ']'
    + echo -en '\033[0;31m'
    + echo -n $'\345\244\261\346\225\227'
    失敗+ '[' color = color ']'
    + echo -en '\033[0;39m'
    + echo -n ']'
    ]+ echo -ne '\r'
    + return 1
    + '[' -x /bin/plymouth ']'
    + /bin/plymouth --details
    + return 1
    + RETVAL=1
    + echo
    
    + '[' 1 -eq 0 ']'
    + exit 1
    
[/code]

**startのファンクションを変更後** ：

/etc/init.d/mongodのstart()を以下のように変更。

[code]

    #  daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
      daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS"
    
[/code]

シェルで`service mongod start`を実行。

[code]

    Starting mongod: about to fork child process, waiting until server is ready for connections.
    forked process: 4985
    ERROR: child process failed, exited with error number 1
                                                               [失敗]
    
[/code]

**設定ファイル(/etc/mongod.conf)** ：

[code]

    # 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
    
    # Listen to local interface only. Comment out to listen on all interfaces.
    # bind_ip=127.0.0.1
    bind_ip=192.168.33.10
    ipv6=true
    
    # Disables write-ahead journaling
    # nojournal=true
     journal=true
     smallfiles=true
    
    # Enables periodic logging of CPU utilization and I/O wait
    #cpu=true
    
    # Turn on/off security.  Off is currently the default
    #noauth=true
    #auth=true
    
    # Verbose logging output.
    #verbose=true
    
    # Inspect all client data for validity on receipt (useful for
    # developing drivers)
    #objcheck=true
    
    # Enable db quota management
    #quota=true
    
    # Set oplogging level where n is
    #   0=off (default)
    #   1=W
    #   2=R
    #   3=both
    #   7=W+some reads
    #diaglog=0
    
    # Ignore query hints
    #nohints=true
    
    # Enable the HTTP interface (Defaults to port 28017).
    #httpinterface=true
    
    # Turns off server-side scripting.  This will result in greatly limited
    # functionality
    #noscripting=true
    
    # Turns off table scans.  Any query that would do a table scan fails.
    #notablescan=true
    
    # Disable data file preallocation.
    #noprealloc=true
    
    # Specify .ns file size for new databases.
    # nssize=<size>
    
    # Replication Options
    
    # in replicated mongo databases, specify the replica set name here
    #replSet=setname
    # maximum size in megabytes for replication operation log
    #oplogSize=1024
    # path to a key file storing authentication info for connections
    # between replica set members
    #keyFile=/path/to/keyfile
    
[/code]

**ファイル詳細**  
ひとまず、`find / -name mongo` で検索をかけて、必要になりそうなものの権限を調べました。

[code]

    ■ /root/
    -rw-------.  1 root root     0  8月  5 00:28 2015 .mongorc.js
    -rw-r--r--.  1 root root     0  8月  6 08:32 2015 mongod.log
    
    ■ /var/lib/
    drwxrw-rw-.  3 mongod  mongod 4096  8月  6 02:05 2015 mongo
    
    ■ /var/lib/mongo/:
    合計 81936
    drwxrw-rw-.  2 mongod mongod     4096  8月  6 02:06 2015 journal
    -rwxrw-rw-.  1 mongod mongod 67108864  8月  6 01:42 2015 local.0
    -rwxrw-rw-.  1 mongod mongod 16777216  8月  6 01:42 2015 local.ns
    
    ■ /var/lib/mongo/journal:
    合計 2228244
    -rwxrw-rw-. 1 mongod mongod  134217728  8月  6 02:06 2015 prealloc.0
    -rwxrw-rw-. 1 mongod mongod 1073741824  8月  4 11:56 2015 prealloc.1
    -rwxrw-rw-. 1 mongod mongod 1073741824  8月  4 11:56 2015 prealloc.2
    
    ■ /var/run/
    drwxr-xr-x.  2 mongod  mongod  4096  8月  6 02:04 2015 mongodb
    
    ■ /var/log/
    drwxr-xr-x.  2 mongod mongod   4096  8月  6 08:34 2015 mongodb
    
    ■ /var/log/mongodb
    -rw-r--r--. 1 root   root    2278  8月  6 08:34 2015 mongod.log
    -rw-r-----. 1 mongod mongod 46307  8月  4 14:24 2015 mongod.log.2015-08-04T11-51-01
    -rw-r--r--. 1 root   root    7858  8月  6 02:06 2015 mongod.log.2015-08-05T23-54-14
    -rw-r--r--. 1 root   root    3845  8月  6 01:54 2015 mongod.log.2015-08-06T00-02-05
    -rw-r--r--. 1 root   root    3845  8月  6 02:02 2015 mongod.log.2015-08-06T00-02-51
    -rw-r--r--. 1 root   root    1741  8月  6 02:02 2015 mongod.log.2015-08-06T06-29-24
    -rw-r--r--. 1 root   root    2278  8月  6 08:29 2015 mongod.log.2015-08-06T06-34-35
    
    ■ /usr/local/var/
    drwxrw-rw-.  8 mongod mongod 4096  8月  6 11:28 2015 mongod
    
    ■ /usr/local/var/mongod
    drwxrw-rw-. 2 mongod mongod     4096  8月  6 11:28 2015 _tmp
    drwxrw-rw-. 2 mongod mongod     4096  8月  7 02:09 2015 journal
    drwxrw-rw-. 2 mongod mongod     4096  8月  5 00:11 2015 local
    -rwxrw-rw-. 1 mongod mongod 67108864  8月  6 10:40 2015 local.0
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 10:40 2015 local.ns
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 14:55 2015 mongo_project_development.0
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 14:55 2015 mongo_project_development.ns
    -rwxrw-rw-. 1 mongod mongod        0  8月  7 02:09 2015 mongod.lock
    drwxrw-rw-. 2 mongod mongod     4096  8月  5 14:43 2015 sampledb
    -rwxrw-rw-. 1 mongod mongod 67108864  8月  6 10:47 2015 sampledb.0
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 10:40 2015 sampledb.ns
    drwxrw-rw-. 2 mongod mongod     4096  8月  5 14:43 2015 test
    -rwxrw-rw-. 1 mongod mongod 67108864  8月  6 10:40 2015 test.0
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 10:40 2015 test.ns
    drwxrw-rw-. 2 mongod mongod     4096  8月  5 14:42 2015 testdb
    -rwxrw-rw-. 1 mongod mongod 67108864  8月  6 10:40 2015 testdb.0
    -rwxrw-rw-. 1 mongod mongod 16777216  8月  6 10:40 2015 testdb.ns
    
    ■ /usr/local/var/mongod/_tmp:空
    
    ■ /usr/local/var/mongod/journal:
    -rwxrw-rw-. 1 mongod mongod 134217728  8月  7 02:09 2015 prealloc.0
    -rwxrw-rw-. 1 mongod mongod 134217728  8月  6 02:10 2015 prealloc.1
    -rwxrw-rw-. 1 mongod mongod 134217728  8月  6 02:10 2015 prealloc.2
    
    ■ /usr/local/var/mongod/local:空
    
    ■ /usr/local/var/mongod/sampledb:空
    
    ■ /usr/local/var/mongod/test:空
    
    ■ /usr/local/var/mongod/testdb:空
    
    ■ /usr/share/man/manX/
    -rw-r--r--.  1 root root  16592  5月 19 17:25 2015 mongo.1
    -rw-r--r--.  1 root root  39099  5月 19 17:25 2015 mongod.1
    -rw-r--r--.  1 root root  16840  5月 19 17:25 2015 mongodump.1
    -rw-r--r--.  1 root root  19099  5月 19 17:25 2015 mongoexport.1
    -rw-r--r--.  1 root root  14153  5月 19 17:25 2015 mongofiles.1
    -rw-r--r--.  1 root root  16065  5月 19 17:25 2015 mongoimport.1
    -rw-r--r--.  1 root root  13347  5月 19 17:25 2015 mongooplog.1
    -rw-r--r--.  1 root root   5825  5月 19 17:25 2015 mongoperf.1
    -rw-r--r--.  1 root root  16644  5月 19 17:25 2015 mongorestore.1
    -rw-r--r--.  1 root root  23535  5月 19 17:25 2015 mongos.1
    -rw-r--r--.  1 root root  15941  5月 19 17:25 2015 mongostat.1
    -rw-r--r--.  1 root root  12415  5月 19 17:25 2015 mongotop.1
    
    ■ /usr/bin/
    -rwxr-xr-x.  1 root root    11957616  5月 19 17:25 2015 mongo
    -rwxr-xr-x.  1 root root    23937328  5月 19 17:25 2015 mongod
    -rwxr-xr-x.  1 root root    23828304  5月 19 17:25 2015 mongodump
    -rwxr-xr-x.  1 root root    23774576  5月 19 17:25 2015 mongoexport
    -rwxr-xr-x.  1 root root    23823616  5月 19 17:25 2015 mongofiles
    -rwxr-xr-x.  1 root root    23798992  5月 19 17:25 2015 mongoimport
    -rwxr-xr-x.  1 root root    23766384  5月 19 17:25 2015 mongooplog
    -rwxr-xr-x.  1 root root    23580768  5月 19 17:25 2015 mongoperf
    -rwxr-xr-x.  1 root root    23868944  5月 19 17:25 2015 mongorestore
    -rwxr-xr-x.  1 root root    18540080  5月 19 17:25 2015 mongos
    -rwxr-xr-x.  1 root root    23819824  5月 19 17:25 2015 mongostat
    -rwxr-xr-x.  1 root root    23762096  5月 19 17:25 2015 mongotop
    
    ■ /etc/mongod.conf
    -rw-r--r--.  1 root root   1598  8月  6 01:52 2015 mongod.conf
    
    ■ /etc/rc.d/init.d/mongod
    -rwxr-xr-x.  1 root root  2719  8月  6 08:20 2015 mongod
    
    ■ /etc/rc.d/init.d/mongod.bk
    -rwxr-xr-x.  1 root root  2644  8月  6 08:19 2015 mongod.bk
    
    ■ /etc/rc.d/rc0.d/K15mongod
    lrwxrwxrwx.  1 root root   16  8月  4 11:33 2015 K15mongod -> ../init.d/mongod
    
    ■ /etc/rc.d/rc1.d/K15mongod
    lrwxrwxrwx.  1 root root   16  8月  4 11:33 2015 K15mongod -> ../init.d/mongod
    
    ■ /etc/rc.d/rc4.d/S85mongod
    lrwxrwxrwx.  1 root root   16  8月  5 00:20 2015 S85mongod -> ../init.d/mongod
    
    ■ /etc/rc.d/rc5.d/S85mongod
    lrwxrwxrwx.  1 root root   16  8月  5 00:20 2015 S85mongod -> ../init.d/mongod
    ■ /etc/rc.d/rc5.d/S85mongod
    lrwxrwxrwx.  1 root root   16  8月  5 00:20 2015 S85mongod -> ../init.d/mongod
    ■ /etc/rc.d/rc3.d/S85mongod
    lrwxrwxrwx.  1 root root   16  8月  5 00:20 2015 S85mongod -> ../init.d/mongod
    ■ /etc/rc.d/rc6.d/K15mongod
    lrwxrwxrwx.  1 root root   16  8月  4 11:33 2015 K15mongod -> ../init.d/mongod
    
    ■ /etc/sysconfig/mongod
    -rw-r--r--.  1 root root   47  5月 19 17:25 2015 mongod
    
[/code]

**SELinux**

[code]

    $ setenforce 0
    setenforce: SELinux is disabled
    $ service mongod start
    Starting mongod: about to fork child process, waiting until server is ready for connections.
    forked process: 3806
    ERROR: child process failed, exited with error number 1
                                                               [失敗]
    
[/code]


CC BY-SA 3.0
2015-08-04T22:58:00.587
13047
2015-08-09T19:00:13.023
2015-08-09T05:46:10.130
9336
9336
question
linux centos mongodb
MongoDBのサービスを常駐できない


一般論として、対話シエルでは動くけどinitを起源とするプロセスで動かそうとするとエラーになる場合、SELinuxを疑うのが早道です。(そもそもSELinuxはデーモン乗っ取りを主な防御対象としているので)

mongoDBのサイト <http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-
hat/> に対処方法が書かれていますね。真ん中あたりのConfigure
SELinuxの3項目のうちどれか一つをやればいいようです。(個人的にはSELinuxを停止させるのは問題を先送りにしているだけなので3番目をお勧めいたします)


CC BY-SA 3.0
2015-08-06T08:25:22.777
13104
2015-08-06T08:25:22.777
8136
13047
answer


調査結果の記載ありがとうございます。  
ログファイルのオーナーがrootになっておりmongodユーザの書き込み権限がありませんね。  
これはおそらく root で mongod を起動したときに作られたのだと思います。  
service start mongod した場合は mongod ユーザプロセスが実行されますので ログに追加書き込みができてない状態だと思われます。

対処としてはchownでファイルオーナーをmongodに変更するのがいいと思います。

[code]

    # chown mongod:mongod /var/log/mongod.log
    # service mongod start
    
[/code]


CC BY-SA 3.0
2015-08-09T19:00:13.023
14218
2015-08-09T19:00:13.023
5008
13047
answer