连接django+;mongoengine到远程mongodb
我有一个用Django编写的web应用程序,其中mongoengine是数字海洋水滴。在开发步骤中,我使用了一个位于远程环境中的主数据库示例。但是现在我想将Django web应用程序连接到主MongoDB数据库。我该怎么做?使用ssh隧道(我已经在两个环境之间使用它了)?如果是,我如何进行这种连接?我知道如何使用pymongo建立ssh隧道:连接django+;mongoengine到远程mongodb,django,mongodb,ssh,mongoengine,Django,Mongodb,Ssh,Mongoengine,我有一个用Django编写的web应用程序,其中mongoengine是数字海洋水滴。在开发步骤中,我使用了一个位于远程环境中的主数据库示例。但是现在我想将Django web应用程序连接到主MongoDB数据库。我该怎么做?使用ssh隧道(我已经在两个环境之间使用它了)?如果是,我如何进行这种连接?我知道如何使用pymongo建立ssh隧道: from sshtunnel import SSHTunnelForwarder import pymongo server = SSHTunnel
from sshtunnel import SSHTunnelForwarder
import pymongo
server = SSHTunnelForwarder(
(remote_ip_address, 22),
ssh_private_key="/home/username/.ssh/id_rsa",
ssh_username="username",
remote_bind_address=('127.0.0.1', 27017),
)
server.start()
client = pymongo.MongoClient('127.0.0.1', server.local_bind_port)
但是我如何与Django web应用程序进行等效连接呢?目前,我在settings.py
文件中有以下定义
# MongoDB settings
MONGODB_DATABASES = {'default': {'name':'dbname'} }
DATABASES = {'default': {'ENGINE': 'django.db.backends.dummy'} }
您不需要创建SSH隧道。如果您这样做了,那么应该在基础架构级别而不是在应用程序本身中进行设置。您可能真的只想在外部可见的地址上连接到远程服务器,最好启用TLS。因此,简而言之,只需添加外部地址(IP/DNS)和来自提供商的指定连接选项。抱歉,我不知道如何做到这一点。我认为远程服务器(主数据库所在的位置)没有DNS服务器。这只是我用ssh登录到的另一台机器。这真的需要您的SysAdmin/DevOps人员来解决。您需要“某种”额外的访问权限才能简单地将ssh连接到一个框中。数据库应该有一个开放端口,并且它们的TLS安全性也应该在数据库上设置正确。同样,如果此人真的想坚持使用SSH隧道,那么让他们在数据库服务器和应用程序服务器之间设置它。除了制作一个“实用程序”来“管理数据库”之外,您不需要将其编码到应用程序中,我认为您实际上并没有这样做。