Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接django+;mongoengine到远程mongodb_Django_Mongodb_Ssh_Mongoengine - Fatal编程技术网

连接django+;mongoengine到远程mongodb

连接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

我有一个用Django编写的web应用程序,其中mongoengine是数字海洋水滴。在开发步骤中,我使用了一个位于远程环境中的主数据库示例。但是现在我想将Django web应用程序连接到主MongoDB数据库。我该怎么做?使用ssh隧道(我已经在两个环境之间使用它了)?如果是,我如何进行这种连接?我知道如何使用pymongo建立ssh隧道:

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隧道,那么让他们在数据库服务器和应用程序服务器之间设置它。除了制作一个“实用程序”来“管理数据库”之外,您不需要将其编码到应用程序中,我认为您实际上并没有这样做。