我们使用 vlad 部署程序将 Rails 应用程序部署到生产和测试服务器。我们所有的服务器都是 Ubuntu 服务器。
我们遇到了与 Linux 权限相关的问题。
Vlad 使用 ssh 将文件放在任何服务器上,无论是生产服务器还是测试服务器。我的公司有几个人,每个人在每台服务器上都有不同的帐户。
另一方面,我们的 Apache 服务器的配置方式是使用网站目录的“所有者”来读取该目录上的文件。
因此,进行第一次部署的用户成为该站点的“所有者”;其他用户无法进行部署 - Apache 将无法读取修改后的文件,因为所有者已更改。
通常这不是什么大问题,但现在假期即将来临,我们希望尽可能彻底地解决这个问题 - 例如,我们希望避免共享密码/ssh key 。
理想情况下,我需要一个 vlad 任务来对已部署文件的权限执行某些操作,以便其他用户可以完全修改它们。我对 UNIX 命令了解不够,无法执行此操作。
最佳答案
我会使用组权限来完成此操作。
将网络根目录设置为/var/www/your-app/current
/var/www/your-app/应该是所有进行部署的人员所属组可写的组。
设置部署脚本,以便它们写入名为/var/www/your-app/>timestamp< 的目录,其中时间戳是当前时间戳。
/var/www/your-app/current 是一个符号链接(symbolic link),当您成功地将所有文件复制到新目录时,您将更新符号链接(symbolic link)的目标,以便它指向您创建的目录。
这样每个人都可以部署,并且您可以看到谁部署了哪个版本。
这也使得部署原子化,因此如果您在部署过程中失去网络连接,也不会造成任何破坏。
由于您不会删除旧目录,因此如果您设法引入一些错误,则可以轻松回滚到“最后的好”状态。
关于linux - vlad 部署者 - 使用不同的用户进行部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265565/