Dans un article publié récemment, j'exprimais le désir de retirer tous les éléments qui simulaient un serveur de développement sur mon ordinateur personnel pour les transférer sur une VM. De cette façon, je n'encombrerais pas mon PC et la VM serait plus facile à cloner pour faire des expérimentations.
À ce stade-ci, je compte bien faire une série d'articles qui couvre le sujet. Pour l'instant, ma configuration actuelle est :
- J'ai un poste de travail avec Windows XP où EasyPHP est installé (Apache, PHP). J'ai aussi une instance de PostgreSQL Windows que j'utilise à la place de MySQL.
- La machine virtuelle VMware est créée avec Ubuntu.
- Apache a été installé sur la VM pour l'utiliser comme serveur web.
- Je n'ai pas encore installé PHP sur la VM alors je continue à rouler EasyPHP sur mon poste hôte Windows.
- J'ai installé PostgreSQL sur la machine virtuelle ce qui veut dire que je suis prêt à transférer la base de données Postgres Windows vers la VM Linux pour ensuite retirer complètement toute trace de Postgres sur Windows. C'est ce que je vais faire aujourd'hui.
- Demain, j'expliquerai comment faire la connexion pour que le serveur PHP Windows sur lequel PHP et Apache roulent puisse accéder au serveur Postgres sur la machine virtuelle.
- Éventuellement, je transférerai aussi PHP vers la VM.
Pour faire une copie de sauvegarde de la base de données (Windows), on peut simplement utiliser pgAdmin III, cliquer sur le bouton droit de la souris sur la BD en question, choisir Backup dans le menu contextuel et donner un nom de fichier, par exemple db.backup.
Ceci exécutera une commande similaire à :
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f "db.backup" database_name
Ensuite, il faut transférer le fichier sur la machine virtuelle. Libre à vous de le copier sur une clé USB, vous l'envoyer par courriel (si le fichier n'est pas volumineux), etc.
Du côté de la machine virtuelle, on doit créer une nouvelle base de données vierge qui accueillera le backup. Voici un exemple de commande qui peut être exécutée par le terminal (il n'est pas nécessaire de se connecter à psql) :
createdb -h localhost -U postgres code18
Ici, code18 est le nom de la nouvelle base de données.
Ensuite, si pgAdmin III est installé sur le serveur (dans mon cas oui car c'en est un de développement mais ce n'est pas standard), il est possible de restaurer le fichier par l'interface graphique : click droit sur la nouvelle BD / Restore et choisir l'emplacement du fichier.
Sinon, on peut appliquer le script généré dans le backup par la commande :
psql -h localhost -U postgres code18 < /tmp/db.backup
On indique qu'il faut appliquer le script db.backup qu'on a placé dans le répertoire /tmp/ (pour faire simple) à la base de données nommée code18. Le reste est l'information de connexion (quel serveur, nom d'utilisateur).
Avec la configuration par défaut, il sera possible d'utiliser cette base de données localement, c'est-à-dire dans un environnement fermé sur la machine virtuelle. Demain, j'expliquerai comment se connecter à Postgres (VM Linux) à partir de PHP Windows.