OwnCloud

De SeRoM - Wiki
Aller à : navigation, rechercher
Draft Draft / Brouillon
Cette page/chapitre est un brouillon, pas un article ou une règle, et peut être incomplète ou non-fiable! Vous êtes invités à faire des suggestions en page de discussion.

Installation

Prerquis

On installe quelques paquets requis par OwnCloud:

 aptitude install apache2 php5 php5-sqlite php5-json php5-gd
 aptitude install mp3info curl libcurl3 libcurl3-dev php5-curl zip

MySQL: Creation DB et User

Connectez-vous à MySQL:

 mysql -u root -p

De la on crée notre nouvelle base:

 CREATE DATABASE owncloud;

Et l'utilisateur avec les droits qui vont bien:

 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
 ON owncloud.*
 TO ocuser@localhost
 IDENTIFIED BY 'MotDePasse';

Déploiement d'OwnCloud

On récupère et extrait l'archive dans le répertoir racine d'Apache:

 cd /var/www/
 wget http://owncloud.org/go/owncloud-download -O ./owncloud-3.tar.bz2
 tar xvjf ./owncloud-3.tar.bz2
 rm -f ./owncloud-3.tar.bz2

On adapte des droits plus strictes:

 chown -R root:root /var/www/owncloud/
 chown -R www-data:root /var/www/owncloud/data/
 chown -R www-data:root /var/www/owncloud/config/
 chmod 770 /var/www/owncloud/data/
 chmod 770 /var/www/owncloud/config/

Première configuration

Rendez-vous sur http://myDomain.ltd/owncloud/. Normalement il ne devrait pas y avoir de message d'alerte (le cas échéant adapter les droits ou autre et recharger la page).

On clique sur Avancé ou Advanced histoire de pouvoir ajouter les paramètre de connexion vers MySQL.

  • /var/www/owncloud/data/
  • ocuser
  • MotDePasse


Upgrade

Version

Pour connaître la version actuelle d'ownCloud que vous tournez:

 grep version /var/www/owncloud/config/config.php

Backup

