【问题标题】:apache2 not showing flask app on local serverapache2 未在本地服务器上显示烧瓶应用程序
【发布时间】:2017-03-14 06:58:54
【问题描述】:

我正在关注本教程: https://pythonprogramming.net/creating-first-flask-web-app/?completed=/flask-web-development-introduction/

在我的本地服务器上(本地网络上的家用机器)。 Flask 本身可以正常启动

>>> python /var/www/FlaskApp/FlaskApp/__init__.py 
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [31/Oct/2016 22:56:29] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [31/Oct/2016 22:56:29] "GET /favicon.ico HTTP/1.1" 404 -

flask starts 但是 Apache 无论如何都会显示它的默认网页。

sudo a2enmod wsgi

Module wsgi already enabled

cat /var/www/FlaskApp/FlaskApp/init.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def homepage():
    return "Hi There, how you're doin?"
if __name__ == "__main__":
    app.run()(debug=True)

cat /etc/apache2/sites-available/FlaskApp.conf

<VirtualHost *>
                ServerName dagzserv
                ServerAdmin my@email.com
                WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
                <Directory /var/www/FlaskApp/FlaskApp/>
            Require all granted
                </Directory>
                Alias /static /var/www/FlaskApp/FlaskApp/static
                <Directory /var/www/FlaskApp/FlaskApp/static/>
            Require all granted
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

sudo a2ensite FlaskApp

Site FlaskApp already enabled

我尝试添加 app.run(host='0.0.0.0', port=5000) 我在本地网络(10.0.1.xxx)中有 /etc/hosts dagserv 作为我的 ip 还尝试将 ServerName 作为 localhost。

我不明白的一件事是 Apache 是如何找到“FlaskApp.conf”的,但我认为它正在扫描其配置目录 (/etc/apache2/sites-available/FlaskApp.conf)

我在 /var/logs/apache2 中没有收到任何错误

猫访问.log

10.0.1.14 - - [31/Oct/2016:22:46:52 -0700] "GET / HTTP/1.1" 200 3524 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.14 - - [31/Oct/2016:22:49:14 -0700] "GET / HTTP/1.1" 200 3524 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.14 - - [31/Oct/2016:22:49:15 -0700] "GET / HTTP/1.1" 200 3523 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
10.0.1.101 - - [31/Oct/2016:22:56:18 -0700] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:49.0) Gecko/20100101 Firefox/49.0"

猫错误.log

[Mon Oct 31 22:45:47.288264 2016] [wsgi:warn] [pid 982] mod_wsgi: Compiled for Python/2.7.11.
[Mon Oct 31 22:45:47.288623 2016] [wsgi:warn] [pid 982] mod_wsgi: Runtime using Python/2.7.12.
[Mon Oct 31 22:45:47.314433 2016] [mpm_prefork:notice] [pid 982] AH00163: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 configured -- resuming normal operations
[Mon Oct 31 22:45:47.314616 2016] [core:notice] [pid 982] AH00094: Command line: '/usr/sbin/apache2'
[Mon Oct 31 22:48:52.171206 2016] [mpm_prefork:notice] [pid 982] AH00169: caught SIGTERM, shutting down
[Mon Oct 31 22:48:53.766824 2016] [wsgi:warn] [pid 2360] mod_wsgi: Compiled for Python/2.7.11.
[Mon Oct 31 22:48:53.766940 2016] [wsgi:warn] [pid 2360] mod_wsgi: Runtime using Python/2.7.12.
[Mon Oct 31 22:48:53.775947 2016] [mpm_prefork:notice] [pid 2360] AH00163: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 configured -- resuming normal operations
[Mon Oct 31 22:48:53.776083 2016] [core:notice] [pid 2360] AH00094: Command line: '/usr/sbin/apache2'

【问题讨论】:

  • 您是否尝试过将您的虚拟主机配置放在 000-default.conf 的最顶部?在开始的 VirtualHost 标记中也使用 *:80 而不是 *。
  • 当使用 mod_wsgi app.run() 时不使用。您使用的网址是什么?因为您有VirtualHostServerName 中的dagzserv,所以URL 必须是http://dagzerv/。如果您使用的是 IP 地址而不是那个,它将转而使用默认的VirtualHost
  • @GrahamDumpleton thx 对于那个 app.run() 提示,不知道这一点。我试过dagzserv 以及 10.0.1.101 ip。两者都只是显示干净的默认 apache web(如果有任何改变,则为 ubuntu 版本)
  • 尝试使用&lt;VirtualHost *:80&gt;。您通常总是拥有端口。还要在配置文件中添加一个语法错误,以验证 Apache 是否真的在读取它。
  • @ApoorvKansal 还没有尝试过(不想弄乱默认的 apache 设置。总的来说,你必须为你制作的每个应用程序进行 apache 配置,这对我来说听起来很奇怪 :)

标签: flask apache2 wsgi


【解决方案1】:

1。 Apache 如何找到“FlaskApp.conf”

/etc/apache2/apache2.conf 中有一行包含虚拟主机配置:

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

Apache2 服务器将加载 apache2.conf 并包含虚拟主机配置。

2。为什么 Apache 无论如何都会显示其默认网页。

如果您通过 IP 地址访问服务器,Apache 将根据其在 /etc/sites-available/000-default.conf 中的默认站点配置返回。所以如果你想通过 IP 地址访问你的 WSGI 服务器,你应该先禁用 Apache 默认站点配置:

sudo a2dissite 000-default.conf
service apache2 restart

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2022-01-06
    相关资源
    最近更新 更多