使用 apache 和 mod_wsgi 的 Flask hello world 仅显示 webroot 中的文件

2023-11-26

我正在尝试使用 wsgi 从 Flask 站点通过 apache2 运行基本的 hello.py。我的代码如下所示:

/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()

/var/www/flask_dev/start.wsgi

from hello import app as application

import sys
sys.stdout = sys.stderr

/etc/apache2/sites-available/flask_dev.conf

#Listen 80
ServerName example.com

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    #ServerName example.com

    WSGIDaemonProcess hello user=<myuser> group=<myusersgroup> threads=5 python-path=/var/www/flask_dev

    WSGIScriptAlias / /var/www/flask_dev/start.wsgi
    <Directory /var/www/flask_dev>
           WSGIProcessGroup hello
           WSGIApplicationGroup %{GLOBAL}
           Order deny,allow
           Allow from all
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

/etc/主机

127.0.0.1    example.com

我跑完之后sudo a2ensite flask_dev and sudo service apache2 reload (or restart), 即将www.example.com只是给出了 webroot 中的文件。 ~~我检查了错误日志,看起来 mod_wsgi 和 mod_python 正在启动。有谁知道我还缺少什么吗?~~

Edit 1我现在可以从错误日志中看到消息,看起来我受到了影响https://bugs.launchpad.net/ubuntu/+source/libapache2-mod-python/+bug/1073147在 Ubuntu 12.04 上。

我稍后会尝试重新编译到正确的 Python 版本,看看它是否修复了错误。目前,虽然发生此错误,但我在访问 example.com 时仍然会看到列出的文件。

错误日志

[Mon Jan 13 11:28:06 2014] [notice] caught SIGTERM, shutting down
[Mon Jan 13 11:28:07 2014] [error] python_init: Python version mismatch, expected '2.7.2+', found '2.7.3'.
[Mon Jan 13 11:28:07 2014] [error] python_init: Python executable found '/usr/bin/python'.
[Mon Jan 13 11:28:07 2014] [error] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload'.
[Mon Jan 13 11:28:07 2014] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Mon Jan 13 11:28:07 2014] [notice] mod_python: using mutex_directory /tmp 
[Mon Jan 13 11:28:07 2014] [warn] mod_wsgi: Compiled for Python/2.7.2+.
[Mon Jan 13 11:28:07 2014] [warn] mod_wsgi: Runtime using Python/2.7.3.
[Mon Jan 13 11:28:07 2014] [notice] Apache/2.2.22 (Ubuntu) mod_python/3.3.1 Python/2.7.3 mod_wsgi/3.3 configured -- resuming normal operations

Edit 2更新到13.04已经解决了版本信息。现在,当我访问 example.com 时,我收到 403 禁止错误。当我跟踪 error.log 时,我看到:

[Mon Jan 13 21:03:41.464815 2014] [:error] [pid 10999:tid 3014634304] [client 127.0.0.1:35067] Attempt to invoke directory as WSGI application: /var/www/flask_dev/

我尝试过添加AddHandler cgi-script py到我的flask_dev.conf,但这似乎也不起作用。

有没有人以前在 WSGI 应用程序中遇到过这种错误,并且知道解决方法?

提前致谢。

Edit 3所有源代码现在都可以运行


在 /var/www/flask_dev/hello.wsgi 中,您应该导入应用程序而不是 ass。 其次,您不应该使用 DocumentRoot 来存储脚本。 DocumentRoot 用于存储静态文件,因此它肯定会将它们列为文件,并且永远不会将它们作为脚本运行。

尝试使用

    WSGIScriptAlias / /var/www/flask_dev/hello.wsgi
    <Directory "/var/www/flask_dev">
       WSGIProcessGroup hello
       WSGIApplicationGroup %{GLOBAL}
       Order deny,allow
       Allow from all
    </Directory>

