# **Serveur WEB (LAMP)**
## Objectif et environnement
### Objectif
L’installation et configuration d’un serveur LAMP.
### Environnement
Matériels :
- Dell PowerEdge r240 avec Proxmox 7.1-7
Adressage des VMS :
- Réseaux : 172.16.0.0/16
- Serveur CT-DEB-WEB : 172.28.1.208/16
### Documentation
#### Un serveur LAMP c’est quoi ?
C'est une pile logicielle comprenant le système d'exploitation, un serveur HTTP, un système de gestion de bases de données et un langage de programmation interprété, et qui permet de mettre en place un serveur web.
#### Fonctionnement de l’arborescence d’apache
Il y a deux arborescences à prendre en compte :
```{hint}
Pour le TP j’ai rajouté un second dossier avec les fichiers
nécessaire pour un site internet.
```
#### Eléments a prendre en compte dans /etc/apache2
Il y a dans apache une notion de fichier « **disponible** » et
« **actif** », les fichiers conf dit *disponible* doivent être activé
pour être consultable sur le navigateur internet (sans avoir a tapé
l’URL).
Par exemple dans le cas du fichier 000-default.conf qui est disponible
et activé, tout changement édité sur le fichier dans un des deux
dossiers sera effectué sur son homologue.
## Processus
### Installation d’Apache 2
J’installe apache avec un module qui permet de gérer PHP.
```bash
apt install apache2 libapache2-mod-php
```
Je vérifier le bon fonctionnement du serveur web qui normalement renvoie
la page d’accueil de apache2 (version Debian).
Je configure le service apache2 pour qu’il démarre automatiquement au
démarrage du centenaire.
```bash
systemctl enable apache2
```
J’active des modules apaches :
```bash
a2enmod rewrite
a2enmod deflate
a2enmod headers
```
Puis je recharge la configuration avec la commande suivante :
```bash
systemctl reload apache2
```
Cette commande permet de recharger la configuration d’apache sans pour
autant avoir besoin de relancer entièrement le service.
Pour voir la liste des modules activé je vais dans /etc/apache2/modes
enabled
Comme on peut le voir avant et après l’activation de certains modules,
le contenu du dossier a changé.
### Installation de Php
J’installe les packages de Php ainsi que les modules php les plus
courants :
```bash
apt install php php-cli
apt install php-{curl,gd,intl,memcache,xml,zip,mbstring,json}
```
Pour interagir avec SQL :
```bash
apt install php-mysql
```
Pour tester le bon fonctionnement de Php je crée un fichier test.php
```php
echo "\" \> /var/www/html/test.php
```
Dans la barre de recherche d’un navigateur je tape l’adresse de mon
serveur web suivant de test.php, soit :
http://172.28.1.206/test.php
Il s’agit de la page récapitulant la configuration de php (version
7.4.30).
Je peux éditer les options de PHP via le fichier
***/etc/php/7.4/apache2/php.ini*** ou créer un fichier personnalisé dans
***/etc/php/7.4/apache2/conf.d***.
Mais je n’ai pas l’utilité de changer les options, je laisse donc php en
configuration par défaut.
### Installation de MariaDB (optionnel)
Je choisis d’installer et utiliser MariaDB pour la base de données du
serveur LAMP.
MariaDB étant le fork1 de mySQL, le fonctionnement de MariaDB
fonctionnement est similaire a mySQL.
> 1 Un fork (terme anglais signifiant « fourche », «
> bifurcation », « embranchement ») désigne dans le jargon informatique,
> un nouveau logiciel créé à partir du code source d'un logiciel
> existant.
J’installe le package :
```console
apt install mariadb-server
```
Je démarre l’installation :
```bash
mysql_secure_installation
```
>Change the root password? [Y/n] Y
>New password: __________
>Re-enter new password: __________
>Password updated successfully!
>Remove anonymous users? [Y/n] Y
>Disallow root login remotely? [Y/n] Y
>Remove test database and access to it? [Y/n] Y
>Reload privilege tables now? [Y/n] Y
Pour entrer dans la base de données :
Création d’un utilisateur admin.
J’active mariaDB au démarrage :
```bash
systemctl enable mariadb
```
### Rendre disponible une page web
Je dois créer un fichier conf contenant le virtualhosts du site
chuck-norris à mettre en place.
Exemple avec le fichier 000-default.conf :
```bash
nano /etc/apache2/sites-available/chuck-norris.conf
```
Fichier chuck-norris.conf créer :
En suite avec la commande suivante j’active le site :
```bash
a2ensite chuck-norris
a2dissite pour le désactivé
```
Puis je recharge apache 2 :
```bash
systemctl reload apache2
```
### Vérification de l’activation du site
```{note}
Apache par défaut cherche automatiquement un fichier index.html à afficher.
```
Ceci est propre à la configuration du réseau de production sur lequel je
suis, cependant il faut bien renseigner le DNS pour rendre accessible le
site sans avoir a tapé l’adresse IP.
Le CNAME est ***www*** car il est renseigné ainsi dans le virtualhost du
fichier chuck-norris.conf :
```{note}
- ServerName t2sr.io
- ServerAlias www.t2sr.io
```
Je n’aborderai pas dans cette documentation la possibilité du faire du
multisites sur ce service web.
Je renseigne l’adresse du site et vérifie sa disponibilité.
La page est bien chargée et affichée, il ne s’agit que d’une page html
basique afin de vérifier le bon fonctionnement du service web délivré
par serveur LAMP sous conteneur.
### Intégrer le serveur WEB dans Active Directory
NB : le procédé d’intégration est expliqué dans le chapitre [Active Directory](active_directory.md).
## Conclusion
Le serveur LAMP est installé et configuré. Actuellement le serveur web
n’utilise pas de base de données, mail elle est installé en mesure
d’être configuré pour une utilisation ultérieure.
```{eval-rst}
.. raw:: html
:file: flyout.html
```