Claroline – Installation du serveur

Claroline Connect est un LMS (Learning management system) Open Source sous licence GPLv3 permettant de créer et d’administrer des formations et des espaces de collaboration en ligne. Il est écrit en PHP et développé par le Centre de Recherche et de Développement de l’ECAM et l’Université Catholique de Louvain. Sa version actuelle est la 10.0.1 suite à une nouvelle numérotation des versions, mais nous installerons ici une version antérieure, la 17.01 (ou 9.1.0 dans la nouvelle numérotation).

Alternatives Open Source à Claroline Connect :

 

Objectif

 

L’objectif de cet article est l’installation et la configuration d’un serveur LAMP7 (Linux Apache MariaDB PHP7) auto-hébergé Claroline en version 10.0.1 sur une distribution Linux Debian Stretch 9.4 64bits.

 

Schéma logique

 

 

Pré-requis

 

1. Pré-requis avant réalisation

  • Un serveur Debian Jessie 9.4 64 bits fonctionnel (installation basique avec utilitaires usuels du système et service SSH)
  • Packages de base supplémentaires : resolvconf, tree, dnsutils
  • Domaine utilisé : opensharing.priv

 

2. Configuration réseau initiale

Serveur Claroline
FQDN claroline-test.opensharing.priv
Adresse IP 192.168.1.31
Réseau 192.168.1.0/24
Passerelle 192.168.1.1
dns-nameservers 192.168.1.11 192.168.1.12
dns-search opensharing.priv

 

Contenu initial du fichier /etc/network/interfaces :

auto lo
iface lo inet loopback

allow-hotplug enp0s3
iface enp0s3 inet static
	address 192.168.1.31
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1
	dns-search opensharing.priv
	dns-nameservers 192.168.1.11 192.168.1.12

 

Contenu initial du fichier /etc/hosts :

127.0.0.1	localhost.localdomain                  localhost
192.168.1.31	claroline-test.opensharing.priv        claroline-test
192.168.1.31	claroline.opensharing.priv             claroline

Rmq : L’adresse 127.0.1.1 doit être retirée sur un serveur à IP fixe et remplacée par cette dernière, tel que l’exemple ci-dessus.
 
Contenu initial du fichier /etc/host.conf :

order hosts, bind
multi on

 
Contenu initial du fichier /etc/resolv.conf :

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.11
nameserver 192.168.1.12
search opensharing.priv

Rmq :
Le fichier /etc/resolv.conf ne doit pas être édité dès lors que le paquet resolvconf a été installé.

Pour prendre en compte les modifications des fichiers de configuration relatifs au réseau, redémarrage du service réseau :

# systemctl restart networking
# ifup enp0s3

 

Optionnel : Création d’un alias global reprenant la commande ifconfig disparue sous Debian Stretch

# nano /etc/bash.bashrc
alias ifconfig='ip addr'
# source /etc/bash.bashrc

 

Réalisation

 

1. Installation de paquets complémentaires

Paquets Git et cURL :

# apt-get install git curl

Installe les paquets suivants par dépendances :

curl git git-man libcurl3
liberror-perl rsync

 

Paquet FFmpeg :

# apt-get install ffmpeg

Installe les paquets suivants par dépendances :

ffmpeg libavdevice57 libavfilter6 libbs2b0
libcdio-cdda1 libcdio-paranoia1 libebur128-1 libflite1
libopenal-data libopenal1 libopencv-core2.4v5 libopencv-imgproc2.4v5
libpgm-5.2-0 libpostproc54 librubberband2 libsdl2-2.0-0
libsodium18 libtbb2 libzmq5

 

2. Installation de Apache

# apt-get install apache2 apache2-doc

Installe les paquets suivants par dépendances :

apache2 apache2-bin apache2-data apache2-doc
apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap ssl-cert

 

3. Installation de MariaDB

# apt-get install mariadb-server mariadb-client

Installe les paquets suivants par dépendances :

galera-3 gawk libcgi-fast-perl libcgi-pm-perl
libdbd-mysql-perl libdbi-perl libfcgi-perl libhtml-template-perl
libsigsegv2 libterm-readkey-perl mariadb-client mariadb-client-10.1
mariadb-server mariadb-server-10.1 psmisc rsync

 

4. Configuration de MariaDB

On peut, pour le moment, se loguer sans mot de passe (la touche entrée sur une chaîne vide suffit). C’est donc la première chose à corriger.

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set plugin='mysql_native_password' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> quit;
Bye

