我需要同步从主服务器到从服务器的资源。我使用rsync,因为它可以使用增量文件列表递归地同步文件夹。我已经能够使用ssh-keys以最简单的方式工作。一切都很好,但它不能通过php shell_exec函数。这是我迄今为止所做的,以及我陷入困境的地方。帮助将不胜感激!通过php/linux同步服务器之间的资源的安全方式
主从服务器上的Ubuntu用户的主目录中14.04.4
创作中的SSH密钥文件夹。没有密码
ssh-keygen -f ~/.ssh/id_rsa -q -P ""
不确定从属服务器可以接收主SSH密钥
// log in slave server
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
复制公钥到从服务器的私人/公共SSH密钥的
mkdir ~/.ssh
chmod 0700 ~/.ssh
创建(其中我想同步资源)
// log in master server
su ssh-copy-id -i ~/.ssh/id_rsa.pub [slave user]@[slave host]
现有文件夹的测试同步...让我们说WWW/JS/
rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/www/js/ [slave user]@[slave host]:~/www/js/
耶,一切工作正常。
我登录从服务器,递归地删除www/js文件夹。
我登录主服务器上
我创建了一个简单的PHP脚本来测试它是否内为“shell命令”
test.php的工作
var_dump(shell_exec('rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/www/js/ [slave user]@[slave host]:~/www/js/'));
同步不从PHP工作。可能是因为php运行宽度www-data用户?我怎样才能使它从pĥp安全地工作?
您可以使用rsync,也可以将主目录存储在通用文件夹中,并将它们安装到每台服务器上。 – mkaatman
您的主变量'〜'可能无法正确扩展。尝试完整路径 –
在我的情况下,从服务器就像内容交付。安装一个通用文件夹可以,但在我的情况下,php创建或更新资源,然后必须在从属服务器上同步它们,并且php必须继续运行。因此,必须从php中启动同步。 – Simmoniz