在 Ubuntu 中通过 Apache 加载 Python Web

在 Ubuntu 中通过 Apache 加载 Python Web

目前我一直在尝试使用 Apache2 在 Ubuntu 上运行一个网站,但遇到了一个问题。该网站名为 Indivo,包含 Python 文件。

我已经按照指示,但在运行 Apache 时:

$ sudo service apache2 restart

我收到此行但网站无法启动:

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName 
... waiting [Wed Aug 04 13:12:01 2010] [warn] module wsgi_module is already loaded, skipping
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Apache 配置文件(在 /etc/apache2/sites-enabled/default 中)如下:

<VirtualHost *:8000>
  ServerAdmin [email protected]
  ServerName www.indivo.dal.ca
  DocumentRoot /usr/indivo_server
  Alias /static/ /usr/indivo_server/static/
  EnableMMAP On
  EnableSendfile On
  LogLevel warn
  <Directory /usr/indivo_server>
     Order deny,allow
     Allow from all
  </Directory>

  WSGIDaemonProcess indivo user=ehsan group=ehsan processes=1 maximum-requests=500 threads=10
  WSGIScriptAlias / /usr/indivo_server/django.wsgi
  WSGIPassAuthorization On
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName www.indivo.dal.ca
  DocumentRoot /usr/indivo_ui_server
  Alias /static/ /usr/indivo_ui_server/ui/static/
  EnableMMAP On
  EnableSendfile On
  LogLevel warn
  <Directory /usr/indivo_ui_server>
   Order deny,allow
   Allow from all
  </Directory>

  WSGIDaemonProcess indivo_ui user=ehsan group=ehsan processes=1 maximum-requests=500 threads=10
  WSGIScriptAlias / /usr/indivo_ui_server/django.wsgi
  WSGIPassAuthorization On
</VirtualHost>

您对这个问题有什么想法吗?

谢谢你,
Ehsan

答案1

错误:

module wsgi_module is already loaded

是因为您多次使用了 wsgi_module 的 LoadModule 行,或者它所在的代码片段文件以某种方式被包含了两次。

您的配置在其他方面也存在错误。

首先,您缺少与 WSGIDaemonProcess 指令配合使用的 WSGIProcessGroup 指令。如果您没有 WSGIProcessGroup,WSGI 应用程序仍将以嵌入模式运行,并且不会被委托给守护进程。请务必阅读官方文档,以了解为什么会出现套接字权限问题:

http://code.google.com/p/modwsgi/wiki/ConfigurationIssues

其次,不要使用“processes = 1”,只需关闭该选项,因为它默认为一个进程,并且使用“processes”选项的任何值在技术上都会向 WSGI 应用程序标记它是一个多进程应用程序,而在您的情况下可能不是,因为您没有使用同一个应用程序在多个 Apache 服务器实例之间进行负载平衡。

最后,除非您有充分的理由并了解为什么要这样做,否则通常不建议设置最大请求数。如果您添加它是因为您看到其他人的配置有它,而不是因为您知道您确实需要它,那么请将其删除。

顺便说一句,假设您已经正确设置了 NameVirtualHost,因此您的 VirtualHost 实际上可以正常工作。

至于域名解析,如果您的网站正常运行,通常可以忽略。

请注意,您引用的错误之一应该会导致 Apache 停止启动。建议您运行:

sudo /usr/sbin/apachectl -t

并查看 Apache 验证您的配置时给出了哪些进一步的错误消息,并将完整输出作为您的问题的补充。

mod_wsgi 的完整官方文档可以在以下位置找到:

http://www.modwsgi.org

确保你已阅读它。

答案2

当你跑步时你会得到什么

hostname --fqdn

检查 /etc/hosts 中是否有合适的名称,例如 www.indivo.dal.ca

你的 apache conf 文件对我来说看起来正确,django.wsgi 是什么样的?

相关内容