【问题标题】:Video Straming on raspberrypi using flask apche2and wsgi server使用烧瓶 apache2 wsgi 服务器在树莓派上进行视频流式传输
【发布时间】:2016-11-23 15:39:58
【问题描述】:

我已经使用烧瓶应用程序通过 raspberrypi 相机传输视频。我用于烧瓶应用程序的代码在这里: https://blog.miguelgrinberg.com/post/video-streaming-with-flask

在本地服务器中,它正在播放视频流,但不在我的网站上。

我正在使用具有以下 wsgi 文件的 apache2 服务器:

flaskapp2.wsgi

#!/usr/bin/python
import sys  
import logging  
logging.basicConfig(stream=sys.stderr)   
sys.path.insert(0,"/var/www/FlaskApp2/FlaskApp2")  
from ashish import app as application  
application.secret_key ='1233883'

文件系统的结构是:

/var/www/FlaskApp2/
    flskapp2.wsgi
    FlaskApp2/
        ashish.py
        camera_pi.py
        templates/index.html  

ashish.py 是正在流式传输的烧瓶应用程序。

apache中的错误日志文件是:

[Wed Nov 23 15:17:17.458803 2016] [mpm_prefork:notice] [pid 783] AH00163: Apache/2.4.10 (Raspbian) mod_wsgi/4.3.0 Python/2.7.9 configured -- resuming normal operations  

[Wed Nov 23 15:17:17.459043 2016] [core:notice] [pid 783] AH00094: Command line: '/usr/sbin/apache2' 

[Wed Nov 23 15:17:14.278353 2016] [wsgi:warn] [pid 662] mod_wsgi: Compiled for Python/2.7.8.  

[Wed Nov 23 15:17:14.279359 2016] [wsgi:warn] [pid 662] mod_wsgi: Runtime using Python/2.7.9.  

[Wed Nov 23 15:17:14.305871 2016] [mpm_prefork:notice] [pid 662] AH00163: Apache/2.4.10 (Raspbian) mod_wsgi/4.3.0 Python/2.7.9 configured -- resuming normal operations  

[Wed Nov 23 15:17:14.306169 2016] [core:notice] [pid 662] AH00094: Command line: '/usr/sbin/apache2'  

[Wed Nov 23 15:17:16.502484 2016] [wsgi:warn] [pid 670] mod_wsgi: Compiled for Python/2.7.8.  

[Wed Nov 23 15:17:16.504897 2016] [wsgi:warn] [pid 670] mod_wsgi: Runtime using Python/2.7.9.  

[Wed Nov 23 15:17:16.531217 2016] [mpm_prefork:notice] [pid 670] AH00163: Apache/2.4.10 (Raspbian) mod_wsgi/4.3.0 Python/2.7.9 configured -- resuming normal operations  

[Wed Nov 23 15:17:16.531502 2016] [core:notice] [pid 670] AH00094: Command line: '/usr/sbin/apache2'  

在本地主机上它正在工作,但在我的网站上却没有。wsgi 文件中是否有任何错误,或者我需要添加一些东西。

【问题讨论】:

  • 定义不工作并在浏览器或 Apache 错误日志中显示任何错误消息。
  • 那么您是如何为 mod_wsgi 配置 Apache 的?您使用什么 URL 来访问该站点?如何在 Flask 应用程序中设置 URL 映射,以便查看它实际响应的 URL?
  • 我的 wsgi 文件我已经在我的描述中提到了
  • 但是您使用什么 URL 路径来访问该站点?您正在使用的配置意味着您必须至少使用 /flask/flask2 的前缀。但是,除此之外,您还使用什么以及您的 Flask 应用程序中有哪些 URL 处理程序?这些在 WSGI 文件中不是特定的,而是在您的 ashish.py 文件中。也就是说,你为路由添加的那些装饰器。
  • 你最初不是说你得到的是 404,而不是 502?你删除评论了吗?如果您现在收到 502,那么 Apache 错误日志中有哪些消息。

标签: flask apache2 video-streaming mod-wsgi wsgi


【解决方案1】:

在收到 404 Not Found 时可能会遇到一些问题。

如果 VirtualHost 不是 Apache 配置文件中的唯一一个,那么它将永远不会被使用。这是因为您错误地设置了ServerNameServerName 目录应设置为主机名。不是 URL,也不是 IP 地址。因此使用:

ServerName https://7a78657b7a.dataplicity.io

不正确。应该是:

ServerName 7a78657b7a.dataplicity.io

它必须是主机名,因为 Apache 依赖它来匹配请求中的 Host 标头的名称库虚拟主机。如果它是错误的,那么 Apache 将不知道使用哪个 VirtualHost 是正确的。当这种情况发生时,Apache 将退回到将请求发送到它在读取 Apache 配置文件时找到的第一个 VirtualHost 定义。因此,如果这不是第一个 VirtualHost 定义,它将永远不会被使用。如果在第一个 VirtualHost 中没有设置类似的 URL 处理程序,您将得到 404。

第二个是 WSGIScriptAlias 指令指向的 WSGI 脚本文件中的 WSGI 应用程序入口点,不称为 application,您将得到 404。您似乎确实将其称为 application,所以在这一点上你应该没问题,这不应该是问题。无论如何,Apache 错误日志中都会有一条独特的错误消息,这就是问题所在。

第三个是您使用的 URL 路径没有映射到 Flask 应用程序中的路由。这实际上有两个部分。因为您在 Apache 中安装在子 URL,所以 URL 路径必须至少以 /flask2 开头。使用该值意味着您需要在 Flask 应用程序中拥有与站点根目录匹配的路由。通常在 Flask 中,这意味着您有 @app.route('/') 的路由,但不确定当您在 Apache 中的子 URL 上安装 Flask 应用程序时这是否仍然有效。你没有显示你的路线代码,所以看不到你有什么。您至少可以尝试在 URL 中使用 /flask2/。如果您的视频提要不在 Flask 应用程序的根目录中,而是在您链接的帖子中给出的 @app.route('/video_feed') 设置的子 URL,那么您应该使用 /flask2/video_feed 作为 URL 路径。如果您不使用正确的 URL,您将收到 404。

【讨论】:

    【解决方案2】:

    我的整个文件配置都是正确的,但是当我在 apache 服务器下运行烧瓶应用程序时,apache 无法访问 pi 摄像头,因为它没有对 pi.so 的 root 访问权限,在本地服务器上它正在工作但不在我的网站在 apache 上运行时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多