网站部署 – pipe理用户上传的内容?

我是一个贸易程序员,“服务器pipe理员”由公司的必要性。

我们正在倾倒旧的痛苦的“通过FTP上传的更新站点”的部署方式。 让web服务器将最新的代码库从版本控制检查到一个文件夹中,并且使用“current”符号链接指向最新的签出(通过更改符号链接可以轻松地回到旧版本)似乎是我们想要的方式走。

但是我有一个问题:处理用户上传的内容的最佳做法是什么? 这东西不是版本控制。 我有几个想法来处理这个问题,但是聪明的,被接受的做法是什么?

如果上传的内容都在一个目录中,我可以看到两种方法。

  • 使上传的目录符号链接是版本控制。 使符号链接指向实际上传的目标目录。
  • 在您的网站configuration中设置一个别名,以指向正常webroot之外的实际目录。

第一种方法不需要真正的代码更改,而第二种方法似乎对我来说更简洁一些。

正如你所提到的,用户上传的内容应该放在版本控制中。 但是,它们仍应该备份。

我build议简单地设置一个rsync,tar,rdiff-backup或其他任何一种日常cron备份脚本,并将数据上传到另一台服务器。 当然,你采取的方法取决于你的数据的重要性, 对于真正关键的信息,您可能需要设置即时复制(特别是对于数据库:读取数据库复制)。

我只处理用户内容的图像和头像。 以及一个负载均衡的networking服务器。 我将所有上传的内容归档到每天备份的一台Web服务器。 然后我在内容服务器上设置一个rsync服务器。 Web服务器每分钟在cronjob上通过rsync请求新文件。 所有的文件,然后复制和备份!

你应该把它放在web服务器根目录以外的地方,例如/var/upload/ 。 它有安全考虑:Web服务器代码不能暴露给上传的代码,如果你混合这两件事情,并设置错误的权限,它可能会发生。 而且你保持升级之间的内容。

如果用户上传小文件,最好的方法是将它们存储在数据库中。

我怀疑你可能已经在想这个了。 虽然首选方法是简单地将Web内容和上传的文件隔离,但也可以仅从版本控制中排除上载目录(和子目录?)。