2017-10-11 170 views
0

因此,我使用xampp在本地测试了使用PHP和MongoDB的基本程序。这一切工作正常。现在我想将其作为网站发布。连接到亚马逊EC2上托管的mongoDb Bitnami服务器

经过一番研究,我决定使用Bitnami,并且我在Amazon上运行EC2服务器。我能够从终端ssh并运行命令。现在我想连接到服务器并创建一个Mongo客户端。我有点困惑,不知道如何完全做到这一点。我正在使用下面的代码。 SSH工作正常,但我不知道如何设置mongo客户端。 '$ m = new MongoClient();'本地工作正常localhost,我也试图提供给MongoClient我的用户名和密码,但没有成功。非常感谢您的帮助!

include('Net/SSH2.php'); 
include('Crypt/RSA.php'); 

$key = new Crypt_RSA(); 
$key->loadKey(file_get_contents('../../etc/bitnami.pem')); 


$ssh = new Net_SSH2('ip_address'); 
if (!$ssh->login('bitnami', $key)) { 
    exit('Login Failed'); 
} 

$ssh->exec('mongo admin --username root -p <myPassword>'); 

$m = new MongoClient(); 
$db = $m->mydb; 
echo "Database mydb selected"; 
$collection = $db->mycol; 
echo "Collection selected succsessfully"; 

$document = array( 
    "title" => "MongoDB", 
    "description" => "database" 
); 

$collection->insert($document); 

更新答案霍塔马托斯(无法将它写为注释): 你好,谢谢你的回答。是的,现在我允许从所有端口和IP进行测试。我可以通过SSH成功​​连接,但现在我卡住了。我运行一个Mean bitnami应用程序,我的网站在PHP下运行在GoDaddy服务器上。所以我想用PHP连接到我在AWS上托管的mongoDB bitnami应用程序。所以现在的问题是,我的GoDaddy服务器mongoDB没有安装。因此,运行以下代码不起作用:

$m = new MongoDB\Driver\Manager("mongodb://${bitnami}:${AWSpassword}@hostIp"); 

致命错误:未找到类'MongoDB \ Driver \ Manager'。

所以我的问题如何从PHP连接我的GoDaddy服务器到EC2亚马逊服务器并连接到Bitnami mongoDB帐户。我应该首先设置一个到服务器的ssh连接,然后尝试登录到mongoDB服务器,或者我应该如何连接?

任何帮助表示感谢,提前谢谢!

回答

0

根据php.net使用的函数是Deprecated,refer this

你可以尝试这样的:

<?php 

$manager = new MongoDB\Driver\Manager("mongodb://myusername:myp%40ss%3Aw%[email protected]/mydatabase"); 

?> 

Refer this

+0

谢谢您的回答,我会考虑这一点。我不明白的是,对于我的EC2服务器,我有一个IP,用户名和密码,然后在服务器上,mongoDB应用程序使用用户名和密码运行。我应该首先ssh到我的服务器,然后尝试使用此命令创建一个MongoDB连接? – AlexanderTGreat

0

嗨Bitnami工程师在这里,

除此之外tip,请注意,在这个解决方案数据库端口的节点不能默认情况下通过公共IP地址访问。出于安全原因,我们不建议通过公共IP地址访问数据库端口。

https://docs.bitnami.com/aws/infrastructure/mongodb/#how-to-connect-to-mongodb-from-a-different-machine

您可以通过访问AWS控制台和修改访问组配置打开服务器MongoDB的端口

https://docs.bitnami.com/aws/faq/#how-to-open-the-server-ports-for-remote-access

您还需要修改MongoDB的配置文件(/opt/bitnami/mongodb/mongodb.conf )允许数据库不能仅在127.0.0.1上工作。

问候, 霍塔

+0

谢谢你的回答。是的,现在我打开所有端口进行测试。但是,我不明白的是,如何从外部服务器连接到我的EC2服务器并运行mongoDB。因为在我的外部服务器上没有安装MongoDB,所以我不能使用PHP命令“new MongoDB \ Driver \ Manager”。我可以ssh使用PHP到我的EC2实例,但是如何连接到mongoDB?任何帮助表示赞赏。 – AlexanderTGreat

+0

您只需要在脚本中使用PHP的MongoDB驱动程序,如果您打开端口或在服务器中安装MongoDB客户端,则不需要创建SSH通道。您可以在其官方PHP页面中找到有关如何安装和使用该驱动程序的更多信息:http://php.net/manual/en/set.mongodb.php –

+0

谢谢!所以我能够在服务器上启用Mongo PHP驱动程序。我在IC2上启用了流量UDP/TCP,并将bind_ip更改为0.0.0.0。我检查了IC2,并且mongoDB实例已启动并正在运行。但是,我收到以下错误消息:“致命错误:未捕获的异常'MongoConnectionException'消息'无法连接到:ip:port:连接被拒绝”。我正在使用以下命令“$ m = new MongoClient(”mongodb:// ip“,array(”username“=>”bitnami“,”password“=> $ key));”我知道这个调用已被弃用,但另一个命令不会产生错误信息。 – AlexanderTGreat