webfaction自动启动mongodb

时间:2014-09-01 06:53:11

标签: mongodb webfaction

我在webfaction上阅读了文档 并使用步骤

安装mongodb

它说:

To start the database, run $HOME/webapps/application/mongodb-linux-architecture-version/bin/mongod --auth --dbpath $HOME/webapps/application/data/ --port number.
To stop MongoDB while it is running in the foreground, press Ctrl + C. 

但我需要保持数据库始终运行 我怎么办? 拜托我。谢谢。

4 个答案:

答案 0 :(得分:6)

在$ HOME / webapps /

中创建Makefile
start:
        if ! pgrep mongod; then ./<mongodb-dir-linux-version>/bin/mongod --auth --dbpath <dbpath> --port <port> --fork --logpath ./logs/mongodb.log; fi


stop:
        pgrep mongod | xargs kill

现在您可以轻松地从mongodb app目录启动/停止mongodb make start / make stop并关闭shh会话。 将它添加到cron以保持mongodb服务保持活动,即使突然发生了某些事情(例如服务器关闭):

> export EDITOR=nano
> crontab -e

添加以下两行并保存。

*/10 * * * * make -C ~/webapps/<mongodb app name>/ -f ~/webapps/<mongodb app name>/Makefile start
@reboot make -C ~/webapps/<mongodb app name>/ -f ~/webapps/<mongodb app name>/Makefile start

答案 1 :(得分:0)

如果您希望mongodb服务器始终启动并运行,则必须将其安装为服务。 MongoDB官方网站上有一个安装指南: MongoDB Install as a Service on Linux

答案 2 :(得分:0)

Makefile(位于~/webapps/mongodb下面)可能如下所示:

# Mongodb Makefile
start restart:
    ~/webapps/mongodb/mongodb-linux-x86_64-<your distribution>/bin/mongod --auth --dbpath ~/webapps/mongodb/data --port 12345 --fork --logpath ~/webapps/mongodb/logs/mongodb.log

stop:
    ~/webapps/mongodb/mongodb-linux-x86_64-<your distribution>/bin/mongod --port 12345 --dbpath ~/webapps/mongodb/data --shutdown

请务必事先创建日志文件夹。

mkdir logs

@ Arugin的回答不适用于运行的多个mongodb实例。

答案 3 :(得分:0)

我发现这对webfaction有用:

在您的$HOME/webapps/mongo40文件夹中创建mongo_restart.sh bash脚本

`ps -A | grep -q '[m]ongod'`

if [ "$?" -eq "0" ]; then
    exit 0
else
    nohup $HOME/webapps/mongo40/mongo64-rhel70/bin/mongod --auth --dbpath $HOME/webapps/mongo40/data/ --port <port number> &

exit 0

然后使用crontab -e将其添加到您的crontab中:

@reboot nohup /home/<userfolder>/webapps/mongo40/<mongo install folder>/bin/mongod --auth --dbpath $HOME/webapps/mongo40/data/ --port <port number>
*/2 * * * * /home/<userfolder>/webapps/mongo40/mongo_restart.sh

如果bash脚本发现它不在内存中,它将每2分钟检查并重新启动mongo。