Check this page.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 apache 和 mod_wsgi 的 Flask hello world 仅显示 webroot 中的文件 的相关文章

  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • jquery 在 contenteditable div 中设置光标位置

    问题的旧版本如下 经过更多研究后 我决定重新表述这个问题 和以前一样 问题是 我需要聚焦一个 contenteditable div 而不突出显示文本 在 Chrome 中直接聚焦突出显示文本 我意识到人们通过重置文本区域中的插入符位置来解
  • 如何使用 Maven 在 Vaadin 7 中仅编译必要的小部件?

    我是 Vaadin 框架的新手 我看起来非常有趣 使用 eclipse 和 Maven 来开发和构建我的应用程序 我发现很烦人 每次我进行 mvn clean install 时都会花费很长时间来构建应用程序 我发现这是因为它编译了整套小部
  • 如何以编程方式设置 rw- r-- r-- 权限?

    我正在开发一个应用程序 可以将应用程序的数据恢复到 data data packageName 恢复文件后 我将权限设置为 rw r r 我是这样设置的 public int chmod File path int mode throws
  • 快速将 XML 转换为 Excel [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 将 XML 中的 112K 行转换为 Excel 视图的最快 最省力 而不是超级性能 方法是什么 为什么这么复杂 只需使用 文件 gt 打开 打开文件 选择 xml 并加载它 看
  • 消除无样式内容的闪烁

    如何停止网页上出现无样式内容 FOUC 使用 css 样式最初隐藏某些页面元素 然后使用 javascript 在页面加载后将样式更改回可见的问题是 未启用 javascript 的人将永远无法看到这些元素 所以这是一个不会正常降级的解决方
  • php中的正则表达式:取最短匹配

    我正在尝试做一个 PHP 正则表达式 但我找不到正确的方法 想象一下我有这个字符串 你好 我的 名字是彼得 和 我想吃巧克力 我想取 和 之间的部分 但如果我使用preg match string 它只返回一个字符串 名字是彼得 和 我想吃
  • Url.Action 从 Route 属性映射了错误的链接

    这是目标控制器和操作 RoutePrefix Editor public class EditorController Controller HttpGet Route id int public ActionResult Edit int
  • 如何在SQL Server中使用批量插入写入UTF-8字符?

    我正在对 sqlserver 进行批量插入 但它没有正确地将 UTF 8 字符插入数据库 数据文件包含这些字符 但执行批量插入后数据库行包含垃圾字符 我的第一个怀疑是格式文件的最后一行 10 0 3 1 SQLCHAR 0 0 1 INST
  • 如何通过 Google Maps API 找到最近的十字路口?

    如何找到距离我最近的街道的坐标 例如 假设我有一条从南到北的街道 A 北边有 X 街道 南边有 Y 街道 Google 地图 API 是否允许查找街道 A 最近的十字路口 X 或 Y 的坐标 我找不到任何地方提到过它 PS 我知道的唯一解决
  • Eclipse - 调试器不会在断点处停止

    我正在尝试对 JUnit 进行故障排除 在源代码中 我在两个位置设置了断点 1 在初始化静态成员的行中2 其中一个测试用例的第一行 调试器在静态字段初始化行停止 但它并不止于测试用例 无论我在测试用例中的何处设置断点 调试器都不会在那里停止
  • Django 表单总是显示错误“此字段为必填字段”

    当我渲染表单时 django 总是在每个字段上显示错误消息 此字段是必需的 即使没有提交表格 可能是什么问题呢 这是我的模型表格 class MMEditidStateForm forms ModelForm class Meta mode
  • 生成器与列表理解

    我有一些东西 当作为列表理解运行时 运行良好 看起来像 myClass Function things for things in biggerThing Function是一个方法 它构建一个列表 该方法本身不返回任何内容 但会在其中对列
  • QR 分解求解 CUDA 中的线性系统

    我正在GPU上写一个图像恢复算法 详细信息在 Cuda 最小二乘求解 速度较差 求解线性系统的QR分解法 Ax b 工作原理如下 min Ax b gt QRx b gt Q T QRx Q T b gt Rx Q T b where R是
  • 接口中的 C# 数据注释

    快速提问 如果我在界面中添加注释 说 必填 我可以在属性的 C 类中省略该符号吗 即我可以 interface IFoo Required string Bar get set class Foo IFoo string Bar get s
  • 导入 HoloEverywhere 时出错

    首先 我是 Android 新手 我正在做一个应用程序 并且正在实现一个名为的库无处不在的全息 这个库在themes xml 中使用ActionBar Sherlock 库 我已将 ActionBar Sherlock 导入到我的工作区 并
  • eclipse 在 ubuntu 14.04 上崩溃

    我在 ubuntu 13 10 上使用了 google android ide adt eclipse 它很好 当我升级 ubuntu 14 04 时 当 eclipse 崩溃时 它会提示方法等 日志如下 谁能帮我 谢谢 A fatal e
  • EF4可以支持批量更新吗?

    实体框架 v4 是否支持批量更新 插入 因此它可以一次性向数据库发送 gt 1 个命令 而不是向数据库发送 gt 1 个命令 Thanks 我不相信这已经改变了 您有以下选择 存储过程 像这篇文章这样的东西 使用 T Sql 之类的在这个问
  • pytorch模型总结——forward func有多个参数

    我正在使用火炬摘要 from torchsummary import summary 我想在打印模型摘要时传递多个参数 但这里提到的示例 pytorch中的模型总结只采取了一个论点 例如 model Network to device su
  • 即使元素的值也在 CSS 中设置,也能获取内联样式值吗?

    如果你有以下元素 span style width 100px span CSS 是 span width 50px important 有没有办法获取内联样式值并忽略 css 值 Thanks use element style widt
  • 使用 apache 和 mod_wsgi 的 Flask hello world 仅显示 webroot 中的文件

    我正在尝试使用 wsgi 从 Flask 站点通过 apache2 运行基本的 hello py 我的代码如下所示 var www flask dev hello py from flask import Flask app Flask n