Si Apache a été installé via l'installeur de Debian, passer directement à l'installation des modules supplémentaires.
apt update
apt install apache2
Après l'installation, on vérifie qu'apache est activé au démarre et lancé
systemctl is-enabled apache2 systemctl status apache2
a2enmod ssl rewrite headers
systemctl restart apache2
apachectl -M | egrep "ssl|rewrite|headers"
headers_module (shared) rewrite_module (shared) ssl_module (shared)
apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-ldap php-bcmath php-gmp php-apcu libmagickcore-dev
apt install mariadb-server mariadb-client
systemctl is-enabled mariadb systemctl status mariadb
mysql_secure_installation
Enter current password for root (enter for none): OK, successfully used password, moving on... * On répond oui à la connexion via socket witch to unix_socket authentication [Y/n] Y Enabled successfully! Reloading privilege tables.. ... Success!
Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success!
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success!
By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success!
mysql -u root -p
Dans certain cas, le paramètre -p doit être omis car l'utilisateur root du système peut se connecter en tant que root de MariaDB sans avoir a entrer le mot de passe.
CREATE DATABASE nextcloud_db;
CREATE USER UTILISATEURNEXCLOUD@localhost IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO UTILISATEURNEXTCLOUD@localhost;
FLUSH PRIVILEGES;
On se place dans /var/www
cd /var/www
On télécharge la dernière version de Nextcloud (Adapter le lien en fonction de la dernière version)
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest-25.zip
On extrait le fichier zip
unzip nextcloud.zip
On donne les droits d'accès aux fichiers à apache
chown -R www-data:www-data nextcloud
Cela permet de tester son installation via SSL même si la solution Let's Encrypt n'est pas définitive.
On installe Certbot
apt install certbot
Une fois installé, on crée les répertoires nécessaire et on ajuste les droits
mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt
On crée un Vhost pour Let's Encrypt avec son editeur préféré. (Exécuter l'éditeur en indiquant un fichier qui n'existe pas le crée automatiquement)
vi /etc/apache2/conf-available/well-known.conf
ou
nano /etc/apache2/conf-available/well-known.conf
Copier/coller le contenu suivant
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Activer le nouveau Vhost en créant un lien symbolique dans le dossier “conf_enable” (c'est une convention d'Apache)
a2ensite well-known.conf
ou
ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/
On redémarre apache
systemctl restart apache2
On génère un certificat (Remplacer UTILISATEUR@DOMAINE.COM et DOMAINE.COM)
certbot certonly --agree-tos --email UTILISATEUR@DOMAINE.COM --webroot -w /var/lib/letsencrypt/ -d DOMAINE.COM
Pour simplifier la configuration, les Vhosts pour les ports 80 et 443 sont configurés dans le même fichiers. les connexions sur le ports 80 sont automatiquement redirigés vers la connexion 443.
Créer le fichier de configuration des Vhosts avec votre éditeur préféré. (Exécuter l'éditeur en indiquant un fichier qui n'existe pas le crée automatiquement)
vi /etc/apache2/sites-available/nextcloud.conf
ou
nano /etc/apache2/sites-available/nextcloud.conf
Coller le contenu suivant en remplaçant “DOMAINE.COM” par le nom de domaine utilisé.
<VirtualHost *:80>
ServerName DOMAINE.COM
ServerAlias www.DOMAINE.COM
# auto redirect HTTP to HTTPS
Redirect permanent / https://DOMAINE.COM/
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAINE.COM
ServerAlias www.DOMAINE.COM
DocumentRoot /var/www/nextcloud/
Protocols h2 http/1.1
# log files
ErrorLog /var/log/apache2/DOMAINE.COM-error.log
CustomLog /var/log/apache2/DOMAINE.COM-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/DOMAINE.COM/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAINE.COM/privkey.pem
# HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
</VirtualHost>
On active les Vhosts
a2ensite nextcloud.conf
ou
ln -s /etc/apache2/conf-available/nextcloud.conf /etc/apache2/conf-enabled/
Il est possible de tester toute la configuration d'Apache avec cette commande
apachectl configtest
Redémarrer Apache
systemctl restart apache2
Si la procédure d'Installation standardisé de Debian a été suivi, c'est le répertoire /DATA qui sera utilisé stocker les données de Nextcloud. Il est donc nécessaire de donner les droits d'accès a Apache pour ce répertoire.
Donner les droits à Apache sur le répertoire /DATA (Si il n'est pas dans le répertoire de Nextcloud)
chown -R www-data:www-data /DATA
A ce stade l'instance Nextcloud devrait être accessible via son URL
crontab -u www-data -e
Ajouter la ligne suivante à la fin du fichier et quitter (Remplacer par le chemin vers le fichier cron.php)
Il est possible de vérifier que la modification est bien enregistrée avec la commande suivante
crontab -u www-data -l
Il est possible de vérifié que la tâche s'exécute en se rendant de nouveau sur la page Paramètres de base de la page d'administration
La méthode la plus courant et la plus simple est d'utiliser Redis Server
Installer Redis Server et php-redis
apt install redis-server php-redis
Éditer le fichier de configuration de redis-server
vi /etc/redis/redis.conf
Dé-commenter et modifier les lignes suivantes On enlève “/var” de la première ligne On remplace 700 par 770 sur la seconde
unixsocket /run/redis/redis-server.sock unixsocketperm 770
Dé-commenter et modifier également On remplace 6379 par 0
port 0
Ajouter l’utilisateur www-data (Utiliser par Nextcloud au groupe Redis)
usermod -a -G redis www-data
Éditer le fichier de configuration de nextcloud pour y ajouter l'utilisation de Redis server comme cache
vi /var/www/NEXTCLOUDFOLDER/config/config.php
Ajouter les lignes suivante en fin de fichier mais avant le dernier “);”
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => '/run/redis/redis-server.sock',
'port' => 0,
'dbindex' => 0,
'timeout' => 1.5,
),
Démarrer redis-server
service redis-server start
Redémarrer le serveur web Apache
service apache2 restart
Emplacement des fichiers
/etc/apache2/sites-available/ <- Fichiers de configuration Vhosts /etc/apache2/sites-enabled/ <- Fichiers de configuration Vhosts actifs
Statut Apache
systemctl status apache2
Statut Let's Encrypt
systemctl status certbot.timer
Test de renouvellement du certificat
certbot renew --dry-run
Activer un site Apache
a2ensite nomduvhost.conf
ou
ln -s /etc/apache2/conf-available/nomduvhost.conf /etc/apache2/conf-enabled/