你好世界 - Flask / Apache / mod_wsgi - Apache无响应

6
我正在按照http://www.enigmeta.com/2012/08/16/starting-flask/上的教程,使用mod_wsgi将一个简单的flask应用程序部署到Apache上。我认为问题出在我的Apache配置上。如果我从命令行运行helloflask.py,它可以正常工作。我可以通过另一个shell上的localhost:5000 wget访问它,并获得正确的响应。我还有其他虚拟主机(非wsgi)正在运行,所以我知道Apache正在运行并响应端口80上的其他请求。
我的文件结构如下:
/sites/helloflask.mydomain.com
   /helloflask
      application.wsgi
      helloflask.py
      (rest of env from virtualenv)
   /log
      access.log
      error.log

helloflask.py:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

application.wsgi:

import os, sys, logging
logging.basicConfig(stream=sys.stderr)

PROJECT_DIR = '/sites/helloflask.mydomain.com/helloflask'

activate_this = os.path.join(PROJECT_DIR, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.append(PROJECT_DIR)

from helloflask import app as application

Apache配置文件路径为:/etc/apache2/sites-available/helloflask.mydomain.com

<VirtualHost *:80>
  ServerName helloflask.mydomain.com

  WSGIDaemonProcess helloflask user=myuser group=myuser threads=5
  WSGIScriptAlias / /sites/helloflask.mydomain.com/helloflask/application.wsgi

  <Directory /sites/helloflask.mydomain.com/helloflask>
    WSGIProcessGroup helloflask
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
  </Directory>
  LogLevel warn
  ErrorLog /sites/helloflask.mydomain.com/log/error.log
  CustomLog /sites/helloflask.mydomain.com/log/access.log combined
</VirtualHost>

我启用了虚拟主机,重启了Apache,但浏览器没有响应。显示"服务器未找到",没有500错误响应,也没有任何日志记录(特定于此虚拟主机的)。每次我重新启动时,在总体Apache错误日志中都会收到以下消息:

[Sat Jun 29 20:07:58 2013] [notice] caught SIGTERM, shutting down
[Sat Jun 29 20:07:59 2013] [warn] mod_wsgi: Compiled for Python/2.7.2+.
[Sat Jun 29 20:07:59 2013] [warn] mod_wsgi: Runtime using Python/2.7.3.
[Sat Jun 29 20:07:59 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.6 with Suhosin-Patch mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations

我在想那两行 [warn] 指示不同版本的Python是否是我的问题,但我不知道如何或者需要修改什么来解决它。欢迎提出任何建议。
谢谢!
1个回答

7
"helloflask.mydomain.com"指向哪个IP地址?请尝试添加。
127.0.0.1    helloflask.mydomain.com    helloflask

添加到您的hosts文件中,并将您的Web浏览器指向

http://helloflask.mydomain.com

就是这样了。有趣的是,在等待某个人回复我的时候,我帮助另一个人解决了/etc/hosts问题。他的问题更明显 - 他遇到了“无法路由到主机”的错误,但是..我应该在这里考虑到这个问题。我没有认为这是一个问题,因为www.mydomain.com一切正常。看来我需要看一下DNS和子域名。谢谢! - David
这不是 DNS 问题,而是 Apache 问题。由于 ServerName 指令,Apache 正在寻找针对 helloflask.mydomain.com 的请求,但我猜你只是使用了 127.0.0.1 或 localhost。 - Dustin Anderson
@DustinAnderson 我们应该在哪里添加这些行? - Slickmind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接