带有 ModWsgi 和 Apache 的 Django 不是有效的应用程序
Django with ModWsgi and Apache not a valid application
这最终成为 OSx MySQL 配置不当的原因:相对路径问题的不安全使用,但我已经离开了原始问题,因为 reader 具有相同的面包屑踪迹.
所以这是一个奇怪的问题 - 我正在尝试将 Django 部署到 Mac 运行 OSx 上的 Apache、ModWSGI 但我 运行 到以下错误信息:
目标 WSGI 脚本 '/Library/WebServer/local_biems/biems/wsgi.py' 不包含 WSGI 应用程序
现在:
- local_biems 与 python manage.py runserver 一起运行正常,没有静音问题。所以我相信我的项目没有错误,可以部署了。
- 测试应用程序 local_blog 使用 runserver 和我的虚拟主机配置运行正常 - 所以我假设 Apache 和 MODWSGI 一起愉快地玩。
- local_biems 和 local_blog 在 /Library/WebServer/ 中彼此相邻,并且具有相同的权限。
- 如果我更新虚拟主机中的文件路径,重新启动 apache 并硬重新加载站点,我会收到上述错误。
- WSGI 文件是相同的。
我可以尝试什么?我试过 try/catch 围绕 get_wsgi_application()
的声明
try:
application = get_wsgi_application()
print 'WSGI without exception'
except Exception:
print 'handling WSGI exception'
# Error loading applications
if 'mod_wsgi' in sys.modules:
traceback.print_exc()
os.kill(os.getpid(), signal.SIGINT)
time.sleep(2.5)
但同样的问题。如果我删除它并坚持使用标准...
Fri Dec 08 08:23:15.188440 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] Traceback (most recent call last):, referer: http://biems.local/
[Fri Dec 08 08:23:15.188471 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/WebServer/local_biems/biems/wsgi.py", line 16, in <module>, referer: http://biems.local/
[Fri Dec 08 08:23:15.188521 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] application = get_wsgi_application(), referer: http://biems.local/
[Fri Dec 08 08:23:15.188542 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application, referer: http://biems.local/
[Fri Dec 08 08:23:15.188599 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] django.setup(set_prefix=False), referer: http://biems.local/
[Fri Dec 08 08:23:15.188615 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/__init__.py", line 27, in setup, referer: http://biems.local/
[Fri Dec 08 08:23:15.188637 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] apps.populate(settings.INSTALLED_APPS), referer: http://biems.local/
[Fri Dec 08 08:23:15.188650 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 78, in populate, referer: http://biems.local/
[Fri Dec 08 08:23:15.188682 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] raise RuntimeError("populate() isn't reentrant"), referer: http://biems.local/
[Fri Dec 08 08:23:15.188703 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] RuntimeError: populate() isn't reentrant, referer: http://biems.local/
尽管我刚刚注释掉了我的所有(但 1 个)应用程序。奇怪的是,同一个站点正在处理删除 Ubuntu VPS 没问题!
好的,所以我刚刚将数据库设置从 local_biems 复制到 local_blog,但出现 MYSQL 错误。
daviesc@orion:local_biems [0]$ tail -f /var/log/apache2/local_blog.error.log
[Fri Dec 08 08:42:57.704722 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 115, in load_backend, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704740 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] return import_module('%s.base' % backend_name), referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704750 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704766 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] __import__(name), referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704776 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 30, in <module>, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704913 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] 'Did you install mysqlclient or MySQL-python?' % e, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704934 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704941 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704946 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so with restricted binary., referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704951 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Did you install mysqlclient or MySQL-python?, referer: http://biems.local/polls/
好的。我追踪到 -
尽管需要更新最后一个参数以反映新路径。
sudo install_name_tool -change libmysqlclient.18.dylib /
/usr/local/mysql/lib/libmysqlclient.18.dylib /
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so
这可能是一个 OSx 特定问题 - 这是在 10.12.6 上发生的。我不确定我是否会轻易找到它,因为 SQL 错误似乎只出现一次,然后编译的文件报告一个不同的错误。我发现使用
find . -type f -name '*.pyc' -exec rm {} +
删除所有已编译的文件有帮助。
还必须将 Debug 设置为 True,以免出现信息量较少的 500 错误。
这最终成为 OSx MySQL 配置不当的原因:相对路径问题的不安全使用,但我已经离开了原始问题,因为 reader 具有相同的面包屑踪迹.
所以这是一个奇怪的问题 - 我正在尝试将 Django 部署到 Mac 运行 OSx 上的 Apache、ModWSGI 但我 运行 到以下错误信息:
目标 WSGI 脚本 '/Library/WebServer/local_biems/biems/wsgi.py' 不包含 WSGI 应用程序
现在:
- local_biems 与 python manage.py runserver 一起运行正常,没有静音问题。所以我相信我的项目没有错误,可以部署了。
- 测试应用程序 local_blog 使用 runserver 和我的虚拟主机配置运行正常 - 所以我假设 Apache 和 MODWSGI 一起愉快地玩。
- local_biems 和 local_blog 在 /Library/WebServer/ 中彼此相邻,并且具有相同的权限。
- 如果我更新虚拟主机中的文件路径,重新启动 apache 并硬重新加载站点,我会收到上述错误。
- WSGI 文件是相同的。
我可以尝试什么?我试过 try/catch 围绕 get_wsgi_application()
的声明try:
application = get_wsgi_application()
print 'WSGI without exception'
except Exception:
print 'handling WSGI exception'
# Error loading applications
if 'mod_wsgi' in sys.modules:
traceback.print_exc()
os.kill(os.getpid(), signal.SIGINT)
time.sleep(2.5)
但同样的问题。如果我删除它并坚持使用标准...
Fri Dec 08 08:23:15.188440 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] Traceback (most recent call last):, referer: http://biems.local/
[Fri Dec 08 08:23:15.188471 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/WebServer/local_biems/biems/wsgi.py", line 16, in <module>, referer: http://biems.local/
[Fri Dec 08 08:23:15.188521 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] application = get_wsgi_application(), referer: http://biems.local/
[Fri Dec 08 08:23:15.188542 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application, referer: http://biems.local/
[Fri Dec 08 08:23:15.188599 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] django.setup(set_prefix=False), referer: http://biems.local/
[Fri Dec 08 08:23:15.188615 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/__init__.py", line 27, in setup, referer: http://biems.local/
[Fri Dec 08 08:23:15.188637 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] apps.populate(settings.INSTALLED_APPS), referer: http://biems.local/
[Fri Dec 08 08:23:15.188650 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 78, in populate, referer: http://biems.local/
[Fri Dec 08 08:23:15.188682 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] raise RuntimeError("populate() isn't reentrant"), referer: http://biems.local/
[Fri Dec 08 08:23:15.188703 2017] [wsgi:error] [pid 16734] [client 127.0.0.1:55348] RuntimeError: populate() isn't reentrant, referer: http://biems.local/
尽管我刚刚注释掉了我的所有(但 1 个)应用程序。奇怪的是,同一个站点正在处理删除 Ubuntu VPS 没问题!
好的,所以我刚刚将数据库设置从 local_biems 复制到 local_blog,但出现 MYSQL 错误。
daviesc@orion:local_biems [0]$ tail -f /var/log/apache2/local_blog.error.log
[Fri Dec 08 08:42:57.704722 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 115, in load_backend, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704740 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] return import_module('%s.base' % backend_name), referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704750 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704766 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] __import__(name), referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704776 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 30, in <module>, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704913 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] 'Did you install mysqlclient or MySQL-python?' % e, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704934 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704941 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704946 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so with restricted binary., referer: http://biems.local/polls/
[Fri Dec 08 08:42:57.704951 2017] [wsgi:error] [pid 16937] [client 127.0.0.1:55911] Did you install mysqlclient or MySQL-python?, referer: http://biems.local/polls/
好的。我追踪到 -
尽管需要更新最后一个参数以反映新路径。
sudo install_name_tool -change libmysqlclient.18.dylib /
/usr/local/mysql/lib/libmysqlclient.18.dylib /
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so
这可能是一个 OSx 特定问题 - 这是在 10.12.6 上发生的。我不确定我是否会轻易找到它,因为 SQL 错误似乎只出现一次,然后编译的文件报告一个不同的错误。我发现使用
find . -type f -name '*.pyc' -exec rm {} +
删除所有已编译的文件有帮助。
还必须将 Debug 设置为 True,以免出现信息量较少的 500 错误。