Cet article décrit l’installation et la maintenance d’un serveur OwnCloud sur un serveur dédié tournant sous CentOS 7. OwnCloud est une plateforme de stockage et de partage de fichiers et d’applications en ligne. C’est une alternative à Dropbox, lequel est basé sur un Cloud public. Dans OwnCloud, le stockage de données se fait au sein de l’infrastructure de l’entreprise, et les accès sont soumis à la politique de sécurité informatique de celle-ci.
OwnCloud vous permet de partager certains fichiers et répertoires de votre ordinateur en les synchronisant avec le serveur OwnCloud. Il suffit de définir le ou les répertoires partagés. Leur contenu est immédiatement synchronisé avec le serveur ainsi qu’avec tous les postes clients que vous définissez, que ceux-ci tournent sous Microsoft Windows, sous Mac OS X ou sous Linux. OwnCloud fonctionne également avec les smartphones et les tablettes.
- Prérequis
- Configuration de SELinux
- Installation des modules PHP
- Configuration de l’hôte virtuel
- Téléchargement
- Installation
- Mises à jour
- Que faire si la mise à jour reste bloquée ?
- Résoudre les problèmes et améliorer les performances
- Documentation
Prérequis
- un domaine valide, par exemple
cloud.slackbox.fr
- un certificat SSL/TLS pour ce domaine
- un serveur LAMP fonctionnel avec PHP 5.6
- un hôte virtuel sécurisé
- un serveur mail pour ce domaine
- SELinux activé en mode strict
Configuration de SELinux
Étant donné que nous installons OwnCloud en-dessous de /var/www
, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t
. Rien à signaler de ce côté-là.
OwnCloud doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.
# setsebool -P httpd_can_sendmail on
Apache possède les droits d’écriture sur une partie de l’arborescence /var/www/slackbox-owncloud/html
. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.
# setsebool -P httpd_unified on
Enfin, si l’on souhaite configurer le verrouillage transactionnel des fichiers avec Redis, il faut que OwnCloud puisse se connecter au serveur Redis.
# setsebool -P httpd_can_network_connect on
Installation des modules PHP
En dehors d’une installation minimale de PHP 5.6 avec php56w-mysql
, OwnCloud requiert également les modules PHP suivants.
php56w-gd
php56w-intl
php56w-mbstring
php56w-mcrypt
php56w-process
php56w-xml
Installer ces modules avec Yum et relancer Apache.
# yum install php56w-gd php56w-intl php56w-mbstring php56w-mcrypt \ php56w-process php56w-xml # systemctl restart httpd
Configuration de l’hôte virtuel
La configuration de l’hôte virtuel autorise les directives placées dans le fichier .htaccess
à la racine de l’installation. Le module WebDAV doit être désactivé, étant donné qu’OwnCloud utilise son propre serveur DAV interne SabreDAV. Voici à quoi cela ressemble sur ma machine de test.
# /etc/httpd/conf.d/20-cloud.slackbox.fr.conf # http://cloud.slackbox.fr -> https://cloud.slackbox.fr <VirtualHost *:80> ServerName cloud.slackbox.fr Redirect / https://cloud.slackbox.fr </VirtualHost> # https://cloud.slackbox.fr <VirtualHost _default_:443> Header always set Strict-Transport-Security \ "max-age=63072000; includeSubDomains" ServerAdmin info@microlinux.fr DocumentRoot "/var/www/slackbox-owncloud/html" <Directory "/var/www/slackbox-owncloud/html"> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> </Directory> ServerName cloud.slackbox.fr:443 SSLEngine on SSLCertificateFile /etc/letsencrypt/chemin/vers/cert.pem SSLCertificateKeyFile /etc/letsencrypt/chemin/vers/privkey.pem SSLCertificateChainFile /etc/letsencrypt/chemin/vers/fullchain.pem BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 ErrorLog logs/cloud.slackbox.fr-error_log CustomLog logs/cloud.slackbox.fr-access_log common </VirtualHost>
Téléchargement
Créer un répertoire de téléchargement approprié pour ranger OwnCloud.
# mkdir -p /root/webapps/owncloud
Télécharger OwnCloud.
# cd /root/webapps/owncloud # wget -c \ https://download.owncloud.org/community/owncloud-10.0.3.tar.bz2
Installation
Créer la base de données.
# mysql -u root -p Enter password: ******** Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 5.5.52-MariaDB MariaDB Server MariaDB [(none)]> create database `slackbox-owncloud`; Query OK, 1 row affected (0.02 sec) MariaDB [(none)]> grant all on `slackbox-owncloud`.* -> to slackboxuser@localhost -> identified by '********'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit; Bye
L’hôte virtuel se situera dans /var/www/slackbox-owncloud/html
. Créer le répertoire parent, décompresser l’archive téléchargée à l’intérieur de ce répertoire et renommer le répertoire owncloud
résultant en html
.
# cd /var/www # mkdir slackbox-owncloud # cd slackbox-owncloud # tar xjf /root/webapps/owncloud/owncloud-10.0.3.tar.bz2 # ls owncloud # mv owncloud html
La définition des permissions est quelque peu fastidieuse. Pour nous faciliter la tâche, OwnCloud a publié un petit script shell sur son site, qu’il suffit d’adapter à nos besoins. Le répertoire themes
semble avoir disparu lors du passage de la version 9 à la version 10. Dans le doute, nous allons confier sa création au script.
#!/bin/bash # # set-owncloud-permissions.sh ocpath='/var/www/slackbox-owncloud/html' htuser='apache' htgroup='apache' rootuser='microlinux' printf "Creating possible missing Directories\n" mkdir -p $ocpath/data mkdir -p $ocpath/assets mkdir -p $ocpath/updater mkdir -p $ocpath/themes printf "chmod Files and Directories\n" find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 printf "chown Directories\n" chown -R ${rootuser}:${htgroup} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/assets/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown -R ${htuser}:${htgroup} ${ocpath}/updater/ chmod +x ${ocpath}/occ printf "chmod/chown .htaccess\n" if [ -f ${ocpath}/.htaccess ] then chmod 0644 ${ocpath}/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/.htaccess fi if [ -f ${ocpath}/data/.htaccess ] then chmod 0644 ${ocpath}/data/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess fi
Ranger ce script dans un endroit approprié avant de l’exécuter. Les permissions du répertoire parent /var/www/slackbox-owncloud
devront être définies manuellement.
# cd /var/www # chown microlinux:microlinux slackbox-owncloud # chmod 0755 slackbox-owncloud # cd /usr/local/sbin # chmod 0700 set-owncloud-permissions.sh # ./set-owncloud-permissions.sh Creating possible missing Directories chmod Files and Directories chown Directories chmod/chown .htaccess
À présent, ouvrir l’assistant d’installation dans l’interface web d’OwnCloud.
- Définir un compte administrateur.
- Choisir MySQL/MariaDB comme serveur de bases de données.
- Renseigner les paramètres de connexion à la base, en précisant le port 3306.
- Cliquer sur Terminer l’installation.
À présent, on peut se connecter à OwnCloud avec l’identifiant et le mot de passe de l’administrateur que l’on vient de définir.
Lors de la première connexion, OwnCloud affiche une info sur les clients pour les différentes plateformes.
Une fois qu’on a fermé la fenêtre d’infos, voilà comment se présente la configuration par défaut, avec une poignée de documents et d’images qui font office de démo.
Mises à jour
La page Administration (ou Paramètres > Administration) affiche la version actuellement utilisée de OwnCloud. Elle permet également d’effectuer une mise à jour de l’application.
Avant de démarrer cette opération, la meilleure façon de procéder consiste à attribuer “à la louche” les droits d’écriture du serveur web sur notre application, étant donné que les permissions que nous avons définies lors de l’installation sont plutôt restrictives et empêchent la mise à jour dans l’état.
# cd /var/www/slackbox-owncloud # chown -R apache:apache html/ # find html/ -type d -exec chmod 0755 {} \; # find html/ -type f -exec chmod 0644 {} \;
Sur une machine de production, c’est une bonne idée de remplacer le canal de mise à jour stable par production. Dans l’exemple ci-dessous, on part d’une installation Owncloud 8.2.11, et on effectue la mise à jour vers la version 9.0.10.
Cliquer sur Mettre à jour, la mise à jour automatique démarre.
Une fois que les fichiers de l’application ont été mis à jour, il faut mettre à niveau la base de données. Cliquer sur Exécuter.
Confirmer en cliquant sur Démarrer la mise à jour. Notez que l’application Contacts a été intégré à la panoplie d’applications officielles depuis la version 9.0.
La mise à niveau de la base de la base de données s’effectue assez rapidement. Au bout de l’opération, il suffit de recharger la page dans le navigateur.
En fonction du canal de mises à jour choisi, la version utilisée sera considérée comme étant la dernière en date ou non.
Si l’on repasse le canal de mises à jour de production à stable, l’interface de mises à jour nous propose une nouvelle mise à jour.
Depuis la version 9.0, c’est l’application Updater qui gère les mises à jour. L’apparence a changé, le fonctionnement reste le même.
Au bout de l’opération, il faudra rafraîchir la page et se reconnecter. Si l’on a opté pour le canal de mises à jour stable, on pourra éventuellement procéder à une mise à jour subséquente.
Une fois que la mise à jour est terminée, restaurer les permissions correctes.
# cd /usr/local/sbin/ # ./set-owncloud-permissions.sh
Que faire si la mise à jour reste bloquée ?
La mise à jour de la version 10.0.8 à la version 10.0.9 est resté bloquée. Le problème s’est manifesté sous forme d’une page d’avertissement de maintenance en cours, et le système en est resté là. Dans ce cas, il faut mettre la main à la pâte et effectuer les opérations en ligne de commande.
Interrompre le processus de mise à jour en cours.
# sudo -u apache php occ maintenance:mode --off
Lancer la mise à jour.
# sudo -u apache php occ upgrade
Si jamais ça reste bloqué, on peut essayer ceci.
# sudo -u apache php occ maintenance:repair
Cette fois-ci, OwnCloud nous affiche la raison du blocage.
2018-08-08T04:30:55+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace. 2018-08-08T04:30:55+00:00 Repair warning: Please install or update the following apps manually or disable them with: occ app:disable calendar occ app:disable contacts occ app:disable gallery occ app:disable tasks occ app:disable templateeditor ... 2018-08-08T04:30:55+00:00 Update failed
On va donc manuellement désactiver les applications en question.
# sudo -u apache php occ app:disable calendar # sudo -u apache php occ app:disable contacts # sudo -u apache php occ app:disable gallery # sudo -u apache php occ app:disable tasks # sudo -u apache php occ app:disable templateeditor
Ensuite on va relancer la mise à jour.
# sudo -u apache php occ upgrade
Une fois que la mise à jour s’est terminée avec succès, il faudra quitter le mode maintenance, mettre à jour Market et réinstaller manuellement les applications.
Résoudre les problèmes et améliorer les performances
Sur un serveur de test, j’ai effectué une série de mises à jour successives depuis OwnCloud 8.2.11 vers les versions 9.0.10, 9.1.6 et 10.0.3. Au bout de l’opération, la page des Paramètres m’affiche les messages d’erreur suivants.
Problèmes liés à l’intégrité de fichiers
Depuis la version 10, OwnCloud vérifie l’intégrité de tous les fichiers, pour éviter les problèmes issus de fichiers corrompus. La mise à jour de la version 9.1.6 vers la version 10.0.3 m’affiche justement un problème d’intégrité de fichiers.
Un clic sur Liste des fichiers invalides m’affiche ceci.
Dans ce cas, il suffit de restituer le fichier manquant CHANGELOG.md
depuis l’archive téléchargée, en attribuant les permissions qui vont bien.
# cd /root/webapps/owncloud # tar xjf owncloud-10.0.3.tar.bz2 # cd owncloud/ # cp CHANGELOG.md /var/www/slackbox-owncloud/html/ # cd /var/www/slackbox-owncloud/html # chown microlinux:apache CHANGELOG.md # chmod 0640 CHANGELOG.md
Un clic sur Relancer, et le problème est résolu.
Configurer le cache de la mémoire
Le prochain avertissement est bénin et concerne une possible amélioration des performances de notre installation.
Installer le cache APCu.
# yum install php56w-pecl-apcu
Redémarrer Apache.
# systemctl restart httpd
Éditer config/config.php
et ajouter l’option suivante.
... 'logtimezone' => 'UTC', 'memcache.local' => '\OC\Memcache\APCu', 'installed' => true, 'maintenance' => false, ...
Configurer le verrouillage transactionnel de fichiers
Le prochain message d’erreur concerne le verrouillage transactionnel des fichiers.
Installer le serveur Redis et le module PHP correspondant.
# yum install redis php56w-pecl-redis
Activer et démarrer le serveur Redis.
# systemctl enable redis # systemctl start redis
Redémarrer Apache.
# systemctl restart httpd
Éditer config/config.php
et ajouter la stance suivante.
... 'logtimezone' => 'UTC', 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ], 'installed' => true, 'maintenance' => false, ...
Utiliser les tâches planifiées du système
Le dernier avertissement consiste les tâches planifiées.
Là encore, nous pouvons améliorer les performances de notre installation, en utilisant les tâches planifiées du système.
Éditer une tâche automatisée qui lance cron.php
toutes les 15 minutes.
# crontab -u apache -e */15 * * * * /usr/bin/php -f /var/www/slackbox-owncloud/html/cron.php
À partir de là, notre installation fonctionne parfaitement.
Documentation
Pour plus de détails, voir l’excellent manuel rédigé par Carla Schroder.
kikinovak,
merci beaucoup pour votre solutions perfect au
– Problèmes liés à l’intégrité de fichiers
et
– Configurer le verrouillage transactionnel de fichiers!
Je travaille avec centos7 (mais php7) et owncloud 10.0.7. Avec un peu de change les solutions j’ai pouvoir de éliminée les erreur que mon installation d’ owncloud a passé.
S’ il vous plaît excusez moi mon français très mauvais. Il est 45 années passez que j’ai étudiez français a l’école.
kormorix d’Allemagne
Schön, daß das gut gelaufen ist. Sie können mir gern auf Deutsch schreiben. Ich bin gebürtiger Österreicher. :o)
Hallo nochmal kiki,
mittlerweile läuft oc in der version 10 nach hartem upgradekampf.
Danke für die Anleitung. Wobei ich bei der redis-geschichte eine Zeit lang in der Luft hing. Schliesslich brachte mich diese Seite auf die richtige Spur mit dem Eintrag in der php.ini. Vielleicht hilfts ja wem. https://kenwu0310.wordpress.com/2018/03/23/centos-7-%E5%AE%89%E8%A3%9D-owncloud-%E4%B8%89-%E4%BF%AE%E6%AD%A3-transactional-file-locking-%E5%95%8F%E9%A1%8C/
Hallo Kiki,
erstmal schöne weihnachten dir und deinen Lieben.
Und danke für die Anleitung.
Ich stehe auch gerade vor der Aufgabe, Oc 8.1 auf die 10er upzugraden.
Meine Frage wäre, wie lange der Updateprozess bei dir gedauert hat ?
Hintergrund ist der, dass ungefähr 200 User auf OC drauf sind.Und ob das mit der grafischen App sinnvoll ist (php timeouts ?)
und die kommandozeile nicht besser wäre..oder gleich die 10er manuell installieren ? PHP (remi72) und das System (Centos 1503) gehört natürlich auch gleich auf den aktuellen Stand gebracht.
Tips oder Erfahrungen deinerseits ?
Anyway: Schöne Feiertage noch…
lg günter