我们有 2 台 Ubuntu Web 服务器,其中一台是我们的临时服务器 (Staging),另一台是我们的实时服务器 (Live)。Staging 上有我们的 Subversion 存储库,以及我们网站的最新版本。由于 SVN 服务器在 Staging 上运行,因此我添加了提交后挂钩脚本,以便临时服务器自动拥有最新代码。很简单。
但是,我希望 Live 上的其中一个存储库也能保持更新。这是一个图像、PDF 等的存储库。当团队成员提交此操作时,我希望它能够在实时服务器上自动更新,以便可用于邮件、内容管理页面等。
我会在后期提交中添加一些内容以通过 SSH 进行更新,但为了安全起见,我们只能以用户“commandLine”的身份从一台服务器通过 SSH 连接到另一台服务器,而“www-data”用户运行后期提交。
我不想在 Live 上运行 cron 来每 5 分钟更新一次,但我看不出在不改变所有用户权限的情况下执行此操作的其他方法。
有任何想法吗?
答案1
从我的角度来看,你已经提到了直接的解决方案
- 让你的
commandLine
用户处理实时服务器上的 svn 存储库 - 更改安全限制并允许用户
www-data
从临时登录到实时 - 使用 cron 任务
如果这些都对你不起作用,我只能想象用用户通过 SSH 连接commandLine
到实时服务器并创建某种“信号”,例如创建一个文件f
。另一方面,使用带有无限循环的 shell 脚本作为信号的接收器(例如,监视是否f
存在)。shell 脚本将在www-data
的权限下运行,并在每次收到“信号”时执行 svn update。
免责声明:我并不是真正的 Unix 专家,所以我不知道发送“信号”的最简洁方法是什么。但我很确定有一个常见的解决方案。