linux - vlad 部署者 - 使用不同的用户进行部署?

标签 linux file-permissions vlad-deployer

我们使用 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/

相关文章:

Linux/OSX 中的 C# GUI

python - 使用 python 脚本从不同的目录调用 make

linux - 通过systemd服务脚本执行Java jar Fedora 22

linux - 在 Ubuntu 中为所有新创建的文件设置 chmod 值

linux - 如何从 bash 将源代码上传到 Arduino?

java - 读取服务器上的文件

linux - npm 是使用 sudo 安装的吗?

github - 使用 Vlad 通过 SSH 部署

git 存档与 cp -R