titre

Installation d'un serveur DAViCal au format calDAV

DAViCal est un serveur d'agenda partagé basé sur le format calDAV compatible avec de nombreux gestionnaires d'agenda (lightning,Evolution etc..). Nous allons voir comment installer un serveur DAViCal sur mon serveur Ubuntu 10.4 ainsi que la sauvegarde de la base de donner postgres.

A-Installation de DAViCal et de la base de donnée Postgres

Pour commencer on ouvre un terminal et on installe DAViCal et la base de donnée Postgresql-9.1
   
     sudo apt-get install davical postgresql
    
Puis on configure postgres et on crée la base de donnée davical

     sudo -i -u postgres
     postgres@serveur:~$ psql  
     psql (9.1.7)
     Type "help" for help.

     postgres=#    ici nous somme logué en root sur postgres   
     
Maintenant nous pouvons créer nos utilisateurs davical_dba et davical_app

     postgres=# CREATE USER davical_dba
     postgres=# CREATE USER davical_app
     postgres=# ALTER ROLE davical_dba WITH CREATEDB;
     postgres=# ALTER ROLE davical_app WITH CREATEDB;
     postgres=# q   #pour sortir
     postgres@serveur:~$ exit   #pour revenir en console utilisateur
     
On va modifier le fichier "/etc/postgresql/9.1/main/pg_hba.conf"

     sudo nano /etc/postgresql/9.1/main/pg_hba.conf
      
On ajoute ces lignes apres # hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]

      local all all trust
      local davical davical_dba trust
      local davical davical_app trust
      host davical davical_app 127.0.0.1/32 trust
      
On enregistre avec les touches Ctrl + O puis Entrée puis Ctrl + X. On a plus qu'a lancer le script fourni par DAViCal.

      sudo service postgres restart
      sudo su postgres -c /usr/share/davical/dba/create-database.sh
        ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      # Une fois le script terminé, le mot de passe admin s'affiche, 
         pensez à le noter, il sera indispensable par la suite. 
      
Maintenant on retir ou commante avec # la ligne local all all trust dans /etc/postgresql/9.1/main/pg_hba.conf

      sudo nano /etc/postgresql/9.1/main/pg_hba.conf
      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      #local all all trust
      local davical davical_dba trust
      local davical davical_app trust
      host davical davical_app 127.0.0.1/32 trust
      #############################################
      sudo service postgres restart
      


B-Configuration d'Apache


Maintenant on va créer un hôte virtuel dans /etc/apache2/conf.d/

      sudo nano /etc/apache2/conf.d/davical.conf     
      
On y copie ceci puis Ctrl+o et Entrée pour enregistrer, Ctrl+x et Entrée pour fermer.

      Alias /davical /usr/share/davical/htdocs
#        php_value magic_quotes_gpc 0
#        php_value register_globals 0
#        php_value open_basedir 1
        php_value error_reporting "E_ALL & ~E_NOTICE"
        php_value default_charset "utf-8"

      
        Options Indexes
        DirectoryIndex index.php
        php_flag magic_quotes_gpc Off
        php_flag register_globals Off
        php_value include_path /usr/share/awl/inc
      
      
Il faut aussi créer un hôte virtuel dans votre /etc/hosts, pour cela on édite le fichier hosts puis on y ajoute cette ligne a la fin XXXXXXXXX davical, Il faut remplacer XXXXXXXX par l'Ip local si le serveur est derriere un routeur dans un reseau local ou l'Ipv4 si le serveur est connecter directement a internet.

     sudo nano /etc/hosts
     ↓↓↓↓↓↓↓↓↓↓↓↓
     192.168.0.2    davical  #### Adapter 192.168.0.2 a votre ip

     

C-Configuration de DAViCal

Il faut créer un fichier davical-conf.php dans /etc/davical.

      sudo nano /etc/davical/davical-conf.php
      
On y colle ceci

      domain_name = "mydavicalsite.dyndns.org";
      //  $c->sysabbr     = 'rscds';
      //  $c->admin_email = 'admin@example.net';
      $c->system_name = "Really Simple CalDAV Store";
      //  $c->collections_always_exist = true;
      //  $c->enable_row_linking = true;
      $c->default_locale = fr_FR.UTF-8;
      $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';
     ?>
      
On enregistre et on ferme, il ne reste plus qu'a créer un lien symbolique avec votre nom de domaine puis on redemare Apache pour que notre comfiguration soit pris en compte.

      sudo ln -s /etc/davical/'nom de domaine'-conf.php /etc/davical/davical-conf.php
      sudo service apache2 restart
      
