【发布时间】:2016-01-23 17:43:42
【问题描述】:
我正在尝试使用 apache2 服务器托管烧瓶应用程序。服务器工作,但我只看到一个文件列表,精彩的“索引”页面。我的代码很简单。这是我在 /var/www/flask_dev 中的 hello.py 文件:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
我还在 /etc/apache2/sites-available/flask_dev.conf 中创建了一个 apache 配置文件:
ServerName example.com
<VirtualHost *:80>
ServerAdmin webmaster@localhost
WSGIDaemonProcess hello user=www-data group=www-data threads=5 python-path=/var/www/flask_dev
WSGIScriptAlias / /var/www/flask_dev/start.wsgi
<Directory /var/www/flask_dev>
WSGIProcessGroup hello
WSGIApplicationGroup %{GLOBAL}
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
而且所需的wsgi文件也位于/var/www/flask_dev/start.wsgi:
from hello import app as application
import sys
sys.stdout = sys.stderr
我不确定我做错了什么,我只是按照一个简单的教程。
感谢您的帮助:)
【问题讨论】:
-
您是否将该 conf 文件复制或符号链接到启用站点的文件中?
-
对于您的
WSGIDaemonProcess和WSGIProcessGroup,用户和组“hello”是否真的存在?尝试将系统上存在的真实用户放在那里(以及对您的/var/www/flask_dev具有权限的用户)。重启 apache 服务时你也查看过 error.log 吗? -
error.log 显示它无法导入名称“app”,但我只遵循了一个教程,它似乎对他们有用。并且无法加载目标 WSGI 脚本,因为还显示了 python 模块
-
@User3745172 我遇到了同样的问题。你是怎么解决这个问题的?
-
一些尝试和错误,但最后你必须确保启用我没有在 apache 中为 flask 创建的 conf 文件。希望有帮助