Il est toujours bon de prendre une copie de backup des données (copie vers un dossier appelé owncloud-bkp-v<Version>).

 cp -rp /var/www/owncloud/ ./owncloud-bkp-v$(grep "version" /var/www/owncloud/config/config.php | cut -d\' -f4)/

Mais également un dump SQL sous ./owncloud-bkp-v<Version>/DB-Dump.sql

 mysqldump -h localhost \
           -u $(grep "dbuser" /var/www/owncloud/config/config.php | cut -d\' -f4) \
           -p$(grep "dbpassword" /var/www/owncloud/config/config.php | cut -d\' -f4) \
           $(grep "dbname" /var/www/owncloud/config/config.php | cut -d\' -f4) > \
           ./owncloud-bkp-v$(grep "version" /var/www/owncloud/config/config.php | cut -d\' -f4)/DB-Dump.sql

Mise à jour

Une mise à jour automatisé existe maintenant. Pour cela rendez vous dans:

  • Administration > Mise à jour > Ouvrir le centre de mise à jour

Avant de lancer la mise à jour,il faut redonner les droits d'écriture complet:

 chown -R www-data:www-data /var/www/owncloud/

Il ne reste plus qu'à ré-appliquer des permissions correctes.

 chown -R root:www-data /var/www/owncloud/
 chmod -R o-rwx /var/www/owncloud/
 chown -R www-data /var/www/owncloud/apps/
 chown -R www-data /var/www/owncloud/data/
 chown -R www-data /var/www/owncloud/config/
 chmod 770 /var/www/owncloud/apps/
 chmod 770 /var/www/owncloud/data/
 chmod 770 /var/www/owncloud/config/

On relance les app qui vont bien.

 sudo -u www-data php /var/www/owncloud/occ app:enable contacts
 sudo -u www-data php /var/www/owncloud/occ app:enable calendar
 sudo -u www-data php /var/www/owncloud/occ app:enable notes
 sudo -u www-data php /var/www/owncloud/occ app:enable bookmarks
 sudo -u www-data php /var/www/owncloud/occ app:enable unsplash

Restore

Full

<ToDo>

User Calandar

Introduction

Depuis que ma femme a un iTéléphone, c'est la seconde fois que "mystérieusement" l'entièreté de son agenda disparait! Nouveau challenge donc restaurer uniquement son calendrier à partir du dernier SQL dump (fait lors du dernier upgrade). Hélas, après la première disparition, je n'ai pas pris de notes de mes manipulations... la seul chose qui me reste en tête, c'est un souvenir relativement pénible. Profitons de cette seconde disparition pour garder une trace…

Les données se trouvent dans 3 bases, la première avec les différents calendriers, la deuxième avec l'ensemble des événements et la dernière avec l'occurrence d'un événement le cas échéant:

  1. oc_clndr_calendars
  2. oc_clndr_objects
  3. oc_clndr_repeat

Données de travail

On isole le contenu de ces trois tables dans trois fichiers temporaires:

 grep oc_clndr_calendars /tmp/DB-Dump.sql | grep INSERT > /tmp/filtre-cal.sql
 grep oc_clndr_objects /tmp/DB-Dump.sql | grep INSERT > /tmp/filtre-objects.sql
 grep oc_clndr_repeat /tmp/DB-Dump.sql | grep INSERT > /tmp/filtre-repeat.sql

On nettoie les fichiers pour conserver un record par ligne:

 sed -i 's/),(/),\n(/g' /tmp/filtre-cal.sql
 sed -i 's/),(/),\n(/g' /tmp/filtre-objects.sql
 sed -i 's/),(/),\n(/g' /tmp/filtre-repeat.sql
 sed -i 's/INSERT INTO .*VALUES //' /tmp/filtre-cal.sql
 sed -i 's/INSERT INTO .*VALUES //' /tmp/filtre-objects.sql
 sed -i 's/INSERT INTO .*VALUES //' /tmp/filtre-repeat.sql

Filtrage des données à restaurer

Maintenant qu'on a le contenu propre su lequel on peut travailler, il va falloir filtrer uniquement les données d'un seul utilisateur. La première étape est de repérer les ID du ou des calendrier de cet utilisateur:

 grep <utilisateur> /tmp/filtre-cal.sql

Dans mon cas l'utilisateur est ju et elle n'a qu'un calendrier qui a l'ID 2.

 (2,'ju','Julie','defaultcalendar',1,161,0,'#ee82ee',NULL,'VEVENT,VTODO,VJOURNAL'),

On est parti pour créer notre SQL de restauration:

 echo "LOCK TABLES \`oc_clndr_calendars\` WRITE;" > /tmp/restore-ju-cal.sql
 echo "INSERT INTO \`oc_clndr_calendars\` VALUES" >> /tmp/restore-ju-cal.sql
 
 grep ",'ju'," /tmp/filtre-cal.sql >> /tmp/restore-ju-cal.sql
 echo ";" >> /tmp/restore-ju-cal.sql
 
 echo "UNLOCK TABLES;" >> /tmp/restore-ju-cal.sql
 echo "" >> /tmp/restore-ju-cal.sql

Pour chacun des calendrier de notre utilisateur, on va récupérer les records objects:

 echo "LOCK TABLES \`oc_clndr_objects\` WRITE;" >> /tmp/restore-ju-cal.sql
 echo "INSERT INTO \`oc_clndr_objects\` VALUES" >> /tmp/restore-ju-cal.sql
 
 for calID in $(grep ",'ju'," /tmp/filtre-cal.sql | cut -c 2- | cut -d',' -f 1); do
    grep "([0-9]*,${calID}," /tmp/filtre-objects.sql >> /tmp/restore-ju-cal.sql
 done
 
 echo ";" >> /tmp/restore-ju-cal.sql
 echo "UNLOCK TABLES;" >> /tmp/restore-ju-cal.sql
 echo "" >> /tmp/restore-ju-cal.sql


Il reste les information d’occurrence à récupérer. On procède exactement de la même manière que pour les records objects,

 echo "LOCK TABLES \`oc_clndr_repeat\` WRITE;" >> /tmp/restore-ju-cal.sql
 echo "INSERT INTO \`oc_clndr_repeat\` VALUES" >> /tmp/restore-ju-cal.sql
 
 for calID in $(grep ",'ju'," /tmp/filtre-cal.sql | cut -c 2- | cut -d',' -f 1); do
    grep "([0-9]*,[0-9]*,${calID}," /tmp/filtre-repeat.sql >> /tmp/restore-ju-cal.sql
 done
 
 echo ";" >> /tmp/restore-ju-cal.sql
 echo "UNLOCK TABLES;" >> /tmp/restore-ju-cal.sql
 echo "" >> /tmp/restore-ju-cal.sql

Restauration

Il reste plus qu'à pousser notre script SQL de restore dans la DB.

Attention

Attention

C'est à partir de la qu'on prend le risque de casser. Pensez à prendre un dump de la base SQL avant de vous lancer (cfr la session backup ci-dessus).


Draft Draft / Brouillon
Cette page/chapitre est un brouillon, pas un article ou une règle, et peut être incomplète ou non-fiable! Vous êtes invités à faire des suggestions en page de discussion.
  mysql -u root -p owncloud < /tmp/restore-ju-cal.sql

Attention

Attention

Missing du cleaning des dernier ',' virgules avant ';' des INSERT.

Maintenance

Activer/désactiver un module

Il est possible de désactiver ou activer un module en ligne de commande:

 sudo -u www-data php /var/www/owncloud/occ app:list
 sudo -u www-data php /var/www/owncloud/occ app:enable contacts
 sudo -u www-data php /var/www/owncloud/occ app:disable contacts

Ref