Si tout c'est passé normalement on peut acceder a l'interface d'administration de Davical. Adresse a partir du serveur http://localhost/davical adresse a partir d'un ordinateur distant http://Adresse ip ou nom de domaine du serveur/davical. Il ne reste plus qu'a créer des comptes utilisateurs et de s'y connecter avec son gestionnaire d'agenda préféré.
Pour la premiere connection administrateur a DAViCal :
# Identifiant => admin
# mot de passe => celui récuperré plus haut a la fin du script d'installation de la base de donnée de Davical.

D-Sauvegarde de la base de donnée Posgres

Maintenant nous allons voir comment l'on peut faire des sauvegardes de notre base de données Postgres avec des commandes ou bien avec un script et cron.

1-Sauvegardes et restaurations en ligne de commande

Pour pouvoir lancer une sauvegarde de la base de donnée davical dans posgres deux solutions soit une sauvegarde complète de l'ensemble des bases de données soit que de davical. On part du principe que nous allons stocker nos sauvegardes dans /media/backup.
# Demarrer une sauvegarde complète de l'ensemble des bases de données.

       sudo -u postgres psql
       postgres=# SELECT pg_start_backup('/media/backup/');
       postgres=# q
      
# Archiver la sauvegarde complète

      sudo tar czvf /media/backup/fullbackup-$(date +%Y%m%d).tar.gz /var/lib/postgresql/9.1/main/base/
      
# Arrêter la sauvegarde complète des BDD

      sudo -u postgres psql
      postgres=# SELECT pg_stop_backup();
      postgres=# q
      
Et voila on se retrouve avec un beau fichier tar.gz dans /media/backup, mais c'est un peut lourd de faire regulièrement une sauvegare alors qu'un script peut faire cela automatiquement pour nous a interval régulier.

2-Mise en place d'un script de sauvegarde avec Rsnapshot et Cron

Comme je suis incapable de faire un script même, j'ai cherché une solution et j'ai trouvé Rsnapshot qui est présent dans les dépôts d'Ubuntu. Donc on va installer Rsnapshot, créer un script pour la sauvegarde de la base de données et definir le dossier et la frequance de la sauvegarde.( Ici une éxélente documentation pour mieu comprandre le fonctionnement de Rsnapshot )

      sudo apt-get install rsnapshot
      
On va recuperer un script fourni par rsnapshot et le placer dans /usr/local/bin/ puis l'adapter pour saugarder que la base de données davical.

      sudo cp /usr/share/doc/rsnapshot/examples/utils/backup_pgsql.sh /usr/local/bin/backup_pgsql.sh
      sudo nano /usr/local/bin/backup_pgsql.sh
      
on modifie le script pour ne sauvegarder que davical.

      # backup the database
      su -c 'pg_dumpall > ~/pg_dumpall.sql' postgres

      # make the backup readable only by root
      chown root.root ~postgres/pg_dumpall.sql
      chmod 600 ~postgres/pg_dumpall.sql

      # Move the backup to current working directory
      mv ~postgres/pg_dumpall.sql `pwd`
      
que l'on remplace par

      # backup the database
      su -c 'pg_dump davical > ~/davical.sql' postgres

      # make the backup readable only by root
      chown root.root ~postgres/davical.sql
      chmod 600 ~postgres/davical.sql

      # Move the backup to current working directory
      mv ~postgres/davical.sql `pwd`
      
On enregistre ( Ctrl+o) et on ferme (Ctrl+x)

Maintenant on va configurer Rsnapshot.

      sudo nano /etc/rsnapshot.conf
      
c'est ici que l'on détermine le dossier dans lequel on veux mettre nos sauvegardes, pour moi ce sera sur un disque dur connectée en usb a mon serveur.

      ###########################
      # SNAPSHOT ROOT DIRECTORY #
      ###########################

      # All snapshots will be stored under this root directory.
      #
      snapshot_root   /var/cache/rsnapshot/
      
      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      
      snapshot_root   /media/backup/.sav   #### choix du dossier de la sauvegarde
      
