Ich muss Ressourcen von einem Master-Server zu einem Slave-Server synchronisieren. Ich benutze rsync, weil es Ordner rekursiv unter Verwendung der inkrementellen Dateiliste synchronisieren kann. Ich konnte es mit ssh-keys so einfach wie möglich machen. Alles ist in Ordnung, aber es funktioniert nicht durch PHP shell_exec Funktion. Hier ist, was ich bisher gemacht habe und wo ich stecken bleibe. Hilfe wäre willkommen!Sicherer Weg Ressourcen zwischen Servern über php/linux zu synchronisieren
Master- und Slave-Server sind auf Ubuntu 14.04.4
Erstellung der SSH-Schlüssel Ordner in Home-Verzeichnis des Benutzers.
mkdir ~/.ssh
chmod 0700 ~/.ssh
Schaffung eines privaten/öffentlichen SSH-Schlüssel ohne Passwort
ssh-keygen -f ~/.ssh/id_rsa -q -P ""
Ungewiss Slave-Server
// log in slave server
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
Copy öffentlichen Schlüssel an den Slave-Server-Master öffentlichen SSH-Schlüssel empfangen kann (wo Ich möchte die Ressourcen synchronisieren)
// log in master server
su ssh-copy-id -i ~/.ssh/id_rsa.pub [slave user]@[slave host]
Test-Synchronisation eines vorhandenen Ordner ... lassen Sie uns www/js sagen/
rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/www/js/ [slave user]@[slave host]:~/www/js/
Yay, alles funktioniert gut.
Ich logne Slave-Server, entfernen Sie www/js Ordner rekursiv.
ich anmelden Master-Server
ich ein einfaches PHP-Skript erstellen, um zu testen, ob es innerhalb als "Shell-Befehl" arbeiten
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/'));
Die Synchronisation nicht der Fall ist Arbeit von PHP. Wahrscheinlich, weil php Breite www-Daten Benutzer läuft? Wie kann ich es sicher von pĥp arbeiten lassen?
Sie könnten Rsync verwenden oder Sie könnten die Home-Verzeichnisse in einem gemeinsamen Ordner speichern und sie auf jedem Server mounten. – mkaatman
Ihre Home-Variable '~' wird möglicherweise nicht richtig erweitert. versuchen Sie den vollständigen Pfad –
Slave-Server in meinem Fall sind wie Content Delivery. Mount einen gemeinsamen Ordner wäre in Ordnung, aber in meinem Fall erstellt oder aktualisiert PHP Ressourcen, dann müssen sie auf Slave-Servern synchronisieren, und PHP muss weiter laufen. Daher muss die Synchronisation von PHP ausgelöst werden. – Simmoniz