我按照教程http://www.enigmeta.com/2012/08/16/starting-flask/开发并使用mod_wsgi将简单的应用程序部署到Apache。我想我已经把它缩小到了我的Apache配置中的一个缺陷。如果我从命令行运行helloflask.py,它工作正常。我可以通过localhost:5000的另一个shell中的wget来访问它,并且我得到正确的响应。我也有其他的虚拟主机(非WSGI)运行起来,所以我知道Apache正在运行,响应其他请求在端口80Hello World - Flask/Apache/mod_wsgi - Apache没有响应
我有以下结构:
/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
我想知道如果这两个[提醒]表示不同版本的Python的线是我的问题,但我不知道如何或者修改什么来修复它。任何建议表示赞赏。
谢谢!
这是它指向你的网页浏览器。有趣的是,当我等待有人回复这个问题时,我帮助了另一个有/ etc/hosts问题的人。他更明显 - 他得到了“无路可归”的错误,但仍然......我应该在这里考虑。我不认为这是一个问题,因为www.mydomain.com工作正常。猜猜我需要看看DNS和子域名。谢谢! – David
这不是一个dns问题,因为它是一个Apache问题。由于ServerName指令,Apache正在寻找进入helloflask.mydomain.com的请求,但我猜测你只是使用127.0.0.1或localhost。 –