2017-10-11 210 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