2015-08-15 17 views
3

由於某些原因,在我所在的地區,我無法通過終端從apt-get下載並安裝mongodb。所以我下載了.tar.gz版本http://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/如何在Ubuntu中運行mongodb(從tar.gz中提取)作爲服務?

我可以開始它的mongod程序。但我想安裝mongod作爲在Ubuntu 14.04啓動時運行的服務。如何正確執行此操作? 我試過了一些由此提供的init.d腳本:https://ewan.im/15/mongodb-initd-script

唯一的問題是:在14.04,他們刪除了chkconfig。我的實驗安裝的chkconfig結束了

Package chkconfig is not available, but is referred to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 

E: Package 'chkconfig' has no installation candidate 

編輯:我試過https://askubuntu.com/questions/221293/why-is-chkconfig-no-longer-available-in-ubuntu沒有運氣無論是。

我希望我應該使用upstartsystemd。任何人都可以有例子或其他解決方案嗎?

+0

你試試這個替代chkconfig的http://askubuntu.com/questions/221293/why-is-chkconfig-no-longer-available-in-ubuntu –

+0

沒了,已經試過這樣:sudo的SYSV-RC - conf mongod上,仍然在連接錯誤,但如果我直接執行我的mongod,它運行! – DennyHiu

+0

我不能幫助啓動mongodb作爲一項服務它取決於你的個人配置,但我可以做一個init.d腳本來啓動和關閉你的mongod在特定的運行級別如果你想 –

回答

3

這裏是init.d下開始的MongoDB作爲 「服務」 的一種變通方法:

#!/bin/sh 
#title   :mongod 
#author  :Bertrand Martel 
#date   :15/08/2015 
#description :start/stop/restart mongod 
######################################### 
### install : cp mongod /etc/init.d/ 
#    update-rc.d mongod defaults 
### uninstall : update-rc.d -f mongodb remove 

PATH_TO_MONGO=/usr/bin/mongod 

#file containing all mongodb pid 
PID_FILE=/tmp/mongodb.pid 

case "$1" in 
    start) 
     echo "Starting mongodb service..." 

     COMMAND_TO_RUN=`start-stop-daemon -S -b -m -p $PID_FILE -x $PATH_TO_MONGO& :` 
     setsid sh -c $COMMAND_TO_RUN> /dev/null 2>&1 < /dev/null 

     echo -e "\E[31;33m[ OK ]\E[0m" 
     ;; 
    stop) 
     echo "Stopping mongodb service..." 

     start-stop-daemon -K -q -p $PID_FILE 

     echo -e "\E[31;33m[ OK ]\E[0m" 
     ;; 
    restart|reload) 
     "$0" stop 
     "$0" start 
     ;; 
    *) 
     echo $"Usage: $0 {start|stop|restart}" 
     exit 1 
esac 

exit $? 

對於安裝:

cp mongod /etc/init.d/ 

update-rc.d mongod defaults 

對於卸載:

update-rc.d -f mongodb remove 

首發:

/etc/init.d/mongod start 

停止:

/etc/init.d/mongod stop 

重啓:

/etc/init.d/mongod restart 

mongod的是在開機時自動啓動了。

要點:https://gist.github.com/bertrandmartel/a3865fa441248f23d51e

+0

謝謝!我可以使用上面的init.d腳本啓動'mongod'服務。但是我有些困惑。 「cp mongod/etc/init.d /'行意味着mongod可執行文件本身必須被複制到'/ etc/init.d'文件夾中。做什麼的 ?我剛開始使用'sudo service mongod start'將該腳本複製到init.d文件夾中,然後啓動我的服務,其中'mongod'是一個腳本文件,我將其複製到init.d文件夾中 – DennyHiu

+0

還有一件事我真的很想問,是「普遍」之上的腳本?我的意思是,它適用於所有Linux系列(SUSE,Debian等)還是僅適用於Ubuntu系統? – DennyHiu

+0

該腳本將在基於System V的發行版上運行,這是最常見的Linux系統。系統V會將腳本存儲在rcX.d目錄中,BSD系統會將其存儲在/etc/rc.d中。 init.d腳本是舊的做法,所以服務允許在upstart腳本和init.d腳本之間轉換。暴發戶意味着要與init.d進行逆向兼容。 @denny對於你的拳頭問題,我沒有在init.d文件夾中複製mongod的可執行文件,而是在上面提到的啓動腳本。我將腳本命名爲mongod –

0

對於任何試圖做到這一點在Debian 8,我添加了這些LSB標籤頂部附近得到它的工作:

### BEGIN INIT INFO 
# Provides:   mongod 
# Required-Start: $network $remote_fs $syslog 
# Required-Stop:  $network $remote_fs $syslog 
# Should-Start:  $named 
# Should-Stop: 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: MongoDB init script 
# Description:  MongoDB 
### END INIT INFO 

也行,第一行更改爲:

#!/bin/bash 
相關問題