ubuntu中用于mongodb的Upstart脚本


11

我是linux和mongodb的新手。我已经在ubuntu上安装了mongodb,但是我想在其他端口上再运行一个实例。从其他问题和论坛中了解到,必须有新贵脚本。 /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

但是我无法在服务器上找到或找到upstart脚本,如果创建upstart脚本,则应将其定位为服务启动位置。

或者是否有其他适当且简便的方法在同一服务器上但不同端口上启动mongodb的另一个实例。

Answers:


8

您是从10gen存储库运行还是从默认的Debian / Ubuntu存储库运行?我建议使用官方的10gen存储库。

检出此链接-[10gen在Ubuntu上安装MongoDB的方法:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/。最好在此更改之前卸载先前的mongodb安装,这也将需要您修改存储库源(在/etc/apt/source.list中),但这在上面的链接中也有详细介绍。我建议在sysvinit上使用upstart,并且操作方法中概述了处理过程。

使用10gen Ubuntu设置后,配置文件位于/etc/mongodb.conf中。

您可以通过多种方法来运行单独的mongod进程,其中一种方法是仅从cli中运行它-

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

会产生(使用“ ps”)

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

你可以通过cli-> mongod --port 3001连接

另一种方法是创建/etc/mongodb.conf的副本-

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

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

port = 27018

我已经将dbpath(存储mongodb文件的位置)从/ var / lib / mongodb更改为/ var / lib / mongodbnew;日志路径已从mongodb.log更改为mongodbnew.log,并且端口已从默认值27017更改为27018(您还必须删除#来取消注释该行)。

我还更改了第一行以反映此配置文件的新名称。

您还必须创建数据目录,因为它不存在,没有它,mongod进程将无法启动,并确保所有者和组是mongodb-

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

此外,创建和更改日志文件的权限-

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

要从cli(在后台)启动新的mongod进程,请键入

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

将以下内容发送到屏幕-

“所有输出将转到:/var/log/mongodb/mongodbnew.log”

检查mongod进程是否以“ ps”运行-

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

要验证您可以连接,请运行Mongo Shell-

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

使用lsof,您现在应该看到两个mongod进程,原始进程绑定到27017,而新进程绑定到27018。

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

为了确保这两个进程在启动时都能运行,请复制原始的init配置文件-

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

这将导致两个文件,例如-

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

使用vi或任何您喜欢的样子编辑新的mongodbnew.conf文件-


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

停止运行级别[06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

结束脚本

我已经在Ubuntu 12.04上对此进行了测试,它似乎可以很好地工作,包括重启后。我显然还没有在生产中运行它。抱歉,如果上面有任何错别字,但有很多信息,我可能错过了一些东西。

最后,这是副本集上的链接,它可能会为您提供帮助,因为它提供了从cli启动多个mongod实例的示例-http: //www.mongodb.org/display/DOCS/Replica+Set+Tutorial



2

我遇到了以上答案的问题,其中stop-start-daemon不会多次启动具有相同名称的新进程。但是,有一个--name参数可以让您在upstart脚本中更改该行/etc/init/以包括一个新名称,以便它可以开始。像这样:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

在这种情况下,该--name参数使该实例唯一,并使其可以与其他mongod实例分开启动。


0

upstart 脚本位于 /etc/init/


thnx,有一个mongodb.conf,但是它是默认运行实例的默认conf文件

我刚刚看了一下mongodb.conf,它大概会从/ etc / default / mongodb进行配置,然后使用start-stop-daemon启动mongodb

您可以复制此文件并修改命令以使用其他端口启动mongodb。您可能想要指定一个全新的配置文件,以便可以更改日志文件等
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.