更改MongoDB服务器的名称

时间:2014-07-22 15:34:01

标签: mongodb

在MongoDB中,如何更改服务器/守护程序的名称,或者创建名称不是localhost的新服务器?文档指定了一种连接到具有特定名称的服务器的方法,例如localhost--host命令中的mongo选项),以及指定名称的方法复制集中的每个服务器,我现在都忘记了,但不是说出为mongod命令创建实例的服务器名称的方法。它似乎必须是localhost

我有node.jsapache,所以我可以使用虚拟主机,我显然在类Unix操作系统上有一个hosts文件(/etc/hosts和Windows上的C:\WINDOWS\System32\drivers\etc\hosts,所以我可以创建一个名称与localhost不同的服务器,但问题是我可以使用mongod等内置命令来执行此操作,或者配置文件?

2 个答案:

答案 0 :(得分:4)

与HTTP协议(如在Apache等Web服务器中运行的Web应用程序所使用的)不同,MongoDB Wire Protocol在确定如何处理传入请求时不使用主机名。这意味着MongoDB服务器没有等效的主机名或虚拟主机指令。

MongoDB服务器配置文件允许您bind to one or more IP addresses。绑定IP配置选项指定服务器侦听的传入连接的IP地址。例如,如果您未指定绑定IP,则可能是:127.0.0.1(aka localhost),逗号分隔的IP地址列表或所有网络接口限制。

当您连接到MongoDB并在命令行或驱动程序选项中指定主机名时,此名称只能从外部角度进行解析。您可以在MongoDB之外使用任何形式的可解析主机名(例如,在/etc/hosts文件或DNS中)。只要MongoDB服务器正在侦听您的主机名解析为的IP(并且没有防火墙或网络连接问题),您就应该能够连接而不管使用的主机名。

例如,虽然localhost是可用于环回IP地址(127.0.0.1)的默认名称,但应始终定义..通常,您的计算机也将定义唯一的主机名。您可以使用mongo检查getHostName() shell中默认主机名解析的内容:

> getHostName()
Webscale.local

假设没有绑定IP限制且主机名为Webscale.local且IP地址为192.168.1.1,您就可以连接以下任何一个:

  • Webscale.local
  • 192.168.1.1
  • 本地主机
  • 127.0.0.1

答案 1 :(得分:0)

利用 Docker 环境,创建两个容器,一个用于您的 Mongo 服务器,另一个用于您的应用程序,在一个 docker-compose.yml 文件中运行这两个容器,指定您的应用程序容器将依赖于您的 mongo 容器,然后替换“ localhost" 应用程序中的连接字符串,带有 mongo 容器的名称。参考以下两个片段:

docker-compose.yml

version: '3'
 services:
   img_flaskapp:
      build: ./Flask/gie
      container_name: flaskapp
      ports:
        - "8000:8000"
      depends_on: 
        - img_mongodb
   img_mongodb:
      image: mongo
      container_name: mongodb
      ports:
       - "27017:27017"

应用代码

connect (host="mongodb://mongodb:27017/nameofyourdb")