Я только что установил и настроил MongoDB на экземпляре AWS Linux и пытаюсь подключиться к нему удаленно, используя PHP и MongoClient
класс, несмотря на скрупулезные проверки конфигурации.
у меня есть mongod
процесс работает в фоновом режиме, со следующей конфигурацией:
# mongod.conf
logpath=/var/log/mongodb/mongod.log
logappend=true
fork=true
port=27017
dbpath=/srv/mongodb/
pidfilepath=/var/run/mongodb/mongod.pid
# bind_ip=127.0.0.1
bind_ip=0.0.0.0
Моя группа безопасности AWS настроена так:
Custom TCP Rule TCP 27017 [IP of php server]/32
А потом мой PHP-скрипт, который выглядит так:
##### TESTING & DEBUG #####
ini_set('display_errors', 'On');
error_reporting(E_ALL);
// Display the status of the mongo extension
echo extension_loaded("mongo") ? "loaded\n" : "not loaded\n";
// Create the connection
$mongo = new MongoClient("mongodb://ec2-xx-xx-xx-xx.compute-1.amazonaws.com");
// Select the test database
$db = $mongo->test;
// Select a collection
$c = $db->collection;
// Get the cursor
$cursor = $c->find();
// Dump the contents of the cursor
echo '<pre>'.print_r($cursor,true).'</pre>';
Это, конечно, ошибка, возвращаемая PHP:
Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: ec2-xx-xxx-xx-xx.compute-1.amazonaws.com:27017: Connection timed out' in test-mongo.php:14 Stack trace: #0 test-mongo.php(14): MongoClient->__construct('mongodb://ec2-x...') #1 {main} thrown in test-mongo.php on line 14
mongod
серверный процесс запущен, что подтверждено ps -A
:
23171 ? 00:00:01 mongod
Какие-нибудь идеи, что заставило бы это не соединиться? Все в конфигурации мне кажется правильным.
Задача ещё не решена.
Других решений пока нет …