我正在使用Apache mod_wsgi在CentOS 7上尝试使用MS SQL Server的Django。我可以使用python manage.py runserver 0.0.0.0:8000
运行Django应用程序并导航到我的grappeli管理页面。
但是,当我使用Apache运行时,主站点加载得很好,但是当我尝试导航到管理页面时,我得到OperationalError: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
。
奇怪的是,runserver可以使用与我指向我的apache配置相同的virtualenv工作。
pip freeze:
Django==1.11.10
django-grappelli==2.10.2
django-pyodbc==1.1.3
django-pyodbc-azure==1.11.9.0
pymssql==2.1.3
pyodbc==4.0.22
/etc/httpd/conf.d/django.conf的内容:
<Directory /opt/measurement_app/measurement_app>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess measurement_app python-path=/opt/measurement_app:/opt/measurement_app/measurementenv/lib/python2.7/site-packages
WSGIProcessGroup measurement_app
WSGIScriptAlias / /opt/measurement_app/measurement_app/wsgi.py
settings.py:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'MEASUREMENT',
'HOST': ****,
'PORT': 1433,
'USER': ****,
'PASSWORD': *****,
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'dsn': 'app-sqldb',
'use_legacy_datetime': True,
}
}
}
ODBCINST.INI
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.0.so.1.1
UsageCount=1
ODBC.INI
[app-sqldb]
Driver = ODBC Driver 17 for SQL Server
Description = SQL Server 2012 DenSQL
Server = ****
instance = MEASUREMENT
Database = MEASUREMENT
Port = 1433
Trace = Yes
TraceFile = /tmp/odbc.log
答案 0 :(得分:0)
所以问题是我的SELinux配置是限制性的并且阻止了连接。解决方案是编辑我的/etc/selinux/config
并设置
SELINUX=disabled
然后reboot
mod_wsgi文档提到SELinux可能会导致一些问题: