[Tuto] Owncloud + MySQL et PHP7

OwnCloud est une application OpenSource de stockage en ligne et de gestion de fichiers, on l’apparente généralement au très connu Dropbox car ownCloud permet de stocker et de synchroniser des fichiers entre un ou plusieurs postes/serveurs et le serveur OwnCloud, remplissant ainsi le rôle de serveur de sauvegarde pour mettre en sécurité les fichiers et de serveur synchronisation. Pour mettre en place ce service vous devez disposer d’un serveur web utilisant PHP et MySQL ou SQLite.

1 – Installation des packets nécessaire
2 – Installation de OwnCloud
3 – Configuration du serveur WEB
4 – Configuration de php-fpm
5 – Création de la Base de Données

.

$ sudo -s
password :
#

1 – Installation des packets nécessaire

# aptitude update
# aptitude upgrade

# aptitude install nginx mysql-server php7.0 php7.0-curl php7.0-fpm php7.0-gd php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mcrypt php7.0-mysql php7.0-opcache

Il vous sera demandez de saisir un mot de passe pour la base de données MySQL. Saisissez un mot de passe fort, et retenez le 😉

.

2 – Installation de OwnCloud

# cd /tmp
# wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_8.0/Release.key
# apt-key add - < Release.key

# echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list 

# aptitude update
# aptitude install owncloud

.

3 – Configuration du serveur WEB

Nous allons créer un certificat SSL/TLS auto-signé. Si vous avez un certificat signé, vous pouvez l’utiliser sans problème. Pour avoir un certificat chez Gandi, j’ai réalisé un tutoriel à ce sujet.

# mkdir  /etc/nginx/certs/
# cd /etc/nginx/certs/

# openssl genrsa -out owncloud.key 4096
# openssl req -new -key owncloud.key -out owncloud.csr
# openssl x509 -req -days 365 -in owncloud.csr -signkey owncloud.key -out owncloud.crt
# openssl dhparam -out dhparam.pem 4096

Nous allons maintenant créer un fichier de conf nginx pour notre serveur OwnCloud.

# vim /etc/nginx/conf.d/owncloud.conf 

upstream php-handler {
  server 127.0.0.1:9000;
  #server unix:/var/run/php5-fpm.sock;
}

server {
  listen 80;
  server_name owncloud.domain.tld;
  # Obliger la connexion en https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl spdy;
  # Commentez la ligne précédente et décommentez la ligne du dessous pour activer http v2
  # Compatible avec nginx version > 1.8.2
  # listen 443 ssl http2;
  server_name owncloud.domain.tld;

  # Fichier de log
  access_log /var/log/nginx/owncloud-access.log;
  error_log /var/log/nginx/owncloud-error.log;

  # Parametres pour SSL/TLS
  ssl_certificate /etc/nginx/certs/owncloud.crt;
  ssl_certificate_key /etc/nginx/certs/owncloud.key;
  ssl_dhparam /etc/nginx/certs/dhparam.pem;
  ssl_ciphers 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS';
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_session_cache shared:SSL:10m;
  ssl_prefer_server_ciphers on;

  # Ajout de header liés à la sécurité
  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;
  add_header Alternate-Protocol 443:npn-spdy/3;

  # Répertoire dans lequel est installé Owncloud
  root /var/www/owncloud/;

  # Forcer l'encodage en UTF8
  charset utf-8;

  # Taille de fichier maximum  que l'on peut téléverser/uploader
  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  # Désactivation de la compression pour éviter la suppression du header ETag
  gzip off;

  # Décommenter cette option si votre serveur est compilé avec le module ngx_pagespeed
  # Ce module est non supporté
  #pagespeed off;

  # Autoriser la réécriture d'URL
  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

  # Page index du site
  index index.php;

  # Page d'erreur
  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 / {
    # Les régles suivantes sont uniquement nécessaire en cas d'utilisation de 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/ /index.php;
  }

  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_param modHeadersAvailable true;
    fastcgi_pass php-handler;
  }

  # Optionnel : positionne un header EXPIRES long sur les ressources statiques
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires 30d;
    # Optionnel : ne pas logger l'accès aux ressources statiques
    access_log off;
  }

  location = /data/htaccesstest.txt {
    allow all;
    log_not_found off;
    access_log off;
  }
}

.

4 – Configuration de php-fpm

# vim /etc/php/7.0/fpm/pool.d/www.conf

Remplacer : listen = /var/run/php5-fpm.sock
par : listen = 127.0.0.1:9000

5 – Redémarrez les services nginx et php-fpm

# service nginx restart
# service php7.0-fpm restart

.

Création de la Base de Données

# mysql -u root -p

mysql > CREATE USER "owncloud"@"localhost" IDENTIFIED BY "password";
mysql > CREATE DATABASE owncloud;
mysql > GRANT ALL PRIVILEGES ON owncloud.* TO "owncloud"@"localhost";
mysql > FLUSH PRIVILEGES;

Il faudra ensuite renseigner les champs correspondants (user, password, nom de la base de données ..) :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *