
Interface PHP de synchronisation entre machine de dveloppement et machine de production
========================================================================================

Yann GROSSEL - 2003.11.04


Ce "Command-Center" permet de synchroniser le code prsent sur les machines de
dveloppement (actuellement camelot.fr.clara.net) et les machines de production
(actuellement finistre.fr.clara.net). La synchronisation peut se faire dans les
2 sens.

Ce "Command-Center" est actuellement visible en: http://camelot.dev.fr.clara.net/


Principe de fonctionnement
--------------------------

Les transferts des donnes se font grce a du Rsync encapsul dans du SSH.
La version 2.5.6 ou suprieure de rsync est ncessaire (les versions infrieures
ne permettent pas le dmarrage d'un serveur Rsync  travers SSH).

Le concept de mise en place est le suivant :

- on appele machine source la machine ou sont effectus les dveloppement.
- on appele machine cible  la machine ou le site est en production.

- pour les exemples on admet que l'utilisateur sur la machine cible est 'www-data'
  (ceci n'est bien sr qu'un exemple et peut tre chang).

- une cl ssh (prive + publique) doit tre gnre sur la machine source. Cette cl
  ne doit pas tre protge par une passphrase (passphrase nulle) car PHP doit pouvoir
  l'utiliser sans problmes.

- sur la machine cible, faire un fichier rsyncd.conf (ou rsync-from-machine-source.conf
  ou tout autre nom explicite) et y placer les options de configuration ncessaires au
  module que l'on souhaite tranferer.

  Par exemple :

	log file = /tmp/rsync-camelot.log

	[claranew]
		  path = /export/www/sites/www.claranew.fr
		  comment = Claranet Website 2003
		  use chroot = false
		  read only = false
		  transfer logging = true

- placer la cl plublique dans le fichier ~www-data/.ssh/authorized_keys sur la machine
  cible. La cl doit tre sur une seule ligne. On utilise le champ "command" pour prciser
  que toute connexion SSH effectue avec cette cl dclenche le lancement d'un serveur
  rsync (ce qui implique qu'on ne peut pas executer autre chose que le serveur rsync
  grce  la cl ssh). La ligne doit ressemble  cela :

  command="/path/to/rsync-2.5.6 --server --daemon --config /path/to/rsyncd.conf ." ssh-dss
  AAAAB3NzaC1kc3MAAACBAI ... R5dhE/OQDw== commentaire

  (sur une seule ligne !)

  Pour rester simple on peut mettre le fichier rsyncd.conf dans le rpertoire ~www-data/.ssh.

...

+ host-key de la machine distante  placer dans /etc/ssh/ssh_known_hosts sur la machine source


Installation
============

Ncessite la mise en place de rewrite rules dans la configuration apache :

RewriteEngine   On
RewriteRule     ^/([^/]*)/(..*)$ /path/to/document-root/index.php [E=CC_MODULE:$1,E=CC_PATH:$2,L]
RewriteRule     ^/([^/]*)/$      /path/to/document-root/index.php [E=CC_MODULE:$1,L]

