我试图使用mod_wsgi在apache上运行一个不稳定的烧瓶应用程序。这在开发服务器上运行得很好。我已经阅读了我所能找到的一切,而我所看到的答案似乎都不适合我。该应用程序正确处理非数据库请求,但当我试图访问需要数据库访问的url时,会出现以下错误:
OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 13] Permission denied)") None None
我已经削减到基本上烧瓶-不安定的快速启动与我的config和我的烧瓶-sqlalchemy模型导入(from flask import models)。下面是我的python代码:
import flask
import flask.ext.sqlalchemy
import flask.ext.restless
import sys
sys.path.insert(0, '/proper/path/to/application')
application = flask.Flask(__name__, static_url_path = "")
application.debug=True
application.config.from_object('config')
db = flask.ext.sqlalchemy.SQLAlchemy(application)
from app import models
# Create the Flask-Restless API manager.
manager = flask.ext.restless.APIManager(application, flask_sqlalchemy_db=db)
# Create API endpoints, which will be available at /api/<tablename> by
# default. Allowed HTTP methods can be specified as well.
manager.create_api(models.Asset, methods=['GET'])
# start the flask loop
if __name__ == '__main__':
application.run()我假设mod_wsgi在查找包含数据库访问详细信息的config文件时没有问题,因为我在读取配置时没有收到错误,在from app import models上也没有错误。
到目前为止,我的研究已经让我相信,这与存在于错误范围或上下文中的sql-炼金术db连接有关,并且可能由于烧瓶- that管理器而变得复杂。我似乎不能把我的头绕在这上面。
发布于 2014-06-04 10:46:21
Apache/mod_wsgi下的代码将作为一个特殊的Apache用户运行。该用户可能没有连接到数据库所需的特权。
尽管它写着“localhost”,而且您认为这可能意味着正常的套接字连接,但一些数据库客户端将看到“localhost”,并将自动尝试并将UNIX套接字用于数据库。它可能无法访问该UNIX套接字连接。
或者,在通过UNIX套接字连接时,它试图验证Apache用户是否拥有访问权限,但如果数据库尚未设置以允许Apache用户访问,则可能会失败。
考虑使用mod_wsgi的守护进程模式,并将守护进程模式配置为与Apache用户不同的运行模式,并且您所知道的用户可以访问数据库。
https://stackoverflow.com/questions/24031230
复制相似问题