尝试将Flask应用程序部署到Apache时出现404

时间:2019-10-27 21:22:57

标签: python apache flask wsgi

我试图将Flask应用程序部署到基于Linux的服务器上,但没有成功。我已经研究过关于stackoverflow的不同方法和条目,但是似乎没有任何效果。为了对其进行更干净的测试,我创建了一个试图在本地运行的简单测试应用程序:

/var/www/test中:

test.py

from flask import Flask

app = Flask(__name__)

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

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

test.wsgi

from test import app as application

和一个空的__init__.py文件。

/etc/apache2/sites-available中:

test.conf

<VirtualHost *>
    ServerName *Local IP address*

    WSGIDaemonProcess test user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/www/test/test.wsgi

    <Directory /var/www/test>
        WSGIProcessGroup test
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

test.conf文件是通过a2ensite test.conf注册的,而libapache2-mod-wsgi是通过apt安装在我的本地Debian Buster发行版上的,我正在(localhost)上对其进行测试。 Python2和3与Flask一起安装。每个文件和test文件夹均由www-data和组www-data拥有。当然,每次更改service apache2 restart后,我都会重新启动应用程序。

我可以使用python test.py在localhost:5000上成功运行该应用程序,并显示“ Hello World!”。

我也没有在Apache错误日志中看到任何可疑的东西,只是:

[Sun Oct 27 22:16:55.923721 2019] [mpm_event:notice] [pid 26336:tid 140548964586624] AH00489: Apache/2.4.38 (Debian) mod_wsgi/4.6.5 Python/2.7 configured -- resuming normal operations
[Sun Oct 27 22:16:55.923771 2019] [core:notice] [pid 26336:tid 140548964586624] AH00094: Command line: '/usr/sbin/apache2'

我想念什么?为什么我会收到404?有什么方法可以查看应用程序是在运行还是仅在尝试运行?

1 个答案:

答案 0 :(得分:0)

ServerName *Local IP address* <-这个。您不能在那里使用IP,它必须是主机名(与您在访问的URL中使用的IP地址匹配)。如果您使用IP来访问服务器,它将默认为第一个定义的虚拟主机,因为它与任何服务器名称都不匹配,这可能与您刚刚定义的名称不符。

因此,如果主机名不能解析,则在其中放置一个主机名并将其定义在您的hosts文件中,或者编辑默认的虚拟主机(虚拟主机以字母数字顺序加载,这意味着除非{{1} }是列出test.conf时的第一个条目,它不是第一个条目,使用IP访问服务器时将不使用它。)