我在Linux CentOS服务器上安装了mongo-10gen mongo-10gen- server.
我按照Link的步骤进行操作.
我已将/etc/mongod.conf配置为 -
logpath=/var/log/mongo/mongod.log
port=27017
dbpath=/var/lib/mongo
Run Code Online (Sandbox Code Playgroud)
我在iptables中为mongo设置了端口27017 .要启动mongo,我使用了命令 -
service mongod start and
mongo
Run Code Online (Sandbox Code Playgroud)
它开始很好,但几天后我得到错误 -
Tue Jan 29 08:41:54 [initandlisten] ERROR: Insufficient free space for journal files
Tue Jan 29 08:41:54 [initandlisten] Please make at least 3379MB available in /var/lib/mongo/journal or use --smallfiles
Tue Jan 29 08:41:54 [initandlisten]
Tue Jan 29 08:41:54 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Tue Jan 29 08:41:54 dbexit: …Run Code Online (Sandbox Code Playgroud) 我正在使用:
uWSGI启动参数:
--socket 127.0.0.1:8081 --daemonize --enable-threads --threads 2 --processes 2
Run Code Online (Sandbox Code Playgroud)
我设置我的MongoClient ONE时间:
self.mongo_client = MongoClient('mongodb://user:pw@host.mongolab.com:port/mydb')
self.db = self.mongo_client['mydb']
Run Code Online (Sandbox Code Playgroud)
我尝试将一个JSON字典保存到MongoDB:
result = self.db.jobs.insert_one(job_dict)
Run Code Online (Sandbox Code Playgroud)
它通过单元测试工作,该测试执行与mongodb相同的代码路径.但是当我使用HTTP POST通过CherryPy和uWSGI执行时,我得到了这个:
pymongo.errors.ServerSelectionTimeoutError: No servers found yet
Run Code Online (Sandbox Code Playgroud)
为什么我在通过CherryPy和uWSGI运行时会看到这种行为?这可能是PyMongo 3中的新线程模型吗?
更新:
如果我通过使用CherryPy内置服务器运行没有uWSGI和nginx,那么就insert_one()可以了.
更新1/25美国东部时间下午4:53:
在PyMongo中添加一些调试后,似乎topology._update_servers()知道服务器'myserver-a.mongolab.com'的server_type = 2.但是server_description.known_servers()服务器'myserver.mongolab.com'的server_type = 0
这导致以下堆栈跟踪:
result = self.db.jobs.insert_one(job_dict)
File "/usr/local/lib/python3.4/site-packages/pymongo/collection.py", line 466, in insert_one
with self._socket_for_writes() as sock_info:
File "/usr/local/lib/python3.4/contextlib.py", line 59, in __enter__
return next(self.gen)
File …Run Code Online (Sandbox Code Playgroud) Fatal error: Uncaught exception 'MongoConnectionException' with message
'Failed to connect to: localhost:27017: Permission denied' in
/var/www/html/test.php:8 Stack trace: #0 /var/www/html/test.php(8):
MongoClient->__construct() #1 {main} thrown in /var/www/html/test.php
on line 8
Run Code Online (Sandbox Code Playgroud)
嗨Mongo专家......
我是一个想要试用MongoDB的开发人员.所以在一台测试机(Dell E520 Intel双核4GB Ram)中安装了centoOS 6.5 64bit,安装了PHP(Apache已经存在).
然后安装MongoDB(yum install mongo-10gen mongo-10gen-server),然后安装"pecl install mongo"(安装ok:channel://pecl.php.net/mongo-1.4.5),添加了extension = mongo.so到php.ini.
要安装pecl,我安装了一些其他东西,比如C++编译器和php-pear.php5-dev&php5-cli在yum中不可用所以安装了php-devel和php-cli(已安装的版本是php-devel-5.3.3-27.el6_5.x86_64&php-cli-5.3.3-27.el6_5 .x86_64
我关掉了iptables防火墙.Ran mongo --host localhost:27017来自shell并连接没有问题
[root@localhost ~]# mongo --host localhost:27017
MongoDB shell version: 2.4.8
connecting to: localhost:27017/test
>
Run Code Online (Sandbox Code Playgroud)
这些是test.php的内容
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
// connect
$m = new MongoClient();
//$m = new MongoClient("mongodb://localhost:27017");
// select …Run Code Online (Sandbox Code Playgroud) mongodb ×3
connection ×1
exception ×1
journal ×1
linux ×1
mlab ×1
pymongo-3.x ×1
python ×1
uwsgi ×1