ownCloud est une application de partage de fichiers OpenSource basée sur le langage de programmation PHP. OwnCloud fournit la synchronisation et le partage de fichiers auto-hébergés avec une interface Web agréable et des applications de synchronisation pour toutes les principales plates-formes mobiles et de bureau avec une fonctionnalité comme dropbox, méga, etc. ownCloud facilite l'accès et la synchronisation des fichiers, des calendriers et des contacts sur votre appareils.
Dans ce tutoriel, je vais vous guider pour créer votre propre plateforme de serveur de synchronisation et de partage avec ownCloud. Nous installerons ownCloud avec Nginx comme serveur Web, MariaDB (un fork MySQL) comme base de données et php-fpm pour gérer la demande de php sur Linux OpenSUSE Leap 42.1.
Prérequis
- OpenSUSE Leap 42.1
- Privilèges root
- Comprendre la commande zypper
Étape 1 - Installer SuSEfirewall2
SuSEfirewall est un script de pare-feu qui stocke sa configuration dans le fichier "/etc/sysconfig/SuSEfirewall2". Avec SuSEfirewall2, vous pouvez ouvrir des ports en éditant le fichier "SuSEfirewall2".
Installez SuSEfirewall2 avec la commande zypper :
zypper in SuSEfirewall2
Une fois le pare-feu installé, allez dans le répertoire sysconfig et modifiez la configuration "SuSEfirewall2" avec vim :
cd /etc/sysconfig/
vim SuSEfirewall2
Allez à la ligne 253 et ajoutez les ports de tous les services que vous souhaitez utiliser. Dans cette étape, je vais ajouter les ports :ssh, http et https.
FW_SERVICES_EXT_TCP="22 80 443"
Enregistrez le fichier et quittez l'éditeur.
Ensuite, démarrez SuSEfirewall2 et activez-le pour qu'il s'exécute au démarrage :
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Redémarrez maintenant le service sshd :
systemctl restart sshd
Si vous souhaitez tester le port du serveur SSH, vous pouvez utiliser la commande telnet pour vous connecter au port 22 :
telnet 192.168.1.101 22
Étape 2 - Installer Nginx
Nginx est un serveur Web léger avec une faible consommation de mémoire et de processeur. Nous utiliserons nginx comme serveur Web pour notre installation ownCloud.
Installez nginx avec la commande zypper :
zypper in nginx
Démarrez nginx et activez-le au démarrage avec la commande systemctl :
systemctl start nginx
systemctl enable nginx
Ensuite, ajoutez un fichier index.html pour tester si nginx fonctionne.
echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
Vous pouvez maintenant accéder au serveur Web nginx à partir de votre navigateur Web, ou vous pouvez le vérifier avec curl :
curl -I 192.168.1.101
curl 192.168.1.101
Étape 3 - Installer et configurer MariaDB
MariaDB est un fork basé sur OpenSource RDBMS de la base de données MySQL. Dans cette étape, nous allons installer et configurer MariaDB. Ensuite, nous créerons un nouvel utilisateur et une nouvelle base de données pour l'installation d'ownCloud.
Installez MariaDB avec la commande zypper ci-dessous :
zypper in mariadb mariadb-client
Démarrez maintenant MariaDB et ajoutez-le au démarrage du système :
systemctl start mysql
systemctl enable mysql
MariaDB a été démarré, vous pouvez maintenant configurer le mot de passe root pour MariaDB avec la commande ci-dessous :
mysql_secure_installation
Définissez le mot de passe MariaDB/MySQL :
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Le mot de passe root MariaDB a été configuré. Nous pouvons maintenant nous connecter au shell MariaDB/MySQL et créer une nouvelle base de données et un nouvel utilisateur pour ownCloud.
Connectez-vous au shell MariaDB/MySQL :
mysql -u root -p
TYPE your password
Créez une nouvelle base de données "owncloud_db" et un nouvel utilisateur "ownclouduser" avec le mot de passe "[email protected]":
create database owncloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on owncloud_db.* to [email protected] identified by '[email protected]';
flush privileges;
exit
La base de données pour l'installation d'ownCloud a été créée.
Étape 4 - Installer et configurer PHP-FPM
PHP-FPM (FastCGI Process Manager) est une alternative FastCGI moderne pour gérer les sites avec beaucoup de visiteurs. PHP-FPM dispose d'une gestion avancée des processus et est facile à gérer et à configurer.
Dans cette étape, nous installerons php-fpm et certaines extensions PHP, puis nous configurerons le serveur Web nginx pour gérer les requêtes de fichiers php via php-fpm.
Installez php-fpm avec cette commande "zypper in":
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
Lorsque l'installation est terminée, allez dans le répertoire php-fpm et copiez le fichier de configuration par défaut :
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Modifiez le fichier php-fpm.conf avec l'éditeur vim ou nano :
vim php-fpm.conf
Décommentez la ligne 32 pour activer le journal php-fpm. S'il y a une erreur plus tard dans vos scripts PHP, vous pouvez trouver le fichier journal dans le répertoire "/var/log/".
error_log = log/php-fpm.log
Changez les lignes 148 - 149 en "nginx" pour l'utilisateur/groupe unix des processus.
user = nginx
group = nginx
Modifiez la valeur à la ligne 159 pour exécuter php-fpm avec un fichier socket.
listen = /var/run/php-fpm.sock
Décommentez et modifiez la valeur des lignes 170 à 172 pour définir les autorisations du socket unix.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Enregistrez le fichier et quittez l'éditeur.
Ensuite, éditez le fichier php.ini dans le répertoire cli :
cd /etc/php5/cli/
vim php.ini
Décommentez et modifiez la valeur de la ligne 758 :
cgi.fix_pathinfo=0
Enregistrez et quittez.
Copiez le fichier php.ini dans le répertoire conf.d :
cp php.ini /etc/php5/conf.d/
Configurez maintenant le chemin du gestionnaire de session php. Dans ce tutoriel, nous exécutons php-fpm en tant qu'utilisateur nginx, assurez-vous donc que l'utilisateur nginx peut écrire dans le répertoire sessions. Vous pouvez voir la configuration du chemin de session dans le fichier php.ini à la ligne 1390.
session.save_path = "/var/lib/php5"
Modifiez le propriétaire du répertoire de session "/var/lib/php5/", faites de l'utilisateur nginx le propriétaire du répertoire :
chown -R nginx:nginx /var/lib/php5/
Ensuite, configurez php-fpm pour qu'il fonctionne avec le serveur Web nginx. Accédez au répertoire de configuration nginx et sauvegardez le fichier nginx.conf avant de modifier la configuration.
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf
Ajoutez la nouvelle configuration suivante à la ligne 65 - cette configuration gérera toutes les requêtes de fichiers PHP.
location ~ \.php$ {
root /srv/www/htdocs;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Enregistrez et quittez, puis testez la configuration nginx pour vous assurer qu'il n'y a pas d'erreur dans la configuration :
nginx -t
S'il n'y a pas d'erreur, vous pouvez voir les résultats ci-dessous :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Démarrez maintenant php-fpm et ajoutez-le à stat au démarrage, puis redémarrez le service nginx :
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginx et php-fpm sont configurés, vous pouvez tester le fichier php en créant un nouveau fichier phpinfo() dans le répertoire racine du web :
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Ouvrez votre navigateur et visitez l'IP du serveur :
http://192.168.1.101/info.php
ou vous pouvez utiliser curl :
curl -I 192.168.1.101/info.php
Étape 5 - Générer un certificat SSL
Exécuter ownCloud via une connexion https sécurisée est très important pour garder vos fichiers sécurisés et privés. Si vous utilisez ownCloud sur votre propre entreprise, vous pouvez acheter le certificat SSL, ou si vous voulez un certificat SSL gratuit, vous pouvez utiliser Let's-encrypt. Ici je vais créer un certificat SSL dit "auto-signé", le cryptage d'un certificat auto-signé n'est pas inférieur à un certificat officiel mais vous devrez accepter un avertissement de sécurité dans votre navigateur lorsque vous accéderez au service la première fois .
Créez un nouveau répertoire "ssl" et générez le certificat avec la commande openssl :
cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key
Ensuite, modifiez les autorisations de la clé :
chmod 600 example-owncloud.key
Étape 6 - Installer et configurer ownCloud
Dans cette étape, nous allons installer ownCloud et configurer un nouvel hôte virtuel nginx pour le domaine ownCloud. Nous allons installer owncloud avec le nom de domaine "example-owncloud.co", et le fichier racine web dans le répertoire "/srv/www/owncloud/".
Télécharger ownCloud
Allez dans le répertoire "/srv/www/" et téléchargez la source ownCloud et extrayez-la :
cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip
Créez maintenant un nouveau répertoire de données sous le répertoire owncloud pour stocker toutes les données utilisateur. Remplacez le propriétaire du répertoire ownCloud par l'utilisateur nginx :
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
Configurer un hôte virtuel Nginx pour ownCloud
Accédez au répertoire nginx et créez un nouveau répertoire pour la configuration du fichier de l'hôte virtuel :
cd /etc/nginx/
mkdir vhosts.d/
Allez dans le répertoire vhosts.d et créez un nouveau fichier d'hôte virtuel pour owncloud "example-owncloud.conf".
cd vhosts.d/
vim example-owncloud.conf
collez la configuration ci-dessous :
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/var/run/php-fpm.sock;
}
server {
listen 80;
server_name example-owncloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example-owncloud.co;
ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;
# Path to the root of your installation
root /srv/www/owncloud/;
# set max upload size
client_max_body_size 10G;
fastcgi_buffers 64 4K;
# Disable gzip to avoid the removal of the ETag header
gzip off;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ =404;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the location ~ \.php(?:$|/) { block
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
# Optional: Don't log access to assets
access_log off;
}
# Optional: Don't log access to other assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
access_log off;
}
}
Enregistrez le fichier et quittez l'éditeur.
Testez la configuration nginx et n'oubliez pas de redémarrer tous les services :
nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
Test
Visitez le domaine owncloud :
exemple-owncloud.co
Vous serez redirigé vers la connexion https.
Ensuite, saisissez votre nom d'utilisateur et votre mot de passe administrateur, le nom, l'utilisateur et le mot de passe de la base de données, puis cliquez sur "Terminer la configuration".
Attendez une seconde et vous verrez le gestionnaire de fichiers owncloud :
L'installation d'ownCloud avec nginx et MariaDB sur OpenSUSE Leap 42.1 est terminée.
Références
- https://doc.owncloud.org/
- https://www.howtoforge.com/tutorial/install-nginx-php-and-mysql-lemp-stack-on-opensuse-leap-42.1/
- https://www.howtoforge.com/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/