所以我试图建立一个海外品质保证局我在本地服务器上进行了测试,这样当我在外部托管服务器上进行设置时,一切都会顺利进行。我正在关注本教程到目前为止一切顺利,但遇到了问题。在启动 Apache 和 OSQA 时,我使用的是 Ubuntu 11.04 Natty Narwhal、Python2.7、Django、Apache、MySQL 以及本教程要求的所有其他内容,但是当我尝试访问网站时(http://本地主机)我收到内部服务器 500 错误。查看错误日志,我看到以下内容:
[Tue Oct 11 20:13:35 2011] [notice] mod_python: using mutex_directory /tmp
[Tue Oct 11 20:13:36 2011] [notice] Apache/2.2.17 (Ubuntu) mod_python/3.3.1 Python/2.7.1+ mod_wsgi/3.3 configured -- resuming normal operations
[Tue Oct 11 20:15:13 2011] [notice] caught SIGTERM, shutting down
[Tue Oct 11 20:15:14 2011] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Tue Oct 11 20:15:14 2011] [notice] mod_python: using mutex_directory /tmp
[Tue Oct 11 20:15:14 2011] [notice] Apache/2.2.17 (Ubuntu) mod_python/3.3.1 Python/2.7.1+ mod_wsgi/3.3 configured -- resuming normal operations
[Tue Oct 11 20:23:46 2011] [notice] caught SIGTERM, shutting down
[Tue Oct 11 20:23:47 2011] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Tue Oct 11 20:23:47 2011] [notice] mod_python: using mutex_directory /tmp
[Tue Oct 11 20:23:47 2011] [notice] Apache/2.2.17 (Ubuntu) mod_python/3.3.1 Python/2.7.1+ mod_wsgi/3.3 configured -- resuming normal operations
请注意,我尝试多次重新启动服务器,因此才会出现重复。我已经使用论坛解决了其他一些问题,但我找不到这个问题的答案。有人可以解释一下错误日志的含义以及为什么在启动 apache 后立即向其发送 SIGTERM 吗?
编辑:检查 osqa.error.log 时我看到以下内容:
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] self.load_middleware()
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/core/handlers/base.py", line 39, in load_middleware
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/utils/functional.py", line 276, in __getattr__
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] self._setup()
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/conf/__init__.py", line 42, in _setup
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] self._wrapped = Settings(settings_module)
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/conf/__init__.py", line 89, in __init__
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Tue Oct 11 20:24:16 2011] [error] [client 127.0.0.1] ImportError: Could not import settings 'osqa.settings' (Is it on sys.path?): No module named osqa.settings
我会尝试解决这个问题。如果出现更多问题,我会更新。谢谢。
答案1
我不是 OSQA 专家,事实上我从未使用过它。但是我对 Python 略知一二,查看你的堆栈跟踪,我会说你缺少某种描述的导入模块/python 库。
看起来您尝试运行的应用程序正在寻求导入一个处理其设置的 python 模块,但无法找到或加载它。
搜索您的服务器环境,看看是否可以找到该文件。如果您可以检查它的权限,并确保它可由运行 Web 服务器和/或 OSQA 应用程序的任何用户读取(提示:如果不同,可能需要使它们成为同一组的成员)。
如果这方面一切正常,那么请确保模块位于 Python 解释器期望找到其他库文件和模块的位置。
无论是什么导致了最终的信号,我猜最有可能是由于缺少 mod 文件而导致 mod_python 崩溃,从而导致应用程序代码出现异常/错误。