原子地将文件添加到网络目录的最佳方法是什么?

原子地将文件添加到网络目录的最佳方法是什么?

所以我有一个奇怪的问题,但我正在编写一个脚本来部署 PHP 代码库,想看看是否有可能实现这样的事情:

我有一个 Apache 用作 DocumentRoot 的目录:

/home/www/

我们有一个 PHP 应用程序,必须向该目录添加几个文件和目录。

我们目前通过 SCP 传输 tarfile 并将其提取到 /home/www 中来实现此目的。我希望以更好的方式实现此目的,因为当我们提取文件时,我们的 PHP 应用程序会收到一些读取权限错误。我想在内部自动更新这些文件/home/www(最好是“一次性”更新)

有没有办法做到这一点,而不必为提取到 Web 目录的每个文件/目录创建符号链接?

答案1

我一般会设置类似的东西。

/var/www/version1
/var/www/version2
/var/www/production (document root, symlink -> current version)

因此基本上你只需上传到一个新目录,上传完成后调整你的符号链接,一切都会立即改变。

当应用程序设计为将代码与应用程序分离时(就像他们应该的那样!),那么生活就会变得复杂得多。你可能需要使用 unionfs 来做一些事情。

相关内容