Il faut maintenant définir un mot de passe pour root et corriger quelques paramètres de sécurité par défaut.

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set 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!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Maintenant connectons-nous avec le mot de passe root système et créons la base de données qui accueillera PrestaShop.

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS clarolinedb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER clarolineadmin@localhost IDENTIFIED BY "clarolineadminpw";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON clarolinedb.* TO clarolineadmin@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| clarolinedb        |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> set global sql_mode='';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

 

5. Installation de PHP7 et de ses dépendances

Sous Debian 9 Stretch, PHP 7 est la version par défaut des dépôts de base.

# apt-get install php php-curl php-mysql php-gd php-common php-intl php-mbstring php-mcrypt php-xml php-json php-zip php-soap memcached

Installe les paquets suivants par dépendances :

libapache2-mod-php7.0 libmcrypt4 php-common php-curl
php-gd php-intl php-json php-mbstring
php-mcrypt php-mysql php-xml php-zip
php-soap php7.0 php7.0-cli php7.0-common
php7.0-gd php7.0-intl php7.0-json php7.0-mbstring
php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline
php7.0-xml php7.0-zip php7.0-soap php7.0-curl
memcached

 

Configuration du moteur de cache Opcache permettant le stockage en mémoire des scripts PHP précompilés pour un gain de performance :

# nano /etc/php/7.0/mods-available/opcache.ini

Ajouter les lignes suivantes en fin de fichier :

opcache.memory_consumption=512
opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.max_accelerated_files=5000

 

6. Installation de Node.js

# curl -sL https://deb.nodesource.com/setup_7.x | bash -

Installe le dépôt Node.js v7.x en suivante les étapes suivantes :

# apt-get update
# apt-get install -y apt-transport-https > /dev/null 2>&1
# curl -sLf -o /dev/null ‘https://deb.nodesource.com/node_7.x/dists/jessie/Release’
# curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add –
# echo ‘deb https://deb.nodesource.com/node_7.x jessie main’ > /etc/apt/sources.list.d/nodesource.list
# echo ‘deb-src https://deb.nodesource.com/node_7.x jessie main’ >> /etc/apt/sources.list.d/nodesource.list
# apt-get update

 

# apt install -y nodejs

Installe Node.js en version 7.9.0 et npm en version 4.2.0. Claroline ne semble pas compatible avec une version récente de Node.js.
 

7. Configuration de Apache

# nano /etc/apache2/sites-available/claroline.conf

<VirtualHost *:80>
   DocumentRoot /var/www/claroline/web/
   ServerName claroline.opensharing.priv
   Redirect permanent / https://claroline.opensharing.priv/
</VirtualHost>

<VirtualHost *:443>

   DocumentRoot /var/www/claroline/web
   ServerName claroline.opensharing.priv

   <Directory /var/www/claroline/web/>
      Options +FollowSymlinks
      AllowOverride All
   </Directory>

   SetEnv HOME /var/www/claroline/web
   SetEnv HTTP_HOME /var/www/claroline/web
   
   ErrorLog /var/log/apache2/claroline.error.log
   CustomLog /var/log/apache2/access.log combined

   SSLEngine On
   SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
   SSLCertificateFile /etc/ssl/certs/clarolineperso.crt
   SSLCertificateKeyFile /etc/ssl/private/clarolineperso.key

</VirtualHost>

 
Génération de la clef privée :

# openssl genrsa -out /etc/ssl/private/clarolineperso.key 1024
Generating RSA private key, 1024 bit long modulus
.........++++++
..........................................................................................................++++++
e is 65537 (0x010001)

Demande de certificat à partir de la clef :

# openssl req -new -key /etc/ssl/private/clarolineperso.key -out /etc/ssl/certs/clarolineperso.csr
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank.
For some fields there will be a default value, if you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Ile-de-France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OpenSharing
Organizational Unit Name (eg, section) []:Service Informatique
Common Name (e.g. server FQDN or YOUR name) []:claroline.opensharing.priv
Email Address []:admin@opensharing.priv

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:clarolinecertificate
An optional company name []:OpenSharing

Construction du certificat :

# openssl x509 -req -days 365 -in /etc/ssl/certs/clarolineperso.csr -signkey /etc/ssl/private/clarolineperso.key -out /etc/ssl/certs/clarolineperso.crt
Signature ok
subject=/C=FR/ST=Ile-de-France/L=Paris/O=OpenSharing/OU=Service Informatique/CN=claroline.opensharing.priv/emailAddress=admin@opensharing.priv
Getting Private key

 

