我使用烧瓶应用程序通过raspberrypi相机拍摄视频。我用于烧瓶app的代码在这里: 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'
在localhost上它正在工作,但在我的网站上没有在wsgi文件中有任何错误或我需要添加一些东西。
答案 0 :(得分:0)
获得404 Not Found时会遇到一些问题。
如果VirtualHost
不是Apache配置文件中唯一的那个,那么它将永远不会被使用。这是因为您错误地设置了ServerName
。 ServerName
目录应设置为主机名。不是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.您似乎确实将其调用{ {1}},所以你应该对这一点很好,这应该不是问题。无论如何,在Apache错误日志中会出现一个独特的错误消息。
第三个是您使用的URL路径未映射到Flask应用程序中的路径。实际上有两个部分。因为您要挂载在Apache中的子URL,所以URL路径必须至少以application
开头。使用该值意味着您需要在Flask应用程序中使用与站点根目录匹配的路径。通常在Flask中,这意味着您有/flask2
的路由,但是当您将Flask应用程序安装在Apache的子URL中时,我不确定它是否仍然有效。您不会显示您的路线代码,因此无法查看您的路线代码。您至少可以尝试在网址中使用@app.route('/')
。如果您的视频Feed不在Flask应用程序的根目录下,而是在您链接的帖子中提供的子网址(例如/flask2/
设置的子网址),那么您应该使用@app.route('/video_feed')
作为网址路径。如果您没有使用正确的URL,您将获得404。
答案 1 :(得分:0)
我的整个文件配置是正确的但是因为我在apache服务器下运行烧瓶应用程序,apache无法访问pi摄像头,因为它没有root访问pi.so,在本地服务器上它正在工作但不是我的网站在apache上运行时。