# SPARQL Protocol and RDF Query Language/Travail pratique/Installer Linux
## Introduction
### Pourquoi Linux ?

La grande majorité des triplestores utilisent les librairies de Redland (librdf.org). Ces librairies ne sont maintenues que sous Linux. C'est la raison pour laquelle tous les serveurs SPARQL performants ne fonctionnent que sous Linux.

### Pourquoi utiliser Docker ?

J’ai entendu à plusieurs reprises des étudiants ne désirant pas modifier la configuration de leur ordinateur. De nos jours, les installations Linux cohabitent parfaitement avec un système Windows et donc avec leurs jeux préférés ;)
Docker est une plate-forme ouverte pour développer, partager et exécuter des applications en dissociant les applications du système qu'il l’exécute. Docker permet également de tester des systèmes d'exploitation et se rapproche ainsi de solution comme OpenStack. Docker permet de tester des scripts d'installation comme si on les utilisait sur un serveur en situation réel.
Nous utiliserons Docker afin de simuler l’installation réelle de services SPARQL sur un serveur CentOS via un accès SSH. Il est indispensable qu'au moins une fois, un développeur soit confronté à l'installation d'un logiciel via SSH.

## Installation d'une instance CentOS via Docker

Si vous ne savez pas ce qu'est Docker, je vous conseille d'aller lire quelques introductions à Docker sur le Web avant de poursuivre.

### Installation de Docker Community Edition (CE)

Choisissez la plateforme que vous utilisez puis il suffit de suivre les instructions. Si vous utilisez déjà Linux, il faut préférer l'installation via un package (en fonction de votre distribution Linux via yum, dnf, apt-get, etc.)
Ensuite pour vérifier votre installation, vous utiliserez ces commandes :

### Créer le projet Docker pour CentOS

Les images des conteneurs peuvent être téléchargées et partagées sur https://hub.docker.com/explore/, ou générées à partir d'un fichier nommé Dokerfile par défaut (sinon il faudra préciser son nom dans les commandes avec l'argument "-f").
Nous allons durant les TP travailler sur une instance de CentOS7 dans un conteneur Docker en passant par un service SSH comme si c'était un vrai serveur. Cependant, il faut comprendre que Docker n'est pas un outil de mise en production. Il sert à tester des logiciels ou à les développer comme nous allons le faire.
Le fichier Dokerfile qui permettra de construire l'image de notre serveur CentOS 7.
Si vous avez Git, vous pouvez utiliser Git pour télécharger le projet directement :
Sinon créer le fichier Dokerfile en y insérant le texte suivant :

### Construire l’image Docker pour CentOS

Dans le répertoire où se trouve votre fichier Dockerfile, exécuter cette commande pour construire l'image Docker :

### Construire le conteneur et démarrer CentOS

CentOS a besoin quelque fois de certains droits d'accès (avec systemctl par exemple) et l'option "privileged" devient nécessaire. La ligne de commande a relancer à chaque changement de script est la suivante :
Si vous voulez supprimer le conteneur pour la reconstruire.

### Accéder votre instance CentOS en mode root

Classiquement pour ouvrir un shell en mode root, vous n’avez pas besoin de passer par ssh. Via cette commande :
Cependant, le service SSH dans votre container va nous permettre d'apprendre à configurer votre PC pour accéder aux services que vous allez installer durant le TP.

### Accéder via SSH à votre instance CentOS

En fonction de votre installation, l'accès aux conteneurs est différent. Via les installateurs Windows et Mac de Docker CE, il faut créer des passerelles entre les ports du conteneurs et ceux de votre système. Sous Linux, on peut accéder aux conteneurs directement via des adresses réseaux locales.

#### Mot de passe

Le mot de passe est "centos" pour l'utilisateur centos et root.
Pour passer en mode root sous CentOS, utiliser la commande :
Vous pouvez aussi utiliser la commande sudo.

#### Sur Windows ou Mac

Vous devez installer Kitematic via le menu de Docker CE et lire sa documentation.
Quand le conteneur fonctionne, vous allez pourvoir via Kitematic (onglet settings) préciser que le port 22 du conteneur sera accessible via le port 23 de votre PC (le port 22 semble ne pas fonctionner pour tout le monde).
Quand cela sera fait, vous pourrez ensuite utiliser Putty ou autre pour accéder à votre conteneur SSH (via le port 23) comme s'il s'agissait d'un serveur distant.

#### Sur Linux

Lorsqu'on démarre un conteneur sous Linux, Docker alloue une IP dynamiquement. Vous pouvez connaitre l'IP de votre conteneur avec cette commande :
En général, c'est l'adresse "172.17.0.2" qui est utilisé quand il n'y a pas d'autres conteneurs en activité.
Ensuite, vous pouvez utiliser la commande ssh :
Les options servent à éviter les avertissements qui apparaissent à chaque reconstruction du conteneur.

### Autres commandes utiles avec Docker

* docker image prune -a peut effacer des images utilisées par les conteneurs lancés.

### Docker-compose

La commande docker-compose est un utilitaire généralement fourni avec Docker, permettant d'orchestrer plusieurs images et conteneurs avec la même commande. Pour ce faire, les paramétrages de l’ensemble des conteneurs doit être définit dans le fichier docker-compose.yml à la racine du projet.
Exemple de docker-compose.yml contenant un seul conteneur CentOS :
Ensuite pour relancer le conteneur :
Pour utiliser le conteneur, on peut rentrer dedans :
Ou exécuter une seule commande shell dedans avant de revenir à la machine hôte :

#### Logs

Pour voir les logs de tous les conteneurs en live :
Pour supprimer ces logs :
Puis redémarrer les conteneurs pour qu'ils recréent des logs.

### Problèmes connus
#### Si un conteneur ne se lance pas

Investiguer avec :

#### Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Relancer docker en administrateur.

## Installation native de Linux avec Ubuntu (si vous n'utilisez pas Docker)

Les TP peuvent se dérouler sous Ubuntu.
La communauté française d’Ubuntu est très développée et il ne faut pas hésiter à poser des questions via les forums en cas de difficultés.
Si c’est la première fois que vous touchez à Linux. Il faut prendre son temps et essayer de lire en détail le guide d'installation pour comprendre au maximum ce que vous êtes en train de faire.

### Obtenir un CD-ROM d'installation d'Ubuntu

Le guide d'installation du site ubuntu-fr.org étant une référence, ce TP se limitera à vous indiquer les pages du guide à lire et à suivre. Graver un CD-ROM d'installation d'Ubuntu :
* Graver un CD-ROM d'installation d'Ubuntu :

### Amorçage de l'ordinateur sur le CD-ROM d'installation d'Ubuntu

Amorcer le CD sur l'ordinateur à installer

### Installer Ubuntu avec le CD-ROM d'installation

Installer Ubuntu

### Après l'installation

Configurer votre firewall ainsi que votre connexion Internet