【问题标题】:How can I upload my files to my static server from a production server?如何将我的文件从生产服务器上传到我的静态服务器?
【发布时间】:2010-10-16 04:32:27
【问题描述】:

我的生产机器上有 django 和 django 的管理员设置。这意味着所有文件上传都存储在制作盒中,所有媒体都存储在那里。

我现在有一个单独的文件服务器(不同的盒子,ip)。我想在那里上传我的文件。我想过这些方法的优缺点是什么,有没有“更好”的方法可以推荐?

  1. 在文件上传到静态服务器后,设置脚本在生产箱上执行rsync
  2. 在生产设备上设置永久挂载,方法是使用静态媒体设备(如 nfs/samba/ssh-fs)上的文件服务器,然后使用安装位置作为生产设备上的upload_to 路径

信息:两台服务器都运行 debian。

编辑:来自#django 的 Prometheus 建议 http://docs.djangoproject.com/en/dev/howto/custom-file-storage/

【问题讨论】:

  • 嘿!你最后做了什么?只是好奇。采用织物方式或...

标签: django file-upload


【解决方案1】:

我使用Fabric。您特别感兴趣的是 fabric.contrib.project.rsync_project()

转述——

Fabric 是一个 Python 库,并且 用于简化的命令行工具 使用 SSH 进行应用程序部署 或系统管理任务。

首先使用fabric.contrib.project.upload_project()上传整个项目目录。从那时起,继续使用fabric.contrib.project.rsync_project。将项目与本地版本同步。同样特别有趣的是,它在下面使用 unix rsync 并使用安全的 scp 来传输 .tar.gz 数据。

我想这可以满足您的需求。可能不需要设置永久安装等。

【讨论】:

  • 我只需要这个静态媒体,我实际上并没有部署?还是我误解了,那东西仍然适用?
  • 哦,但是您仍然可以使用我建议的方法来保持您的静态数据同步。它不需要只是一个 Django 项目。
  • “永久安装在生产盒上”也不会是一个安全问题吗?数据如何从一台服务器移动到另一台服务器?是加密的吗?相反,由于您的任务是同步两台机器,rsync 是为这种工作而构建的。安全且高度优化。见en.wikipedia.org/wiki/Rsync
【解决方案2】:

如果您的静态媒体源自您的开发过程,那么 Fabric 就是您的最佳选择。它可以自动部署和复制任何东西——数据、应用程序文件,甚至静态数据库转储——从任何地方到任何地方。

如果您的静态媒体源自您的应用程序服务器的操作——生成 PDF 和图像、从用户上传、编译二进制文件(我有一个客户想要这样,一个 Django 应用程序可以接收原始 x86 程序集并返回一个编译和链接的二进制文件)--那么你想使用Django Storages,这是一个抽象了任何 ImageField 或 FileField(或任何具有 Python File-like 接口的内容)的实际存储内容的应用程序。它支持将它们存储在数据库中、存储到 Amazon S3、通过 FTP 和其他一些。

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多