在Django中在远程服务器中提供媒体文件并在另一台服务器中提供应用程序

use*_*713 3 django fabric

如何将媒体文件提供或上传(从网站上传文件)到远程服务器。一种方法是使用Fabric的ssh。但是使用静态文件时,我可以将文件从一台主机传输到远程主机(如文档中所示)。但是,只要用户在网站上上传文件,就有可能将其直接发送到远程服务器

例如,而不是文件去

MEDIA_ROOT = '/usr/files/'
Run Code Online (Sandbox Code Playgroud)

在同一服务器上,它将转到远程服务器上的文件夹。

Boj*_*vic 5

您是否尝试过以下解决方案:

https://github.com/aaugustin/django-resto

根据文档,它具有三种工作模式:

混合存储

使用此后端,django-resto将首先在MEDIA_ROOT上运行所有文件存储操作,然后将它们复制到介质服务器。

异步存储

通过此后端,django-resto将在MEDIA_ROOT上运行所有文件存储操作,并将其复制在后台启动到媒体服务器。请参阅异步操作。

分布式存储

使用此后端,django-resto将仅将文件存储在媒体服务器上。请参阅低并发情况。

正如文档建议的那样,侦听传入内容的服务器可以是nginx上的lighthttp实现:

这是lighttpd配置的示例:

server.modules + =(“ mod_webdav”,)$ HTTP [“ remoteip”]〜=“ ^ 192.168.0。[0-9] + $” {“ webdav.activate =”启用“}

这是nginx config的示例,假设服务器使用--with-http_dav_module进行了编译:

 server {
     listen 192.168.0.10;
     location / {
         root /var/www/media;
         dav_methods PUT DELETE;
         create_full_put_path on;
         dav_access user:rw group:r all:r;
         allow 192.168.0.1/24;
         deny all;
     } 
  }
Run Code Online (Sandbox Code Playgroud)

希望这能解决您的问题。