2个几乎相同的“hello world”Flask应用程序,1个有效,1个返回404未找到

2024-10-01 05:06:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉Flask(以及这些类型的应用程序框架),我正在尝试在VPS上设置它。如果有帮助的话,我正在Ubuntu 20.04上运行apache2

this example之后,我成功地运行了“Hello world”应用程序。然后我试着让另一个例子运行起来,看看是否可以。除了指向不同文件的路径之外,代码和文件是相同的。甚至所有文件的权限都已向所有人开放(我知道,这是一种糟糕的做法,只是想让它正常工作)

据我所知,这个应用程序很奇怪,因为.py文件试图用此行处理“/”路径

@app.route("/")

尽管WSGIScriptAlias引用了“/testFlask”

WSGIScriptAlias /testFlask /home/user/ExampleFlask/ExampleFlask/my_flask_app.wsgi

但是它可以工作,如果我将.py文件中的那一行改为“/testFlask”而不是“/”,它也会返回404错误

为了便于参考,工作/etc/apache2/sites available/examplelask.conf文件包含:

<VirtualHost *:80>
         # Add machine's IP address (use ifconfig command)
         ServerName IP_ADDRESS_HERE
         # Give an alias to to start your website url with
         WSGIScriptAlias /testFlask /home/user/ExampleFlask/ExampleFlask/my_flask_app.wsgi
         <Directory /home/user/ExampleFlask/ExampleFlask/>
                        # set permissions as per apache2.conf file
                        Options FollowSymLinks
                        AllowOverride None
                        Require all granted
         </Directory>
         ErrorLog ${APACHE_LOG_DIR}/error.log
         LogLevel warn
         CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/home/user/examplelask/examplelask/my\u flask\u app.wsgi

#! /usr/bin/python3.6

import logging
import sys
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/home/user/ExampleFlask/ExampleFlask')
from my_flask_app import app as application
application.secret_key = 'BOB'

/home/user/examplelask/examplelask/my\u flask\u app.py

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
        return "Hello world!"
if __name__ == "__main__":
        app.run()

第二个失败的应用程序是相同的,但将路径中的“ExampleFlask”替换为“NewFlask”,并使用不同的密钥。此外,以下行具有不同的别名

WSGIScriptAlias /newFlask /home/user/NewFlask/NewFlask/my_flask_app.wsgi

最后,如果这有帮助的话,可以使用ApacheCTL-S的输出 Apache在本地主机上运行(但仍在外部显示),而其他服务器在我的IP地址上运行

port 80 namevhost 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost IP_ADDRESS (/etc/apache2/sites-enabled/ExampleFlask.conf:1)
port 80 namevhost IP_ADDRESS (/etc/apache2/sites-enabled/NewFlask.conf:1)

编辑:我忘了提及-404错误的错误日志中没有任何内容。当我重新启动服务器并尝试访问应用程序时所看到的一切-

[Thu Apr 01 17:35:14.234997 2021] [mpm_event:notice] [pid 613:tid 140596752829504] AH00489: Apache/2.4.41 (Ubuntu) mod_wsgi/4.6.8 Python/3.8 configured -- resuming normal operations
[Thu Apr 01 17:35:14.235014 2021] [core:notice] [pid 613:tid 140596752829504] AH00094: Command line: '/usr/sbin/apache2'

Tags: 文件app应用程序flaskwsgihomemyconf