在MongoDB中,如何更改服务器/守护程序的名称,或者创建名称不是localhost
的新服务器?文档指定了一种连接到具有特定名称的服务器的方法,例如localhost
(--host
命令中的mongo
选项),以及指定名称的方法复制集中的每个服务器,我现在都忘记了,但不是说出为mongod
命令创建实例的服务器名称的方法。它似乎必须是localhost
。
我有node.js
和apache
,所以我可以使用虚拟主机,我显然在类Unix操作系统上有一个hosts
文件(/etc/hosts
和Windows上的C:\WINDOWS\System32\drivers\etc\hosts
,所以我可以创建一个名称与localhost
不同的服务器,但问题是我可以使用mongod
等内置命令来执行此操作,或者配置文件?
答案 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
,您就可以连接以下任何一个:
答案 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")