python - docker + nginx + uwsgi + mongodb 本地测试正常,服务器无法连接mongodb?

 kingsharedn_594 发布于 2022-10-28 13:03

环境: nginx, uwsgi(flask), mongodb 各运行在独立的docker容器中。

问题: 本地测试一切正常,部署到服务器(腾讯云)之后,无法连接到mongodb数据库。
uwsgi日志如下:

[pid: 8|app: 0|req: 2/3] 117.27.149.14 () {42 vars in 610 bytes} [Mon Sep 12 03:37:26 2016] HEAD / => generated 0 bytes in 30019 msecs (HTTP/1.1 500) 2 headers in 0 bytes (0 switches on core 1)
[2016-09-12 03:37:56,255] ERROR in app: Exception on / [HEAD]
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.5/dist-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/flask/views.py", line 149, in dispatch_request
    return meth(*args, **kwargs)
  File "./app/main/views.py", line 17, in get
    list_categories = get_categories(Post.objects)
  File "/usr/local/lib/python3.5/dist-packages/mongoengine/queryset/manager.py", line 37, in __get__
    queryset = queryset_class(owner, owner._get_collection())
  File "/usr/local/lib/python3.5/dist-packages/mongoengine/document.py", line 176, in _get_collection
    db = cls._get_db()
  File "/usr/local/lib/python3.5/dist-packages/mongoengine/document.py", line 169, in _get_db
    return get_db(cls._meta.get("db_alias", DEFAULT_CONNECTION_NAME))
  File "/usr/local/lib/python3.5/dist-packages/mongoengine/connection.py", line 173, in get_db
    source=conn_settings['authentication_source'])
  File "/usr/local/lib/python3.5/dist-packages/pymongo/database.py", line 1018, in authenticate
    connect=True)
  File "/usr/local/lib/python3.5/dist-packages/pymongo/mongo_client.py", line 439, in _cache_credentials
    writable_preferred_server_selector)
  File "/usr/local/lib/python3.5/dist-packages/pymongo/topology.py", line 210, in select_server
    address))
  File "/usr/local/lib/python3.5/dist-packages/pymongo/topology.py", line 186, in select_servers
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: mongodb_1:27017: [Errno 111] Connection refused
Mon Sep 12 03:37:56 2016 - SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) !!!
Mon Sep 12 03:37:56 2016 - uwsgi_response_write_headers_do(): Broken pipe [core/writer.c line 238] during HEAD / (117.34.28.13)
[pid: 10|app: 0|req: 1/4] 117.34.28.13 () {42 vars in 609 bytes} [Mon Sep 12 03:37:26 2016] HEAD / => generated 0 bytes in 30061 msecs (HTTP/1.1 500) 2 headers in 0 bytes (0 switches on core 0)

但是,我进入uwsgi容器,在代码目录下执行 python3 manage.py deploy完全没问题(这个命令会往数据库里插入一条数据),所以貌似是这样的:flask可以和mongodb正常通信,但是uwsgi不行。

简直蛋疼得紧!

uwsgi配置如下

[uwsgi]

# 提供http和socket两种通信方式
http = 0.0.0.0:8080 
socket = /tmp/%n.sock

# socket 文件权限
chmod-socket = 666

# 网站主目录
chdir = /var/www/chriscafe.me

# 程序启动文件
wsgi-file = manage.py

# 程序内启动 application 的变量名
callable = app 

# 日志文件路径
logto = /var/log/uwsgi/%n.log

# 处理器数
processes = 4

# 线程数
threads = 2

#状态检测地址(本地地址,只有管理员才可以查看)
stats = 127.0.0.1:9191
2 个回答
  • 你这个问题解决了吗,我也遇到这个问题,直接运行代码测试可以访问数据库,换到nginx+uwsgi就刚刚启动的时候可以,一会就不行了

    2022-10-29 16:18 回答
  • 应用和数据库是在同一台机器,还是不同机器,如果是不同机器,检查一下防火墙端口是否开放

    2022-10-29 16:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有