如何配置nginx,gunicorn,以便Django可以提供动态编码的视频网址

时间:2019-05-03 23:53:04

标签: django nginx gunicorn

Django应用程序“ myvideoproj”,共有2页。第1页列出视频。单击视频的链接,重定向到第2页。第2页播放视频。

有效:第1页列出所有视频。第2页播放视频。

视频文件不是静态的。

然后,在生产服务器中为Django应用程序配置nginx,gunicorn。

第1页可以列出视频。 Page 2没有发挥作用。

我认为第2页的nginx配置未正确配置。

请帮助!

settings.py

hostname = socket.gethostname()

SERVER_LIST = {
  'myserver’': {
      'movie_dir': '/path/my/home/video/',   # store all video
      'siteicon_url': 'www.mydomain.com:8000',
      'url_playmovie': www.mydomain.com:8000/playvideo/',
    },
  }

SERVER = SERVER_LIST[hostname]
MOVIES_DIR = SERVER['movie_dir']
URL_VIDEOLIST = SERVER['siteicon_url']
URL_PLAYMOVIE = SERVER['url_playmovie']

if DEBUG: 
   STATIC_ROOT = os.path.join(BASE_DIR, '/static')
else:
   STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    (os.path.join(SITE_ROOT, 'static/')),
    MOVIES_DIR,   # Make sure page 2 is able to find real location of video, which is NOT under static.
)

第1页html示例。用户可以单击它。


<a href=".....mydomain.com:8000/playvideo/encoded_myvideo_sample.mp4">
                <img src="data:image/png;base64,..blablathumbnail..==" atl="">
</a>



视频文件的真实位置:

/path/my/home/video/myvideo_sample.mp4

第1页的url中的视频文件名是base64编码的。

第2页html示例。如果没有nginx,gunicorn(在命令行中启动django服务器),它将播放视频。使用nginx,gunicorn(启动nginx服务和gunicorn服务,它不起作用。

<div class="player">
    <video id="video" width="640" height="420" controls="" autoplay="">
      <source src="/static/myvideo_sample.mp4" type="video/mp4">
      Your browser does not support the video tag.
    </video>
</div>

views.py

def playvideo(request, encoded_movie_name):
   # encoded_movie_name = 'encoded_myvideo_sample.mp4'
   decoded_videofile = url_decode(encoded_movie_name)
   # decoded_videofile = 'myvideo_sample.mp4'

   args['movie'] = decoded_videofile
   response = shortcuts.render_to_response('playvideo.html', args)
   return response

playvideo.html

  <div class='player'>
    <video id="video"  width="640" height="420" controls autoplay>
      <source src="{% static '' %}{{movie}}" type="video/mp4">
      Your browser does not support the video tag.
    </video>
  </div>

我用一个小的django应用程序测试了nginx,gunicorn安装。有用。然后,我按照相同的过程为“ myvideoproj”配置nginx,gunicorn,并遇到上述问题。

可能是nginx配置没有此URL的配置吗?

....mydomain.com:8000/playvideo/ 

/ etc / nginx / sites-available / myvideoproj如下:

server {
    listen 8000;
    server_name 0.0.0.0;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            root /projectpath/myvideoproj;
    }

    location / {
            include proxy_params;
            proxy_pass http://unix:/projectpath/myvideoproj/myvideoproj.sock;
    }
}

Chrome调试器中的错误

Failed to load resource: the server responded with a status of 404 (Not Found)    encoded_myvideo_sample.mp4

/ etc / nginx / sites-available / myvideoproj或其他配置中缺少什么?第1页中的视频文件名已编码,并已在playvideo()函数中解码。如何配置nginx使其可以在/ path / my / home / video /目录中加载视频文件?

0 个答案:

没有答案