8. Installation de Claroline

# wget http://packages.claroline.net/releases/17.01/claroline-17.01.tar.gz
# tar -zxvf claroline-17.01.tar.gz -C /var/www/
# chown -R www-data:www-data /var/www/
# cd /var/www/claroline/

 
Activation du site et des modules et vérification de la syntaxe du VirtuaHost :

# a2ensite claroline
# a2enmod rewrite
# a2enmod ssl
# apachectl configtest
Syntax OK

 

9. Installation de Composer :

# curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 1.4.1) successfully installed to: /var/www/claroline/composer.phar
Use it: php composer.phar

 

10. Génération du fichier de configuration /var/www/claroline/app/config/parameters.yml

# php scripts/configure.php
Please provide a value for the following parameters:
database_host (localhost): 
database_name (claroline): clarolinedb
database_user (root): clarolineadmin
database_password: clarolineadminpw
secret (change_me): newsecretpassword
Config file app/config/parameters.yml written

 

11. Installation de l’extension PHP FFmpeg :

# sudo -u www-data php composer.phar require php-ffmpeg/php-ffmpeg
# sudo -u www-data php composer.phar require php-ffmpeg/extras  

 

12. Pré-configuration rapide de Claroline :

# sudo -u www-data php composer.phar fast-install
> php scripts/check.php
> php app/console doctrine:database:create --if-not-exists
Database `clarolinedb` for connection named default already exists. Skipped.
> php vendor/bin/doctrine dbal:import claroline.sql -vvv
Processing file '/var/www/claroline/claroline.sql'... OK!

> php app/console assets:install web --symlink
Trying to install assets as symbolic links.
Installing assets for Claroline\Bundle\FrontEndBundle into web/bundles/frontend
The assets were installed using symbolic links.
Installing assets for Claroline\CoreBundle into web/bundles/clarolinecore
The assets were installed using symbolic links.
[...]
Installing assets for Innova\AngularUIResourcePickerBundle into web/bundles/innovaangularuiresourcepicker
The assets were installed using symbolic links.
Installing assets for FOS\JsRoutingBundle into web/bundles/fosjsrouting
The assets were installed using symbolic links.

Désactivation du mode maintenance :

# php app/console claroline:maintenance:disable

Création d’un administrateur du site (option -a) :

# php app/console claroline:user:create -a
Enter the user first name: John
Enter the user last name: Doe
Enter the user username: clarolineadmin
Enter the user password: clarolineadminpw
Enter the user email: admin@opensharing.priv

 

13. Redémarrage des services

# systemctl restart apache2
# systemctl restart mysql

 

14. Configuration de Claroline par le navigateur Web

Saisir, dans la barre d’adresses, l’adresse suivante :

https://claroline.opensharing.priv

 
Le répondeur OCSP nous signifie que le certificat n’émane pas d’une autorité de certification reconnue, un message d’avertissement est donc émis.


Cliquer sur Avancé puis Ajouter une exception…


Il suffit ensuite de Confirmer l’exception de sécurité.


L’interface de Claroline Connect se lance ensuite. Si ce n’est pas le cas, saisir l’URL suivant dans la barre d’adresse :

https://claroline.opensharing.priv/web/app.php


Cliquer sur Connexion pour afficher la fenêtre d’authentification. Saisir les informations relatives à l’administrateur créé précédemment.

La plateforme par défaut de l’administrateur s’affiche.


Elle donne accès à certains paramétrages ou configurations.




 

Pour aller plus loin

 

1. Effectuer une sauvegarde manuelle complète

# mkdir -p /home/adminsys/backup/17.01/
# cd /home/adminsys/backup/17.01/
# tar -czvf backup-claroline-20180621.tar.gz -C /var/www/ claroline/
# mysqldump --user=clarolineadmin --password=clarolineadminpw --databases clarolinedb > claroline-20180621.sql

 

2. Effectuer une restauration manuelle complète

# cd /home/adminsys/backup/17.01/
# tar -xzvf backup-claroline-20180621.tar.gz -C /var/www/
# mysql --user=clarolineadmin --password=clarolineadminpw clarolinedb < claroline-20180621.sql

 

Références

 

Fermer le menu
%d blogueurs aiment cette page :