我按照以下说明在 VMware 内的 Ubuntu Server VM 中安装了 MongoDB:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/一切正常,我可以通过常规端口 27017 访问 MongoDB
./mongo 172.16.150.131:27017
现在,我想创建一个虚拟副本集和另一个数据库实例来测试我的应用程序。我习惯在本地计算机上的四个独立终端中执行以下命令:
./mongod --port 27027 --dbpath ~/mongodb/solo
./mongod --port 27028 --dbpath ~/mongodb/rs0-0 --replSet rs0
./mongod --port 27029 --dbpath ~/mongodb/rs0-1 --replSet rs0
./mongod --port 27030 --dbpath ~/mongodb/rs0-2 --replSet rs0
我如何在虚拟机中执行此操作?我通过 SSH 进入虚拟机,运行命令并关闭终端(在 OS X 中)后,它们应该仍在运行。
我试过:
service mongodb --port 27027 --dbpath ~/mongodb/solo
service mongodb ~/mongodb/solo/mongodb.conf
但两者都会出现以下错误(上下文不同):
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb --config=~/mongodb/solo/mongodb.conf
The script you are attempting to invoke has been converted to an Upstart
job, but --config=~/mongodb/solo/mongodb.conf is not supported for Upstart jobs.
我该如何让它工作?第一次使用 Ubuntu 作为服务器。谢谢。
上下文-目标是在虚拟机中创建我的数据库,以便在测试我的应用程序时产生某种滞后,但主要是这样我就可以暂停虚拟机,而不是在每次重新启动笔记本电脑时将脚本复制并粘贴到不同的终端中来设置 MongoDB。
答案1
当您使用 Ubuntu 软件包进行安装时,它会创建一个 upstart 作业,这就是您在 Ubuntu 系统上使用服务启动/停止的作业。当然,mongod
默认情况下它只启动一个并且有一个配置。该 upstart 作业可以在此处找到(默认情况下):
/etc/init/mongodb.conf
/etc/mongodb.conf
不要将其与 MongoDB 服务的配置文件的默认位置混淆。
如果您希望能够自动启动/停止额外的实例,或者希望让 upstart 管理它们,那么您只需要创建指向不同配置文件的重复作业(或在作业文件本身中指定不同的选项)。首先查看我上面提到的 init 中的文件,然后在此处查看有关滚动您自己的 upstart 作业的更多信息:
http://upstart.ubuntu.com/cookbook/
当然,另一个选择是直接调用额外的mongod
实例。例如:
/usr/bin/mongod --fork --config=~/mongodb/solo/mongodb.conf
该--fork
选项(如果未在配置文件中指定)需要分叉到后台并且当您注销并终止 shell 时不会被杀死。