Dans cette partie on determine les sauvegardes a effectuer.

      ###############################
      ### BACKUP POINTS / SCRIPTS ###
      ###############################

      # LOCALHOST
      backup  /home/         localhost/
      backup /etc/           localhost/
      backup /usr/local/     localhost/
      #backup /var/log/rsnapshot              localhost/
      #backup /etc/passwd     localhost/
      #backup /home/foo/My Documents/         localhost/
      #backup /foo/bar/       localhost/      one_fs=1, rsync_short_args=-urltvpog
      #backup_script   /usr/local/bin/backup_pgsql.sh  localhost/postgres/
      # You must set linux_lvm_* parameters below before using lvm snapshots
      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      ###############################
      ### BACKUP POINTS / SCRIPTS ###
      ###############################

      # LOCALHOST
      #backup  /home/         localhost/                                       #############################
      #backup /etc/           localhost/                                            #    a commanter ou decommanter
      #backup /usr/local/     localhost/                                     #   suivant le choix de sauvegarder
      #backup /var/log/rsnapshot       localhost/              #                 ou pas                  
      #backup /etc/passwd     localhost                                 #                                                  
      #backup /home/foo/My Documents/  localhost/##############################
      #backup /foo/bar/       localhost/      one_fs=1, rsync_short_args=-urltvpog
      backup_script   /usr/local/bin/backup_pgsql.sh  localhost/postgres/        ### decomenter pour la sauvegarde de davical
      # You must set linux_lvm_* parameters below before using lvm snapshots

      
Une petite commande pour verifier que notre script fonctionne correctement et si tout se passe bien on doit avoir en retour "Syntax OK"

      > serveur@serveur[XXX.XXX.X.X]:$ rsnapshot configtest
      Syntax OK
      
Maintenant il ne nous reste plus qu'a configurer cron pour que notre sauvegarde soit lancé automatiquement. Cela se passe dans /etc/cron.d/rsnapshot

      sudo nano /etc/cron.d/rsnapshot
      

      # 0 */4         * * *           root    /usr/bin/rsnapshot hourly   ### décommenter pour une sauvegarde tous les 4 heures
      # 30 3          * * *           root    /usr/bin/rsnapshot daily    ### décommenter pour une sauvegarde journalière
      # 0  3          * * 1           root    /usr/bin/rsnapshot weekly   ### décommenter pour une sauvegarde a la semaine
      # 30 2          1 * *           root    /usr/bin/rsnapshot monthly  ### décommenter pour une sauvegarde mensuel
      

Voila maintenant notre base de donnée est sauvegardé automatiquement.
Si l'on decommente les lignes hourly, daily, weekly dans notre dossier de sauvegarde l'on se retrouve avec:
- 5 dossiers hourly => une sauvegarde tous les 4 heures pendant les dernires 24h.
- 7 dossiers daily => une sauvegarde par jour pendant les 7 deniers jours.
- 4 dossiers weekly => une sauvegarde par semaine pendant les 4 dernières semaines.

J'ai remarqué que les sauvegardes sont éffectuer que si il y a un changement dans le dossier source par rapport au dossier de sauvegarde.

3-Sauvegarde et restauration avec une interface graphique

Pour mon cas mon serveur n'a pas d'interface graphique donc pour pouvoir gérer postegres j'utilise phppgadmin pour qu'il puisse fonctionner il faut un serveur web fonctionnnel. Puis on installe phppgadmin

      sudo apt-get install phppgadmin
      sudo ln -s /etc/phppgadmin/apache.conf /etc/apache2/conf.d/phppgadmin.conf    ### on crée un lien symbolique
      sudo ln -s /usr/share/phppgadmin/ /var/www/    ### adapter /var/www/ au dossier dans lequel apache pointe 
      sudo service apache reload   ### on redémarre
      
      
Normalement a se stade on a acces au service a cette adresse http://localhost/phppgadmin/ mais pour pouvoir se connecter il faut creer un utilisateur avec un mot de passe.

      sudo -i -u postgres
      postgres@serveur:~$ createuser -P 
      Enter password for new role: 
      Enter it again: 
      Shall the new role be a superuser? (y/n) y
      postgres@serveur:~$ exit
      

Voila maintenent nous pouvons nous connecter avec les identifiants crées avec les droits sur toutes les bases de données. On peut créer autant d'utilisateur que l'on veut, pour suprimer un utilisateur avec la commande"dropuser".

conection a phppgadmin

Il ne reste plus qu'à explorer les fonctions de l'interface graphique. Pour effectuer une restauration de la base de donner saugardée il faut la suprime avant.

Pour effectuer une restauration de la base a partir d'un backup effectuer par Rsnapshot il faut rendre les archives executables que se soit en ligne de commande ou avec l'interface graphique.
Mes sources Davical, Postgres, Rsnapshot.
signaturelagirardiere dimanche 14 aout 2011
Lien
|ubuntu Ubuntu |linux Linux |firefox Firefox |thunderbird Thunderbird |gnome Gnome |site du zero Openclassrooms |gnome look Gnome look |debian Debian |
Valid XHTML 1.0 Strict Valid CSS!