Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
elearning:workbooks:debian:6:senior:l132 [2020/01/30 03:29] – modification externe 127.0.0.1 | elearning:workbooks:debian:6:senior:l132 [2022/05/26 14:57] (Version actuelle) – created admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ~~PDF: | + | ======Puppet - L' |
- | ======APF102 - Gestion Avancée du Serveur Web Apache 2.4====== | + | ===Matériel=== |
- | =====Contenu | + | * Un poste 64 bits (MacOS, Linux, Windows(tm) ou Solaris(tm)), |
+ | * Dans le cas de Windows(tm), | ||
+ | * Le mot de passe du compte administrateur du système, | ||
+ | * Clavier AZERTY FR ou QWERTY US, | ||
+ | * 16 Go de RAM minimum, | ||
+ | * Processeur 8 cœurs minimum, | ||
+ | * 16 Go d' | ||
- | Dans ce cours, vous allez apprendre par la pratique : | + | ===Logiciels=== |
- | * LAB #1 - Gestion des pages dynamiques avec mod_php | + | * Oracle VirtualBox v 6.0 ou plus (MacOS, Linux, Windows(tm) ou Solaris(tm)), |
- | * LAB #2 - Gestion de l' | + | * Si Windows(tm) |
- | * LAB #3 - Gestion de l' | + | * Navigateur |
- | * LAB #4 - Gestion de l' | + | |
- | * LAB #5 - Gestion des pages web sécurisées en https avec mod_ssl | + | |
- | * LAB #6 - Gestion d'un Serveur Mandataire avec mod_proxy | + | |
- | * LAB #7 - Gestion du Content Caching avec mod_cache et mod_cache_disk | + | |
- | * LAB #8 - Gestion d'un Reverse Proxy avec mod_proxy | + | |
- | * LAB #9 - Gestion du Web-based Distributed Authoring and Versioning avec mod_dav | + | |
- | * LAB #10 - Gestion de la réécriture d'URL avec mod_rewrite | + | |
- | * LAB #11 - Personnalisation des en-têtes de requêtes et de réponses HTTP avec mod_header | + | |
- | * LAB #12 - L' | + | |
- | * LAB #13 - Améliorer l' | + | |
- | =====Préparation===== | + | ===Machines Virtuelles=== |
- | Désactivez le mode **enforcing** de SELINUX afin de pouvoir librement travailler avec Apache | + | A télécharger |
- | < | + | * **[[https:// |
- | [root@centos7 ~]# setenforce permissive | + | * **[[https://drive.google.com/file/ |
- | [root@centos7 ~]# getenforce | + | * **[[https://drive.google.com/file/ |
- | Permissive | + | |
- | [root@centos7 ~]# vi /etc/sysconfig/selinux | + | |
- | [root@centos7 ~]# cat /etc/sysconfig/selinux | + | |
- | # This file controls the state of SELinux on the system. | + | ====Réinstaller l' |
- | # SELINUX= can take one of these three values: | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | SELINUX=permissive | + | |
- | # SELINUXTYPE= can take one of three two values: | + | |
- | # | + | |
- | # | + | |
- | # mls - Multi Level Security protection. | + | |
- | SELINUXTYPE=targeted | + | |
- | </ | + | |
- | Afin d' | + | ===Pour |
- | < | + | Commencez par créer votre compte sur GitHub **[[https:// |
- | [root@centos7 ~]# systemctl stop firewalld | + | |
- | [root@centos7 ~]# systemctl disable firewalld | + | |
- | [root@centos7 ~]# systemctl status firewalld | + | |
- | ● firewalld.service - firewalld - dynamic firewall daemon | + | |
- | | + | |
- | | + | |
- | Docs: man: | + | |
- | Aug 21 16:23:02 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon... | + | Clonez ensuite les fichiers pour ce cours : |
- | Aug 21 16:23:07 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. | + | |
- | Aug 21 16:29:49 centos7.fenestros.loc systemd[1]: Stopping firewalld - dynamic firewall daemon... | + | |
- | Aug 21 16:29:49 centos7.fenestros.loc systemd[1]: Stopped firewalld - dynamic firewall daemon. | + | |
- | </ | + | |
- | ===== Installation à partir des dépôts===== | + | Sous Linux : |
- | + | ||
- | Sous **RHEL / CentOS 7**, Apache n'est pas installé par défaut. Utilisez donc yum pour l' | + | |
< | < | ||
- | [root@centos7 ~]# rpm -qa | grep httpd | + | $ git clone https:// |
- | [root@centos7 ~]# | + | Clonage dans ' |
- | [root@centos7 ~]# yum install httpd | + | remote: Counting objects: 854, done. |
+ | remote: Total 854 (delta 0), reused 0 (delta 0), pack-reused 854 | ||
+ | Réception d' | ||
+ | Résolution des deltas: 100% (443/443), fait. | ||
</ | </ | ||
- | La version d' | + | Sous Windows |
< | < | ||
- | [root@centos7 ~]# rpm -qa | grep httpd | + | C: |
- | httpd-2.4.6-45.el7.centos.4.x86_64 | + | Cloning into ' |
- | httpd-tools-2.4.6-45.el7.centos.4.x86_64 | + | remote: Counting objects: 854, done. |
+ | remote: Total 854 (delta 0), reused 0 (delta 0), pack-reused 854R | ||
+ | Receiving objects: 100% (854/854), 98.47 KiB | 202.00 KiB/s, done. | ||
+ | Resolving deltas: 100% (443/443), done. | ||
</ | </ | ||
- | Configurez le service pour démarrer automatiquement : | + | Naviguez ensuite à l'URL **[[https://www.virtualbox.org/wiki/Downloads]]** et suivez les instructions pour installer VirtualBox |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl status httpd | + | |
- | ● httpd.service - The Apache HTTP Server | + | |
- | | + | |
- | | + | |
- | Docs: man: | + | |
- | | + | |
- | [root@centos7 ~]# systemctl enable httpd | + | |
- | Created symlink from / | + | |
- | </ | + | |
- | + | ||
- | Lancez votre service apache : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl start httpd | + | |
- | [root@centos7 ~]# systemctl status httpd | + | |
- | ● httpd.service - The Apache HTTP Server | + | |
- | | + | |
- | | + | |
- | Docs: man: | + | |
- | | + | |
- | Main PID: 1293 (httpd) | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | Aug 22 11:19:18 centos7.fenestros.loc systemd[1]: Starting The Apache HTTP Server... | + | |
- | Aug 22 11:19:18 centos7.fenestros.loc systemd[1]: Started The Apache HTTP Server. | + | |
- | </ | + | |
- | + | ||
- | =====Administration Avancée===== | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** - La suite de ce cours est basée | + | |
- | </ | + | |
- | + | ||
- | ====LAB #1 - Gestion des pages dynamiques avec mod_php==== | + | |
- | + | ||
- | ===Introduction=== | + | |
- | + | ||
- | PHP existe en plusieurs versions dont les deux versions courrament utilisées sont : | + | |
- | + | ||
- | * La version 5.6 | + | |
- | * La version 7.x | + | |
- | ===Mise en place=== | + | Naviguez ensuite à l'URL **[[https:// |
- | Dans ce LAB, vous allez apprendre comment faire co-habiter les deux versions. | + | Installer la Machine Virtuelle Puppet : |
- | Commencez par installer le dépôt EPEL : | + | Sous Linux : |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ cd puppet-beginners-guide-3 |
+ | vous@votrepc:~/puppet-beginners-guide-3$ scripts/ | ||
</ | </ | ||
- | Continuez en installant le dépôt REMI qui contient les différentes versions de PHP dont nous aurons besoin | + | Sous Windows |
- | < | + | Ajoutez le chemin **C:\Program Files\Git\bin** à votre PATH **et** au PATH système. |
- | [root@centos7 ~]# yum install http://rpms.remirepo.net/ | + | |
- | </ | + | |
- | Installez maintenant les versions 5.6 et 7.2 de PHP : | + | Par exemple, sous Windows(tm) 10 : |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# yum install yum-utils php56 php72 php56-php-fpm php72-php-fpm -y | + | |
- | </ | + | |
- | + | ||
- | Par défaut, les deux serveurs FPM écoutent sur le port **9000**. Modifiez le port pour chaque version de PHP : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# sed -i ' | + | |
- | [root@centos7 ~]# sed -i ' | + | |
- | </ | + | |
- | + | ||
- | Démarrez les deux serveurs FPM : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl start php56-php-fpm | + | |
- | [root@centos7 ~]# systemctl status php56-php-fpm | + | |
- | ● php56-php-fpm.service - The PHP FastCGI Process Manager | + | |
- | | + | |
- | | + | |
- | Main PID: 25889 (php-fpm) | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | Sep 02 16:12:39 centos7.fenestros.loc systemd[1]: Starting The PHP FastCGI Process Manager... | + | |
- | Sep 02 16:12:39 centos7.fenestros.loc systemd[1]: Started The PHP FastCGI Process Manager. | + | |
- | [root@centos7 ~]# | + | |
- | [root@centos7 ~]# systemctl start php72-php-fpm | + | |
- | [root@centos7 ~]# systemctl status php72-php-fpm | + | |
- | ● php72-php-fpm.service - The PHP FastCGI Process Manager | + | |
- | | + | |
- | | + | |
- | Main PID: 26083 (php-fpm) | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | Sep 02 16:13:03 centos7.fenestros.loc systemd[1]: Starting The PHP FastCGI Process Manager... | + | |
- | Sep 02 16:13:03 centos7.fenestros.loc systemd[1]: Started The PHP FastCGI Process Manager. | + | |
- | </ | + | |
- | + | ||
- | Créez deux scripts CGI pour appeler **php56-cgi** et **php72-cgi** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# cat > / | + | |
- | > # | + | |
- | > exec / | + | |
- | > EOF | + | |
- | [root@centos7 ~]# cat > / | + | |
- | > # | + | |
- | > exec / | + | |
- | > EOF | + | |
- | </ | + | |
- | + | ||
- | Rendez les deux scripts CGI exécutables : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# chmod 755 / | + | |
- | [root@centos7 ~]# chmod 755 / | + | |
- | </ | + | |
- | + | ||
- | Créez maintenant la configuration php : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# vi / | + | |
- | [root@centos7 ~]# cat / | + | |
- | ScriptAlias /cgi-bin/ "/ | + | |
- | AddHandler php56-fcgi .php | + | |
- | Action php56-fcgi / | + | |
- | Action php72-fcgi / | + | |
- | + | ||
- | < | + | |
- | DirectoryIndex index.php | + | |
- | AllowOverride all | + | |
- | Require all granted | + | |
- | </ | + | |
- | < | + | |
- | DirectoryIndex index.php | + | |
- | AllowOverride all | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** : Notez que la configuration par défaut exécute le handler **php56-fcgi**. | + | |
- | </ | + | |
- | + | ||
- | Créez les pages de test PHP : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# mkdir -p / | + | |
- | [root@centos7 ~]# mkdir -p / | + | |
- | [root@centos7 ~]# echo "<? | + | |
- | [root@centos7 ~]# echo "<? | + | |
- | </ | + | |
- | + | ||
- | Indiquez que le handler **php72-fcgi** doit être utilisé dans le répertoire **php72** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# echo " | + | |
- | </ | + | |
- | + | ||
- | Re-démarrez le service httpd : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl restart httpd | + | |
- | </ | + | |
- | + | ||
- | Testez maintenant les versions de PHP : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# lynx http:// | + | |
- | | + | |
- | PHP logo | + | |
- | + | ||
- | PHP Version 5.6.37 | + | |
- | + | ||
- | | + | |
- | Build Date Jul 19 2018 19:35:58 | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | Scan this dir for additional .ini files / | + | |
- | | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | PHP API 20131106 | + | |
- | PHP Extension 20131226 | + | |
- | Zend Extension 220131226 | + | |
- | Zend Extension Build API220131226, | + | |
- | PHP Extension Build API20131226, | + | |
- | Debug Build no | + | |
- | | + | |
- | Zend Signal Handling disabled | + | |
- | Zend Memory Manager enabled | + | |
- | Zend Multibyte Support disabled | + | |
- | IPv6 Support enabled | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | Zend logo This program makes use of the Zend Scripting Language Engine: | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# lynx http:// | + | |
- | | + | |
- | PHP logo | + | |
- | + | ||
- | PHP Version 7.2.9 | + | |
- | + | ||
- | | + | |
- | Build Date Aug 15 2018 08:05:24 | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | Scan this dir for additional .ini files / | + | |
- | | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | PHP API 20170718 | + | |
- | PHP Extension 20170718 | + | |
- | Zend Extension 320170718 | + | |
- | Zend Extension Build API320170718, | + | |
- | PHP Extension Build API20170718, | + | |
- | Debug Build no | + | |
- | | + | |
- | Zend Signal Handling enabled | + | |
- | Zend Memory Manager enabled | + | |
- | Zend Multibyte Support disabled | + | |
- | IPv6 Support enabled | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | Zend logo This program makes use of the Zend Scripting Language Engine: | + | |
- | Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies | + | |
- | | + | |
- | + | ||
- | Configuration | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | ====LAB #2 - Gestion de l' | + | |
- | + | ||
- | La sécurité sous Apache se gère grâce à deux fichiers : | + | |
- | + | ||
- | * **.htaccess ** | + | |
- | * Ce fichier contient les droits d' | + | |
- | + | ||
- | * **.htpasswd ** | + | |
- | * Ce fichier contient les noms d' | + | |
- | + | ||
- | Pour activer la sécurité sous apache 2.4, les trois modules **mod_auth_basic**, | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# cat / | + | |
- | LoadModule auth_basic_module modules/ | + | |
- | [root@centos7 ~]# cat / | + | |
- | LoadModule authn_file_module modules/ | + | |
- | [root@centos7 ~]# cat / | + | |
- | LoadModule authz_host_module modules/ | + | |
- | </ | + | |
- | + | ||
- | === Configuration de la sécurité avec .htaccess === | + | |
- | + | ||
- | Dans le cas de notre serveur, nous souhaitons mettre en place un répertoire privé appelé // | + | |
- | + | ||
- | Créez le répertoire secret dans le répertoire **/ | + | |
- | + | ||
- | [root@centos7 ~]# mkdir / | + | |
- | + | ||
- | Créez le fichier **/ | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# vi / | + | |
- | [root@centos7 ~]# cat / | + | |
- | AuthUserFile / | + | |
- | AuthName " | + | |
- | AuthType Basic | + | |
- | <Limit GET> | + | |
- | require valid-user | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Sauvegardez votre fichier. | + | |
- | + | ||
- | ===Mise en place d'un fichier de mots de passe=== | + | |
- | + | ||
- | Ensuite créez maintenant le répertoire / | + | |
- | + | ||
- | [root@centos7 ~]# mkdir -p / | + | |
- | + | ||
- | Créez maintenant le fichier **.htpasswd** avec une entrée pour le **webmaster** grâce à la commande **htpasswd ** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# htpasswd -c / | + | |
- | New password: fenestros | + | |
- | Re-type new password: fenestros | + | |
- | Adding password for user webmaster | + | |
- | </ | + | |
- | + | ||
- | Vérifiez le contenu du fichier **/ | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# cat / | + | |
- | webmaster: | + | |
- | </ | + | |
- | + | ||
- | Créez maintenant une page html dans le répertoire secret : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# vi / | + | |
- | [root@centos7 ~]# cat / | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Finalement, pour que la sécurité par **.htaccess** soit prise en compte pour le répertoire secret, il faut rajouter une directive à la section de l' | + | |
- | + | ||
- | <file text Vhosts.conf> | + | |
- | ################# | + | |
- | < | + | |
- | DocumentRoot / | + | |
- | ServerName www.rhelip.com | + | |
- | DirectoryIndex index.html | + | |
- | Customlog / | + | |
- | Errorlog / | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | ################# | + | |
- | NameVirtualHost *:80 | + | |
- | ################## | + | |
- | < | + | |
- | VirtualDocumentRoot / | + | |
- | ServerName i2tch.loc | + | |
- | ServerAlias *.i2tch.loc | + | |
- | ServerAdmin webmaster@localhost | + | |
- | LogLevel info | + | |
- | < | + | |
- | Options FollowSymLinks | + | |
- | AllowOverride All | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | ################## | + | |
- | < | + | |
- | ServerName www.rhelnom.com | + | |
- | DirectoryIndex index.html | + | |
- | DocumentRoot / | + | |
- | Customlog / | + | |
- | Errorlog / | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | < | + | |
- | AllowOverride AuthConfig | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Sauvegardez votre fichier et puis redémarrez votre serveur Apache : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl restart httpd | + | |
- | </ | + | |
- | + | ||
- | Testez ensuite votre section privée : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# curl http:// | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | are authorized to access the document | + | |
- | requested. | + | |
- | credentials (e.g., bad password), or your | + | |
- | browser doesn' | + | |
- | the credentials required.</ | + | |
- | </ | + | |
- | [root@centos7 ~]# | + | |
- | [root@centos7 ~]# curl -u webmaster: | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | ====LAB #3 - Gestion de l' | + | |
- | + | ||
- | Vous devez utiliser **mod_authn_dbd** pour protéger l' | + | |
- | + | ||
- | ===Installation=== | + | |
- | + | ||
- | Installez le serveur MariaDB ainsi que **apr-util-mysql** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# yum install mariadb mariadb-server apr-util-mysql -y | + | |
- | </ | + | |
- | + | ||
- | Vérifiez que le module **mod_authn_dbd** est activé : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# cat / | + | |
- | LoadModule authn_dbd_module modules/ | + | |
- | </ | + | |
- | + | ||
- | Copiez le module **/ | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# updatedb | + | |
- | [root@centos7 ~]# locate apr_dbd_mysql.so | + | |
- | / | + | |
- | [root@centos7 ~]# cp / | + | |
- | </ | + | |
- | + | ||
- | ===Configuration de MariaDB=== | + | |
- | + | ||
- | Il est maintenant nécessaire de préparer une base de données MariaDB pour être compatible avec **mod_authn_dbd**. Démarrez donc le service **mysqld** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl enable mariadb | + | |
- | [root@centos7 ~]# systemctl start mariadb | + | |
- | [root@centos7 ~]# systemctl status mariadb | + | |
- | ● mariadb.service - MariaDB database server | + | |
- | | + | |
- | | + | |
- | Main PID: 1293 (mysqld_safe) | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | Nov 05 08:04:24 centos7.fenestros.loc systemd[1]: Starting MariaDB database server... | + | |
- | Nov 05 08:04:31 centos7.fenestros.loc mariadb-prepare-db-dir[687]: | + | |
- | Nov 05 08:04:36 centos7.fenestros.loc mysqld_safe[1293]: | + | |
- | Nov 05 08:04:37 centos7.fenestros.loc mysqld_safe[1293]: | + | |
- | Nov 05 08:04:45 centos7.fenestros.loc systemd[1]: Started MariaDB database server. | + | |
- | Hint: Some lines were ellipsized, use -l to show in full. | + | |
- | </ | + | |
- | + | ||
- | Définissez le mot de passe fenestros pour root avec la commande suivante : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# mysqladmin -u root password fenestros | + | |
- | </ | + | |
- | + | ||
- | Connectez-vous à MariaDB : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# mysql -u root -p | + | |
- | Enter password: | + | |
- | Welcome to the MariaDB monitor. | + | |
- | Your MariaDB connection id is 4 | + | |
- | Server version: 5.5.56-MariaDB MariaDB Server | + | |
- | + | ||
- | Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. | + | |
- | + | ||
- | Type ' | + | |
- | + | ||
- | MariaDB [(none)]> | + | |
- | </ | + | |
- | + | ||
- | Puis saisissez les requêtes et commandes suivantes | + | |
< | < | ||
- | CREATE DATABASE auth; | + | Panneau de configuration > Système et sécurité > Système > Modifier les paramètres > Paramètres système avancés > Variables d' |
</ | </ | ||
- | < | + | Exécutez **cmd** et saisissez les commandes suivantes : |
- | USE auth; | + | |
- | </ | + | |
- | <file> | + | <code>cd puppet-beginners-guide-3 |
- | CREATE TABLE users ( | + | Microsoft Windows [version 10.0.16299.431] |
- | | + | (c) 2017 Microsoft Corporation. Tous droits réservés. |
- | user_passwd VARCHAR(50) NOT NULL, | + | |
- | PRIMARY KEY (user_name) | + | |
- | ); | + | |
- | </ | + | |
- | < | + | C: |
- | GRANT SELECT | + | |
- | ON auth.users | + | |
- | TO apache@localhost | + | |
- | IDENTIFIED BY ' | + | |
- | </file> | + | |
- | Par exemple | + | C:\Users\trainee\puppet-beginners-guide-3> |
- | <code> | + | C: |
- | MariaDB [(none)]> | + | |
- | Query OK, 1 row affected (0.00 sec) | + | |
- | MariaDB [(none)]> | + | C:\Users\trainee\puppet-beginners-guide-3\scripts> |
- | Database changed | + | |
- | MariaDB [auth]> CREATE TABLE users ( | + | |
- | -> user_name VARCHAR(50) NOT NULL, | + | |
- | -> user_passwd VARCHAR(50) NOT NULL, | + | |
- | -> PRIMARY KEY (user_name) | + | |
- | -> ); | + | |
- | Query OK, 0 rows affected (0.42 sec) | + | |
- | + | ||
- | MariaDB [auth]> GRANT SELECT | + | |
- | -> ON auth.users | + | |
- | -> TO apache@localhost | + | |
- | -> IDENTIFIED BY ' | + | |
- | Query OK, 0 rows affected (0.32 sec) | + | |
- | + | ||
- | MariaDB [auth]> exit | + | |
- | Bye | + | |
- | [root@centos7 ~]# mysql -u root -p -e " | + | |
- | Enter password: fenestros | + | |
- | [root@centos7 ~]# mysql -u root -p -e " | + | |
- | Enter password: fenestros | + | |
- | +-----------+---------------------------------------+ | + | |
- | | user_name | user_passwd | + | |
- | +-----------+---------------------------------------+ | + | |
- | | apache | + | |
- | +-----------+---------------------------------------+ | + | |
- | [root@centos7 ~]# | + | |
- | </ | + | |
- | + | ||
- | ===Configuration d' | + | |
- | + | ||
- | Créez maintenant le répertoire **/ | + | |
- | + | ||
- | [root@centos7 ~]# mkdir / | + | |
- | + | ||
- | Créez maintenant une page **index.html** dans le répertoire **secret2** : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# vi / | + | |
- | [root@centos7 ~]# cat / | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </html> | + | |
</ | </ | ||
- | Ouvrez ensuite le fichier de configuration | + | **Git bash** sera lancé pour exécuter |
- | < | + | A l' |
- | [root@centos7 vhosts.d]# vi / | + | |
- | [root@centos7 vhosts.d]# cat / | + | |
- | ################# | + | |
- | < | + | |
- | DocumentRoot / | + | |
- | ServerName www.rhelip.com | + | |
- | DirectoryIndex index.html | + | |
- | Customlog / | + | |
- | Errorlog / | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | ################# | + | |
- | NameVirtualHost *:80 | + | |
- | ################## | + | |
- | < | + | |
- | VirtualDocumentRoot / | + | |
- | ServerName i2tch.loc | + | |
- | ServerAlias *.i2tch.loc | + | |
- | ServerAdmin webmaster@localhost | + | |
- | LogLevel info | + | |
- | < | + | |
- | Options FollowSymLinks | + | |
- | AllowOverride All | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | ################## | + | |
- | < | + | |
- | ServerName www.rhelnom.com | + | |
- | DirectoryIndex index.html | + | |
- | DocumentRoot / | + | |
- | Customlog / | + | |
- | Errorlog / | + | |
- | DBDriver mysql | + | |
- | DBDParams " | + | |
- | DBDMin | + | |
- | DBDKeep 8 | + | |
- | DBDMax | + | |
- | DBDExptime 300 | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | < | + | |
- | AllowOverride AuthConfig | + | |
- | </ | + | |
- | < | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Afin que les modifications soient prises en charge par apache, redémarrez le service | + | |
< | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | Testez ensuite votre section privée : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# curl -u webmaster: | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | [root@centos7 ~]# curl -u webmaster: | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | are authorized to access the document | ||
- | requested. | ||
- | credentials (e.g., bad password), or your | ||
- | browser doesn' | ||
- | the credentials required.</ | ||
- | </ | ||
- | [root@centos7 ~]# curl -u apache: | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | ====LAB #4 - Gestion de l' | ||
- | |||
- | Vous devez maintenant utiliser **mod_authnz_ldap** pour protéger l' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# yum install mod_ldap | ||
- | </ | ||
- | |||
- | Pour installer le serveur OpenLDAP sous GNU/Linux ou Unix vous pouvez soit utiliser la version binaire fournie par les dépôts de paquets de votre distribution GNU/Linux ou Unix soit télécharger la dernière version à compiler du site d' | ||
- | |||
- | Dans notre cas, nous allons installer OpenLDAP à partir des dépôts. Commencez par installer OpenLDAP : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# yum install openldap-servers openldap-clients openldap | ||
- | </ | ||
- | |||
- | Sous CentOS le service OpenLDAP s' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl status slapd.service | ||
- | ● slapd.service - OpenLDAP Server Daemon | ||
- | | ||
- | | ||
- | Docs: man:slapd | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | [root@centos7 ~]# systemctl enable slapd.service | ||
- | Created symlink from / | ||
- | [root@centos7 ~]# systemctl start slapd.service | ||
- | [root@centos7 ~]# systemctl status slapd.service | ||
- | ● slapd.service - OpenLDAP Server Daemon | ||
- | | ||
- | | ||
- | Docs: man:slapd | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | Process: 28650 ExecStart=/ | ||
- | Process: 28632 ExecStartPre=/ | ||
- | Main PID: 28653 (slapd) | ||
- | | ||
- | | ||
- | |||
- | Nov 05 12:39:39 centos7.fenestros.loc systemd[1]: Starting OpenLDAP Server Daemon... | ||
- | Nov 05 12:39:39 centos7.fenestros.loc runuser[28637]: | ||
- | Nov 05 12:39:39 centos7.fenestros.loc slapcat[28643]: | ||
- | Nov 05 12:39:40 centos7.fenestros.loc slapd[28650]: | ||
- | mockbuild@c1bm.rdu2.centos.org:/ | ||
- | Nov 05 12:39:40 centos7.fenestros.loc slapd[28653]: | ||
- | Expect poor performance for suffix " | ||
- | Nov 05 12:39:40 centos7.fenestros.loc slapd[28653]: | ||
- | Nov 05 12:39:40 centos7.fenestros.loc systemd[1]: Started OpenLDAP Server Daemon. | ||
- | Hint: Some lines were ellipsized, use -l to show in full. | ||
- | </ | ||
- | |||
- | ===Configuration d' | ||
- | |||
- | Créez le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# mkdir / | ||
- | </ | ||
- | |||
- | Nettoyez les anciens fichiers de configuration et fichiers de données : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# rm -Rf / | ||
- | [root@centos7 ~]# rm -f / | ||
- | [root@centos7 ~]# rm -f / | ||
- | </ | ||
- | |||
- | Créez le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | include / | ||
- | |||
- | allow bind_v2 | ||
- | |||
- | pidfile / | ||
- | argsfile / | ||
- | |||
- | TLSCACertificatePath / | ||
- | TLSCertificateFile " | ||
- | TLSCertificateKeyFile / | ||
- | |||
- | database config | ||
- | access to * | ||
- | by dn.exact=" | ||
- | by * none | ||
- | |||
- | database monitor | ||
- | access to * | ||
- | by dn.exact=" | ||
- | by dn.exact=" | ||
- | by * none | ||
- | |||
- | ############################################### | ||
- | |||
- | database bdb | ||
- | suffix " | ||
- | checkpoint | ||
- | rootdn " | ||
- | rootpw | ||
- | directory / | ||
- | lastmod | ||
- | index | ||
- | </ | ||
- | |||
- | Créez un mot de passe crypté pour l' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# slappasswd -s fenestros | ||
- | {SSHA}RRo5UcZ9zzb2nYZuE5ZH+74u/ | ||
- | </ | ||
- | |||
- | Editez ensuite la section **database** du fichier **/ | ||
- | |||
- | < | ||
... | ... | ||
- | database | + | default: The `minitar` executable is no longer bundled with `minitar`. If you are |
- | suffix | + | |
- | checkpoint | + | |
- | rootdn | + | default: Successfully installed puppet_forge-2.2.9 |
- | rootpw | + | |
- | directory | + | default: 10 gems installed |
- | lastmod | + | |
- | index | + | |
- | </ | + | |
- | + | ||
- | Copiez le fichier / | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# cp / | + | |
</ | </ | ||
- | Initialisez | + | Connectez-vous à la machine virtuelle en utilisant la commande **vagrant ssh** : |
- | < | + | Sous Linux : |
- | [root@centos7 ~]# echo “” | slapadd -f / | + | |
- | 59ff01da The first database does not allow slapadd; using the first available one (2) | + | |
- | 59ff01da str2entry: entry -1 has no dn | + | |
- | slapadd: could not parse entry (line=1) | + | |
- | </ | + | |
- | + | ||
- | Initialisez ensuite l' | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~/puppet-beginners-guide-3$ vagrant ssh |
- | config file testing succeeded | + | Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-173-generic x86_64) |
- | </ | + | |
- | Vérifiez que l' | + | * Documentation: |
+ | * Management: | ||
+ | * Support: | ||
- | < | ||
- | [root@centos7 ~]# ls -l / | ||
- | total 8 | ||
- | drwxr-x--- 3 root root 4096 Nov 5 13:20 cn=config | ||
- | -rw------- 1 root root 1258 Nov 5 13:20 cn=config.ldif | ||
- | </ | ||
- | Modifiez le propriétaire, | + | 7 packages can be updated. |
+ | 7 updates are security updates. | ||
- | < | + | New release ' |
- | [root@centos7 ~]# chown -R ldap:ldap / | + | Run 'do-release-upgrade' |
- | [root@centos7 ~]# chmod -R u+rwX / | + | |
- | </ | + | |
- | Modifiez le propriétaire et le groupe répertoire **/ | ||
- | < | + | vagrant@ubuntu-xenial:~$ |
- | [root@centos7 ~]# chown -R ldap:ldap / | + | |
</ | </ | ||
- | Démarrez ensuite le service slapd : | + | Vérifiez que Puppet a bien été installé |
< | < | ||
- | [root@centos7 | + | vagrant@ubuntu-xenial: |
+ | 6.17.0 | ||
+ | vagrant@ubuntu-xenial: | ||
+ | logout | ||
+ | Connection to 127.0.0.1 closed. | ||
+ | vous@votrepc: | ||
</ | </ | ||
- | Créez le fichier **ittraining.ldif** | + | Sous Windows |
< | < | ||
- | [root@centos7 ~]# vi ittraining.ldif | + | C: |
- | [root@centos7 ~]# cat ittraining.ldif | + | Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-127-generic x86_64) |
- | dn: o=ittraining | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | o: ittraining | + | |
- | description: | + | |
- | dn: cn=Admin, | + | * Documentation: https:// |
- | objectClass: organizationalRole | + | * Management: https:// |
- | cn: Admin | + | * Support: |
- | description: Administrateur LDAP | + | |
- | dn: ou=GroupA, | + | Get cloud support with Ubuntu Advantage Cloud Guest: |
- | ou: GroupA | + | http:// |
- | objectClass: | + | |
- | objectClass: | + | |
- | description: | + | |
- | dn: ou=GroupB, | + | 0 packages can be updated. |
- | ou: GroupB | + | 0 updates are security updates. |
- | objectClass: | + | |
- | objectClass: | + | |
- | description: | + | |
- | dn: ou=group, | ||
- | ou: group | ||
- | objectclass: | ||
- | objectclass: | ||
- | associatedDomain: | ||
- | dn: cn=users, | + | vagrant@ubuntu-xenial:~$ |
- | cn: users | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | gidNumber: 100 | + | |
- | memberUid: jean | + | |
- | memberUid: jacques | + | |
- | + | ||
- | dn: cn=Jean Legrand, | + | |
- | ou: GroupA | + | |
- | o: ittraining | + | |
- | cn: Jean Legrand | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | mail: jean.legrand@ittraining.loc | + | |
- | givenname: Jean | + | |
- | sn: Legrand | + | |
- | uid: jean | + | |
- | uidNumber: 1001 | + | |
- | gidNumber: 100 | + | |
- | gecos: Jean Legrand | + | |
- | loginShell: /bin/bash | + | |
- | homeDirectory: | + | |
- | shadowLastChange: | + | |
- | shadowMin: 0 | + | |
- | shadowMax: 999999 | + | |
- | shadowWarning: | + | |
- | userPassword: | + | |
- | homePostalAddress: | + | |
- | postalAddress: | + | |
- | l: Paris | + | |
- | st: 75 | + | |
- | postalcode: 75000 | + | |
- | telephoneNumber: | + | |
- | homePhone: 01.50.60.70.80 | + | |
- | facsimileTelephoneNumber: | + | |
- | title: Ingénieur | + | |
- | + | ||
- | dn: cn=Jacques Lebeau, | + | |
- | ou: GroupA | + | |
- | o: ittraining | + | |
- | cn: Jacques Lebeau | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | objectClass: | + | |
- | mail: jacques.lebeau@ittraining.loc | + | |
- | givenname: Jacques | + | |
- | sn: Lebeau | + | |
- | uid: jacques | + | |
- | uidNumber: 1002 | + | |
- | gidNumber: 100 | + | |
- | gecos: Jacques Lebeau | + | |
- | loginShell: /bin/bash | + | |
- | homeDirectory: | + | |
- | shadowLastChange: | + | |
- | shadowMin: 0 | + | |
- | shadowMax: 999999 | + | |
- | shadowWarning: | + | |
- | userPassword: | + | |
- | initials: JL | + | |
- | homePostalAddress: | + | |
- | postalAddress: | + | |
- | l: Paris | + | |
- | st: 75 | + | |
- | postalcode: 75000 | + | |
- | pager: 01.04.04.04.04 | + | |
- | homePhone: 01.05.05.05.05 | + | |
- | telephoneNumber: | + | |
- | mobile: 06.01.02.03.04 | + | |
- | title: Technicienne | + | |
- | facsimileTelephoneNumber: | + | |
- | manager: cn=Jean Legrand, | + | |
</ | </ | ||
- | Injectez le fichier ittraining.ldif dans OpenLDAP | + | Vérifiez que Puppet a bien été installé |
< | < | ||
- | [root@centos7 | + | vagrant@ubuntu-xenial: |
- | ldap_initialize( ldap://127.0.0.1 | + | 6.17.0 |
- | add objectClass: | + | vagrant@ubuntu-xenial:~$ exit |
- | top | + | logout |
- | organization | + | Connection to 127.0.0.1 |
- | add o: | + | |
- | ittraining | + | |
- | add description: | + | |
- | LDAP Authentification | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | add objectClass: | + | C:\Users\trainee\puppet-beginners-guide-3\scripts> |
- | organizationalRole | + | |
- | add cn: | + | |
- | Admin | + | |
- | add description: | + | |
- | Administrateur LDAP | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add ou: | + | |
- | GroupA | + | |
- | add objectClass: | + | |
- | top | + | |
- | organizationalUnit | + | |
- | add description: | + | |
- | Membres de GroupA | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add ou: | + | |
- | GroupB | + | |
- | add objectClass: | + | |
- | top | + | |
- | organizationalUnit | + | |
- | add description: | + | |
- | Membres de GroupB | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add ou: | + | |
- | group | + | |
- | add objectclass: | + | |
- | organizationalUnit | + | |
- | domainRelatedObject | + | |
- | add associatedDomain: | + | |
- | ittraining | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add cn: | + | |
- | users | + | |
- | add objectClass: | + | |
- | top | + | |
- | posixGroup | + | |
- | add gidNumber: | + | |
- | 100 | + | |
- | add memberUid: | + | |
- | jean | + | |
- | jacques | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add ou: | + | |
- | GroupA | + | |
- | add o: | + | |
- | ittraining | + | |
- | add cn: | + | |
- | Jean Legrand | + | |
- | add objectClass: | + | |
- | person | + | |
- | organizationalPerson | + | |
- | inetOrgPerson | + | |
- | posixAccount | + | |
- | shadowAccount | + | |
- | top | + | |
- | add mail: | + | |
- | jean.legrand@ittraining.loc | + | |
- | add givenname: | + | |
- | Jean | + | |
- | add sn: | + | |
- | Legrand | + | |
- | add uid: | + | |
- | jean | + | |
- | add uidNumber: | + | |
- | 1001 | + | |
- | add gidNumber: | + | |
- | 100 | + | |
- | add gecos: | + | |
- | Jean Legrand | + | |
- | add loginShell: | + | |
- | / | + | |
- | add homeDirectory: | + | |
- | / | + | |
- | add shadowLastChange: | + | |
- | 14368 | + | |
- | add shadowMin: | + | |
- | 0 | + | |
- | add shadowMax: | + | |
- | 999999 | + | |
- | add shadowWarning: | + | |
- | 7 | + | |
- | add userPassword: | + | |
- | secret1 | + | |
- | add homePostalAddress: | + | |
- | 99 avenue de Linux, 75000 Paris | + | |
- | add postalAddress: | + | |
- | 99 avenue de Linux. | + | |
- | add l: | + | |
- | Paris | + | |
- | add st: | + | |
- | 75 | + | |
- | add postalcode: | + | |
- | 75000 | + | |
- | add telephoneNumber: | + | |
- | 01.10.20.30.40 | + | |
- | add homePhone: | + | |
- | 01.50.60.70.80 | + | |
- | add facsimileTelephoneNumber: | + | |
- | 01.99.99.99.99 | + | |
- | add title: | + | |
- | NOT ASCII (10 bytes) | + | |
- | adding new entry " | + | |
- | modify complete | + | |
- | + | ||
- | add ou: | + | |
- | GroupA | + | |
- | add o: | + | |
- | ittraining | + | |
- | add cn: | + | |
- | Jacques Lebeau | + | |
- | add objectClass: | + | |
- | person | + | |
- | organizationalPerson | + | |
- | inetOrgPerson | + | |
- | posixAccount | + | |
- | shadowAccount | + | |
- | top | + | |
- | add mail: | + | |
- | jacques.lebeau@ittraining.loc | + | |
- | add givenname: | + | |
- | Jacques | + | |
- | add sn: | + | |
- | Lebeau | + | |
- | add uid: | + | |
- | jacques | + | |
- | add uidNumber: | + | |
- | 1002 | + | |
- | add gidNumber: | + | |
- | 100 | + | |
- | add gecos: | + | |
- | Jacques Lebeau | + | |
- | add loginShell: | + | |
- | / | + | |
- | add homeDirectory: | + | |
- | / | + | |
- | add shadowLastChange: | + | |
- | 14365 | + | |
- | add shadowMin: | + | |
- | 0 | + | |
- | add shadowMax: | + | |
- | 999999 | + | |
- | add shadowWarning: | + | |
- | 7 | + | |
- | add userPassword: | + | |
- | secret2 | + | |
- | add initials: | + | |
- | JL | + | |
- | add homePostalAddress: | + | |
- | 99 route d' | + | |
- | add postalAddress: | + | |
- | 99 route d' | + | |
- | add l: | + | |
- | Paris | + | |
- | add st: | + | |
- | 75 | + | |
- | add postalcode: | + | |
- | 75000 | + | |
- | add pager: | + | |
- | 01.04.04.04.04 | + | |
- | add homePhone: | + | |
- | 01.05.05.05.05 | + | |
- | add telephoneNumber: | + | |
- | 01.06.06.06.06 | + | |
- | add mobile: | + | |
- | 06.01.02.03.04 | + | |
- | add title: | + | |
- | Technicienne | + | |
- | add facsimileTelephoneNumber: | + | |
- | 01.04.09.09.09 | + | |
- | add manager: | + | |
- | cn=Jean Legrand, | + | |
- | adding new entry " | + | |
- | modify complete | + | |
</ | </ | ||
- | ===Configuration d' | + | Si vous souhaitez remettre votre infrastructure à zéro sous VirtualBox, supprimez simplement la machine virtuelle Puppet : |
- | Arrêtez le serveur Apache | + | Sous Linux : |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ cd puppet-beginners-guide-3 |
+ | vous@votrepc: | ||
</ | </ | ||
- | **Remplacez** la section **< | + | Sous Windows |
- | + | ||
- | < | + | |
- | ... | + | |
- | # < | + | |
- | # | + | |
- | # Possible values for the Options directive are " | + | |
- | # or any combination of: | + | |
- | # | + | |
- | # | + | |
- | # Note that " | + | |
- | # doesn' | + | |
- | # | + | |
- | # The Options directive is both complicated and important. | + | |
- | # http:// | + | |
- | # for more information. | + | |
- | # | + | |
- | # Options Indexes FollowSymLinks | + | |
- | # | + | |
- | # AllowOverride controls what directives may be placed in .htaccess files. | + | |
- | # It can be " | + | |
- | # | + | |
- | # | + | |
- | # AllowOverride None | + | |
- | # | + | |
- | # Controls who can get stuff from this server. | + | |
- | # | + | |
- | # Require all granted | + | |
- | # </ | + | |
- | + | ||
- | < | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | </ | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | Re-démarrez le serveur apache | + | |
< | < | ||
- | [root@centos7 ~]# systemctl restart httpd | + | C: |
+ | C: | ||
</ | </ | ||
- | Connectez-vous à http:// | + | ===Pour |
- | < | + | Téléchargez et importez dans VirtualBox les trois machines virtuelles **PuppetMaster**, **PuppetSlave01** et **PuppetSlave02**. Ces machines ont été configurées de la façon suivante |
- | [root@centos7 ~]# curl http:// | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | are authorized to access the document | + | |
- | requested. | + | |
- | credentials (e.g., bad password), or your | + | |
- | browser doesn' | + | |
- | the credentials required.</ | + | |
- | </ | + | |
- | [root@centos7 ~]# | + | |
- | [root@centos7 ~]# curl -u jean: | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | ===Préparer la Suite de la Formation=== | + | ^ Machine ^ Nom d' |
+ | | PuppetMaster | master.i2tch.loc | 10.0.2.4 | Ubuntu 18.04 | 1024 Mo | | ||
+ | | PuppetSlave01 | slave01.i2tch.loc | 10.0.2.5 | Ubuntu 18.04 | 1024 Mo | | ||
+ | | PuppetSlave02 | slave02.i2tch.loc | 10.0.2.6 | CentOS 7 | 512 Mo | | ||
- | Editez | + | Les noms d' |
- | < | + | ^ Utilisateur ^ Mot de Passe ^ |
- | < | + | | trainee | trainee | |
- | # | + | | root | fenestros | |
- | # Possible values for the Options directive are " | + | |
- | # or any combination of: | + | |
- | # | + | |
- | # | + | |
- | # Note that " | + | |
- | # doesn' | + | |
- | # | + | |
- | # The Options directive is both complicated and important. | + | |
- | # http:// | + | |
- | # for more information. | + | |
- | # | + | |
- | Options Indexes FollowSymLinks | + | |
- | # | + | |
- | # AllowOverride controls what directives may be placed in .htaccess files. | + | |
- | # It can be " | + | |
- | # | + | |
- | # | + | |
- | AllowOverride None | + | |
- | # | + | |
- | # Controls who can get stuff from this server. | + | |
- | # | + | |
- | Require all granted | + | |
- | </ | + | |
- | # | + | Créez |
- | # DirectoryIndex: | + | |
- | # is requested. | + | |
- | # | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | Re-démarrez | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ VBoxManage natnetwork add --netname NatNetwork --network " |
+ | vous@votrepc: | ||
+ | vous@votrepc: | ||
</ | </ | ||
- | ====LAB #5 - Gestion des pages web sécurisées en https avec mod_ssl==== | + | Créez ensuite |
- | + | ||
- | ===Présentation de SSL=== | + | |
- | + | ||
- | SSL ( //Secure Sockets Layers// ) est utilisé pour sécuriser des transactions effectuées sur le Web et a été mis au point par : | + | |
- | + | ||
- | * Netscape | + | |
- | * %%MasterCard%% | + | |
- | * Bank of America | + | |
- | * MCI | + | |
- | * Silicon Graphics | + | |
- | + | ||
- | SSL est indépendant du protocole utilisé et agit en tant que couche supplémentaire entre la couche Application et la couche Transport. Il peut être utilisé avec : | + | |
- | + | ||
- | * HTTP | + | |
- | * FTP | + | |
- | * POP | + | |
- | * IMAP | + | |
- | + | ||
- | ===Fonctionnement de SSL=== | + | |
- | + | ||
- | Le fonctionnement de SSL suit la procédure suivante : | + | |
- | + | ||
- | * Le navigateur demande une page web sécurisée en https, | + | |
- | * Le serveur web émet sa clé publique et son certificat, | + | |
- | * Le navigateur vérifie que le certificat a été émis par une autorité fiable, qu'il est valide et qu'il fait référence au site consulté, | + | |
- | * Le navigateur utilise la clé publique du serveur pour chiffrer une clé symétrique aléatoire, une clé de session, et l' | + | |
- | * Le serveur déchiffre la clé symétrique avec sa clé privée et l' | + | |
- | * Le serveur renvoie le document référencé par l'URL ainsi que les données HTTP chiffrées avec la clé symétrique, | + | |
- | * Le navigateur déchiffre le tout avec la clé symétrique et affiche les informations. | + | |
- | + | ||
- | Quand on parle de **SSL**, on parle de **cryptologie**. | + | |
- | + | ||
- | ===PKI=== | + | |
- | + | ||
- | On appelle **[[wpfr> | + | |
- | + | ||
- | Les cryptosystèmes à clés publiques permettent de s' | + | |
- | + | ||
- | * La clé publique est bien celle de son propriétaire ; | + | |
- | * Le propriétaire de la clé est digne de confiance ; | + | |
- | * La clé est toujours valide. | + | |
- | + | ||
- | Ainsi, il est nécessaire d' | + | |
- | + | ||
- | Le tiers de confiance est une entité appelée communément autorité de certification (ou en anglais Certification authority, abrégé CA) chargée d' | + | |
- | + | ||
- | Pour ce faire, l' | + | |
- | + | ||
- | Le rôle de l' | + | |
- | + | ||
- | * enregistrer des demandes de clés en vérifiant l' | + | |
- | * générer les paires de clés (clé privée / clé publique) ; | + | |
- | * garantir la confidentialité des clés privées correspondant aux clés publiques ; | + | |
- | * certifier l' | + | |
- | * révoquer des clés (en cas de perte par son propriétaire, | + | |
- | + | ||
- | Une infrastructure à clé publique est en règle générale composée de trois entités distinctes : | + | |
- | + | ||
- | * L' | + | |
- | * L' | + | |
- | * L' | + | |
- | + | ||
- | ==Certificats X509== | + | |
- | + | ||
- | Pour palier aux problèmes liés à des clefs publiques piratées, un système de certificats a été mis en place. | + | |
- | + | ||
- | Le certificat permet d’associer la clef publique à une entité ou une personne. Les certificats sont délivrés par des Organismes de Certification. | + | |
- | + | ||
- | Les certificats sont des fichiers divisés en deux parties : | + | |
- | + | ||
- | * La partie contenant les informations | + | |
- | * La partie contenant la signature de l' | + | |
- | + | ||
- | La structure des certificats est normalisée par le standard **[[wpfr> | + | |
- | + | ||
- | Elle contient : | + | |
- | + | ||
- | * Le nom de l' | + | |
- | * Le nom du propriétaire du certificat | + | |
- | * La date de validité du certificat | + | |
- | * L' | + | |
- | * La clé publique du propriétaire | + | |
- | + | ||
- | Le Certificat est signé par l' | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | La vérification se passe ainsi: | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | ===Installation de ssl=== | + | |
- | + | ||
- | Afin de pouvoir configurer le serveur apache en mode ssl, il est necessaire d' | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc: |
+ | vous@votrepc:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 " | ||
+ | vous@votrepc: | ||
</ | </ | ||
- | === Configuration | + | Modifiez la RAM de la machine virtuelle |
- | + | ||
- | Dans le cas où vous souhaitez générer vos propres clés, vous devez d' | + | |
- | + | ||
- | Saisissez donc la commande suivante pour générer votre clé privée | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ VBoxManage modifyvm " |
- | Generating RSA private key, 1024 bit long modulus | + | |
- | .....................................++++++ | + | |
- | ................................++++++ | + | |
- | e is 65537 (0x10001) | + | |
</ | </ | ||
- | Générer maintenant votre CSR : | + | ainsi que la RAM de la machine virtuelle **PuppetSlave02** |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ VBoxManage modifyvm " |
- | 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 ' | + | |
- | ----- | + | |
- | Country Name (2 letter code) [XX]:GB | + | |
- | State or Province Name (full name) []:SURREY | + | |
- | Locality Name (eg, city) [Default City]: | + | |
- | Organization Name (eg, company) [Default Company Ltd]:I2TCH LIMITED | + | |
- | Organizational Unit Name (eg, section) []: | + | |
- | Common Name (eg, your name or your server' | + | |
- | Email Address []: | + | |
- | + | ||
- | Please enter the following ' | + | |
- | to be sent with your certificate request | + | |
- | A challenge password []: | + | |
- | An optional company name []: | + | |
</ | </ | ||
- | et répondez aux questions qui vous sont posées. Notez bien la réponse à la question **Common Name**. Si vous ne donnez pas votre FQDN, certains navigateurs ne gèreront pas votre certificat correctement. Vous pouvez maintenant envoyé votre CSR à la société que vous avez choisie. Quand votre clé **.crt** vous est retournée, copiez-la, ainsi que votre clé privée dans le répertoire **/ | + | Démarrez ensuite les trois machines virtuelles |
- | + | ||
- | Sans passer par un prestataire externe, vous pouvez signer votre CSR avec votre propre clé afin de générer votre certificat | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ VBoxManage startvm PuppetMaster |
- | Signature ok | + | Waiting for VM " |
- | subject=/ | + | VM " |
- | Getting Private key | + | vous@votrepc: |
+ | Waiting for VM " | ||
+ | VM " | ||
+ | vous@votrepc:~$ VBoxManage startvm PuppetSlave02 --type headless | ||
+ | Waiting for VM " | ||
+ | VM " | ||
</ | </ | ||
- | Cette procédure va générer trois fichiers dont votre clé privée et un certificat – une clé ayant une extension | + | Dans un terminal, tapez la commande suivante pour vous connecter à la machine |
- | + | ||
- | Il convient ensuite de copier ces deux fichiers dans l' | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ ssh -l trainee localhost -p 2422 |
- | [root@centos7 ~]# cp / | + | |
</ | </ | ||
- | === Mise en place des paramètres de sécurité SSL === | + | Dans un terminal, tapez la commande suivante pour vous connecter à la machine |
- | + | ||
- | Créez maintenant le répertoire qui va contenir le site sécurisé : | + | |
- | + | ||
- | [root@centos7 ~]# mkdir /www/ssl | + | |
- | + | ||
- | Créez le fichier | + | |
< | < | ||
- | [root@centos7 | + | vous@votrepc:~$ ssh -l trainee localhost -p 2522 |
- | [root@centos7 ~]# cat / | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
</ | </ | ||
- | En consultant le contenu du répertoire **/ | + | Dans un terminal, tapez la commande suivante pour vous connecter à la machine |
< | < | ||
- | [root@centos7 ~]# ls / | + | vous@votrepc:~$ ssh -l trainee |
- | autoindex.conf | + | |
- | </ | + | |
- | + | ||
- | Ouvrez ce fichier et modifiez la ligne suivante | + | |
- | + | ||
- | < | + | |
- | # | + | |
- | </ | + | |
- | + | ||
- | en : | + | |
- | + | ||
- | < | + | |
- | DocumentRoot "/ | + | |
- | </ | + | |
- | + | ||
- | Cette directive indique que la racine du site sécurisé sera **/ | + | |
- | + | ||
- | Définissez ensuite les droits d' | + | |
- | + | ||
- | < | + | |
- | < | + | |
- | SSLOptions +StdEnvVars | + | |
- | </ | + | |
- | # Ajoutez la section suivante | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | # Fin | + | |
- | < | + | |
- | SSLOptions +StdEnvVars | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Dernièrement modifiez les deux lignes suivantes : | + | |
- | + | ||
- | < | + | |
- | SSLCertificateFile / | + | |
- | SSLCertificateKeyFile / | + | |
- | </ | + | |
- | + | ||
- | en : | + | |
- | + | ||
- | < | + | |
- | SSLCertificateFile / | + | |
- | SSLCertificateKeyFile / | + | |
- | </ | + | |
- | + | ||
- | respectivement. | + | |
- | + | ||
- | Sauvegardez votre fichier et redémarrez votre serveur apache : | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# systemctl restart httpd | + | |
</ | </ | ||
- | <WRAP center round todo> | + | Configurez |
- | **A Faire** - Passez en revue les **directives** contenues dans le fichier **ssl.conf** en utilisant | + | |
- | </ | + | |
- | + | ||
- | === Tester Votre Configuration === | + | |
- | + | ||
- | Pour tester votre serveur apache en mode SSL saisissez la commande suivante | + | |
< | < | ||
- | [root@centos7 | + | trainee@master:~$ su - |
- | CONNECTED(00000003) | + | Password: fenestros |
- | depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = centos7.fenestros.loc, | + | root@master:~# dpkg-reconfigure tzdata |
- | verify error:num=18:self signed certificate | + | |
- | verify return:1 | + | |
- | depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = centos7.fenestros.loc, emailAddress = infos@i2tch.co.uk | + | |
- | verify return:1 | + | |
- | --- | + | |
- | Certificate chain | + | |
- | 0 s:/ | + | |
- | i:/ | + | |
- | --- | + | |
- | Server certificate | + | |
- | -----BEGIN CERTIFICATE----- | + | |
- | MIICuTCCAiICCQDauUN3s4rA2zANBgkqhkiG9w0BAQsFADCBoDELMAkGA1UEBhMC | + | |
- | R0IxDzANBgNVBAgMBlNVUlJFWTETMBEGA1UEBwwKQURETEVTVE9ORTEWMBQGA1UE | + | |
- | CgwNSTJUQ0ggTElNSVRFRDERMA8GA1UECwwIVFJBSU5JTkcxHjAcBgNVBAMMFWNl | + | |
- | bnRvczcuZmVuZXN0cm9zLmxvYzEgMB4GCSqGSIb3DQEJARYRaW5mb3NAaTJ0Y2gu | + | |
- | Y28udWswHhcNMTcxMTA1MTI1NDM4WhcNMTgxMTA1MTI1NDM4WjCBoDELMAkGA1UE | + | |
- | BhMCR0IxDzANBgNVBAgMBlNVUlJFWTETMBEGA1UEBwwKQURETEVTVE9ORTEWMBQG | + | |
- | A1UECgwNSTJUQ0ggTElNSVRFRDERMA8GA1UECwwIVFJBSU5JTkcxHjAcBgNVBAMM | + | |
- | FWNlbnRvczcuZmVuZXN0cm9zLmxvYzEgMB4GCSqGSIb3DQEJARYRaW5mb3NAaTJ0 | + | |
- | Y2guY28udWswgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALTR07YEuayyb23D | + | |
- | 2TXd6Zh4ZZg1cHLKURQN1sjxkJTKwmscKFHExqtQKEmQV+CKAAMj51DL5M1j55dp | + | |
- | G9/ | + | |
- | PcX6yTdDDyb4MqBjaHfaHTxS/ | + | |
- | eBmvUNVmsYzK6N5WgVtdVgKARVlPRwrWAPp2KDTRBNNz7lkgyYt9zmjHFBYifcQW | + | |
- | iLFSb+cl6EtDrty+zWBztKA3CRVdNejI3Q9YQ56ztOAYrGlrRMtUINNxnZcHBe05 | + | |
- | bTSecVYeyRu6aChGIyISwL5LjNyMKpXiSjSi5u0= | + | |
- | -----END CERTIFICATE----- | + | |
- | subject=/ | + | |
- | issuer=/ | + | |
- | --- | + | |
- | No client certificate CA names sent | + | |
- | Peer signing digest: SHA512 | + | |
- | Server Temp Key: ECDH, P-256, 256 bits | + | |
- | --- | + | |
- | SSL handshake has read 1264 bytes and written 415 bytes | + | |
- | --- | + | |
- | New, TLSv1/ | + | |
- | Server public key is 1024 bit | + | |
- | Secure Renegotiation IS supported | + | |
- | Compression: | + | |
- | Expansion: NONE | + | |
- | No ALPN negotiated | + | |
- | SSL-Session: | + | |
- | Protocol | + | |
- | Cipher | + | |
- | Session-ID: AF724406B1B2C2F3E8B33EEC51E51364F8E2B62374CCC16054217FBE866C4D09 | + | |
- | Session-ID-ctx: | + | |
- | Master-Key: A6BF30C3757101E375F74A3075E1F68FCEF2C6450D18DD3AF12F42F65162B53FBCC4B27C80BE5C3F27A104BFC40CEF15 | + | |
- | Key-Arg | + | |
- | Krb5 Principal: None | + | |
- | PSK identity: None | + | |
- | PSK identity hint: None | + | |
- | TLS session ticket lifetime hint: 300 (seconds) | + | |
- | TLS session ticket: | + | |
- | 0000 - a8 28 11 9b 9f 2b 09 f9-ac 4c 20 5f 0c b7 ae 87 | + | |
- | 0010 - 7d 3b 12 4b b2 d1 f5 6f-ce 2e a8 74 9f 2d 59 a9 | + | |
- | 0020 - 6a d6 53 c9 54 f9 3e cc-0b c3 e6 92 58 8d 45 9c | + | |
- | 0030 - 41 ab a7 a4 b5 24 7c 2a-f2 4f 67 48 d5 35 68 29 | + | |
- | 0040 - 3b 24 b6 2b 16 99 2d 6e-aa ea 4c c8 7e df 59 08 ; | + | |
- | 0050 - 42 06 1b 88 fa 5b c1 0b-4b 7c 01 d3 1a 28 6b 61 | + | |
- | 0060 - 70 c9 7b d0 74 93 f7 1e-c1 a6 58 54 b7 e6 4c 83 | + | |
- | 0070 - 5a d4 53 ff 61 71 46 f1-14 55 26 8f 83 29 11 69 | + | |
- | 0080 - e2 ee 08 dc 4e 7e 95 23-f7 54 c6 79 2e 88 7f 1d | + | |
- | 0090 - 5a a7 72 be 80 84 e3 4f-77 aa 63 28 06 a5 58 d1 | + | |
- | 00a0 - fa a8 28 9c 0d 22 ba 62-51 dc 33 d6 0c 56 57 c1 | + | |
- | 00b0 - b7 8c e3 eb da 54 82 d0-df e1 63 66 2b 10 85 cd | + | |
- | Start Time: 1509887084 | + | Current default time zone: ' |
- | | + | Local time is now: Wed Feb 12 14:11:40 CET 2020. |
- | Verify return code: 18 (self signed certificate) | + | Universal Time is now: Wed Feb 12 13:11:40 UTC 2020. |
- | --- | + | |
- | ^C | + | |
</ | </ | ||
- | |||
- | Procédez maintenant au test en utilisant curl : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# curl -k https:// | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Avec Apache 2.2.12 et OpenSSL v0.9.8j et versions ultérieurs, | ||
- | |||
- | Par exemple : | ||
- | |||
- | < | ||
- | NameVirtualHost *:443 | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | |||
- | ====LAB #6 - Gestion d'un Serveur Mandataire avec mod_proxy==== | ||
- | |||
- | Sous RHEL / CentOS 7 le support pour mod_proxy est installé par défaut : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule proxy_module modules/ | ||
- | LoadModule proxy_ajp_module modules/ | ||
- | LoadModule proxy_balancer_module modules/ | ||
- | LoadModule proxy_connect_module modules/ | ||
- | LoadModule proxy_express_module modules/ | ||
- | LoadModule proxy_fcgi_module modules/ | ||
- | LoadModule proxy_fdpass_module modules/ | ||
- | LoadModule proxy_ftp_module modules/ | ||
- | LoadModule proxy_http_module modules/ | ||
- | LoadModule proxy_scgi_module modules/ | ||
- | LoadModule proxy_wstunnel_module modules/ | ||
- | </ | ||
- | |||
- | Créez le fichier de configuration **/ | ||
< | < | ||
- | [root@centos7 | + | trainee@slave01:~$ su - |
- | [root@centos7 | + | Password: fenestros |
- | < | + | root@slave01:~# dpkg-reconfigure tzdata |
- | ProxyRequests On | + | |
- | listen 0.0.0.0: | + | |
- | <Proxy *> | + | Current default time zone: ' |
- | | + | Local time is now: Wed Feb 12 14:12:21 CET 2020. |
- | Require ip 127.0.0.1 | + | Universal Time is now: Wed Feb 12 13:12:21 UTC 2020. |
- | | + | |
- | </ | + | |
- | </ | + | |
</ | </ | ||
- | |||
- | Sauvegardez le fichier et rechargez la configuration du serveur apache : | ||
< | < | ||
- | [root@centos7 | + | [trainee@slave02 ~]$ su - |
+ | Mot de passe : fenestros | ||
+ | Dernière connexion : mercredi 13 mars 2019 à 12:55:24 CET sur tty1 | ||
+ | [root@slave02 ~]# timedatectl set-timezone ' | ||
+ | [root@slave02 | ||
+ | Wed 12 Feb 14:12:51 CET 2020 | ||
</ | </ | ||
- | Configurez votre navigateur pour utiliser le serveur mandataire (proxy): | + | Désactiver SELinux dans puppetslave02 |
- | + | ||
- | localhost\\ | + | |
- | port: 8081 | + | |
- | + | ||
- | Testez ensuite votre serveur proxy apache | + | |
< | < | ||
- | [root@centos7 | + | [root@slave02 |
- | curl: (7) Failed connect to 127.0.0.1: | + | [root@slave02 |
- | [root@centos7 | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | [root@centos7 ~]# curl --proxy http:// | + | |
- | < | + | |
- | </code> | + | |
- | Consultez votre fichier de log **access**. Vous constaterez un résultat similaire à celui-ci : | + | # This file controls the state of SELinux on the system. |
+ | # SELINUX= can take one of these three values: | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | SELINUX=permissive | ||
+ | # SELINUXTYPE= can take one of three two values: | ||
+ | # | ||
+ | # | ||
+ | # mls - Multi Level Security protection. | ||
+ | SELINUXTYPE=targeted | ||
- | < | ||
- | [root@centos7 ~]# tail / | ||
- | 10.0.2.16 - - [02/ | ||
- | 10.0.2.16 - - [02/ | ||
- | 10.0.2.16 - - [02/ | ||
- | 10.0.2.16 - - [02/ | ||
- | 10.0.2.16 - - [02/ | ||
- | 127.0.0.1 - jean [02/ | ||
- | 127.0.0.1 - - [02/ | ||
- | 127.0.0.1 - - [02/ | ||
- | 127.0.0.1 - - [02/ | ||
- | 127.0.0.1 - - [02/ | ||
- | </ | ||
- | ====LAB #7 - Gestion du Caching avec mod_file_cache, | + | [root@slave02 |
- | + | ||
- | ===Qu' | + | |
- | + | ||
- | L' | + | |
- | + | ||
- | Concretement, | + | |
- | + | ||
- | * améliorer le temps de réponse, | + | |
- | * conserver des ressources, | + | |
- | * minimiser la charge. | + | |
- | + | ||
- | ===Les types de cache=== | + | |
- | + | ||
- | Apache propose plusieurs types de cache : | + | |
- | + | ||
- | * **File Caching** - des fichiers ou/et des descripteurs de fichiers sont ouverts au démarrage d' | + | |
- | * le File Caching est activé par le chargement du module **mod_file_cache**, | + | |
- | * l' | + | |
- | * l' | + | |
- | * le File Caching ne concerne que les fichiers statiques parce que les directives ne sont lues que lors du démarrage d' | + | |
- | * **Attention** - c'est expérimental ! | + | |
- | * **Key-Value Caching** - principalement utilisé pour SSL et l' | + | |
- | * le Key-Value Caching utilise les modules **mod_socache_dbm**, | + | |
- | * **Standard HTTP caching** - ce système à trois états peut stocker des réponses et les valider lors de leur expiration, | + | |
- | * le Standard HTTP caching est activé par le chargement du module **mod_cache**, | + | |
- | * le cache est géré par un des fournisseurs de cache, à savoir **mod_cache_disk** si le cache est stocké sur disque ou **mod_cache_socache** dans le cas d' | + | |
- | * dans le cas de l' | + | |
- | * si la directive **CacheQuickHandler** est activée, le cache est servi **avant** l' | + | |
- | * **Attention** - le CacheQuickHandler est activé par défaut !! | + | |
- | + | ||
- | ===Mise en place du File Caching=== | + | |
- | + | ||
- | Pour mettre en place le file caching, créez le fichier **/ | + | |
- | + | ||
- | < | + | |
- | [root@centos7 ~]# vi / | + | |
- | [root@centos7 | + | |
- | LoadModule file_cache_module modules/ | + | |
</ | </ | ||
- | Modifiez ensuite le fichier | + | Si vous souhaitez remettre votre infrastructure à zéro sous VirtualBox, utilisez les commandes suivantes pour arrêter les machines virtuelles |
< | < | ||
- | [root@centos7 | + | desktop@serverXX:~$ VBoxManage controlvm PuppetMaster poweroff |
- | [root@centos7 | + | desktop@serverXX:~$ VBoxManage controlvm PuppetSlave01 poweroff |
- | ################# | + | desktop@serverXX: |
- | < | + | |
- | DocumentRoot / | + | |
- | ServerName www.rhelip.com | + | |
- | DirectoryIndex index.html | + | |
- | Customlog / | + | |
- | Errorlog / | + | |
- | CacheFile / | + | |
- | < | + | |
- | Require all granted | + | |
- | </ | + | |
- | </ | + | |
- | ... | + | |
</ | </ | ||
- | Vérifiez la configuration d' | + | Supprimez les règles de redirection de port : |
< | < | ||
- | [root@centos7 | + | desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete PuppetMaster |
- | Syntax OK | + | desktop@serverXX: |
+ | desktop@serverXX: | ||
</ | </ | ||
- | Re-démarrez | + | Dernièrement, |
< | < | ||
- | [root@centos7 | + | desktop@serverXX:~$ VBoxManage natnetwork stop --netname NatNetwork |
+ | desktop@serverXX: | ||
</ | </ | ||
- | |||
- | ===Mise en place de l' | ||
- | |||
- | Vérifiez que le module **mod_socache_shmcb** soit activé : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule socache_shmcb_module modules/ | ||
- | </ | ||
- | |||
- | Ajoutez la directive **AuthnCacheSOCache shmcb** au début du fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# more / | ||
- | # | ||
- | # This is the main Apache HTTP server configuration file. It contains the | ||
- | # configuration directives that give the server its instructions. | ||
- | # See < | ||
- | # In particular, see | ||
- | # < | ||
- | # for a discussion of each configuration directive. | ||
- | # | ||
- | # Do NOT simply read the instructions in here without understanding | ||
- | # what they do. They' | ||
- | # consult the online docs. You have been warned. | ||
- | # | ||
- | # Configuration and logfile names: If the filenames you specify for many | ||
- | # of the server' | ||
- | # server will use that explicit path. If the filenames do *not* begin | ||
- | # with "/", | ||
- | # with ServerRoot set to '/ | ||
- | # server as '/ | ||
- | # interpreted as '/ | ||
- | |||
- | # | ||
- | # ServerRoot: The top of the directory tree under which the server' | ||
- | # configuration, | ||
- | # | ||
- | # Do not add a slash at the end of the directory path. If you point | ||
- | # ServerRoot at a non-local disk, be sure to specify a local disk on the | ||
- | # Mutex directive, if file-based mutexes are used. If you wish to share the | ||
- | # same ServerRoot for multiple httpd daemons, you will need to change at | ||
- | # least PidFile. | ||
- | # | ||
- | AuthnCacheSOCache shmcb | ||
- | |||
- | ServerRoot "/ | ||
- | |||
- | # | ||
- | # Listen: Allows you to bind Apache to specific IP addresses and/or | ||
- | # ports, instead of the default. See also the < | ||
- | # directive. | ||
- | --More--(13%) | ||
- | </ | ||
- | |||
- | Editez le fichier **/ | ||
- | |||
- | * AuthBasicProvider socache dbd | ||
- | * AuthnCacheProvideFor dbd | ||
- | * AuthnCacheTimeout 300 | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ... | ||
- | ################## | ||
- | < | ||
- | ServerName www.rhelnom.com | ||
- | DirectoryIndex index.html | ||
- | DocumentRoot /www/site1 | ||
- | Customlog / | ||
- | Errorlog / | ||
- | DBDriver mysql | ||
- | DBDParams " | ||
- | DBDMin | ||
- | DBDKeep 8 | ||
- | DBDMax | ||
- | DBDExptime 300 | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | < | ||
- | AllowOverride AuthConfig | ||
- | </ | ||
- | < | ||
- | | ||
- | | ||
- | # AuthBasicProvider dbd | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | ################## | ||
- | ... | ||
- | </ | ||
- | |||
- | Vérifiez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# apachectl configtest | ||
- | Syntax OK | ||
- | </ | ||
- | |||
- | Re-démarrez le service httpd : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | ===Mise en place du SSL Session Caching=== | ||
- | |||
- | Sous CentOS 7, le SSL Session Caching est activé par défaut par les deux directives suivantes dans le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | ... | ||
- | # | ||
- | # | ||
- | # to use and second the expiring timeout (in seconds). | ||
- | SSLSessionCache | ||
- | SSLSessionCacheTimeout | ||
- | ... | ||
- | </ | ||
- | |||
- | Utilisez le client d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# openssl s_client -connect 127.0.0.1: | ||
- | depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = www.i2tch.loc, | ||
- | verify error: | ||
- | verify return:1 | ||
- | depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = www.i2tch.loc, | ||
- | verify return:1 | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 | ||
- | Session-ID-ctx: | ||
- | ^C | ||
- | </ | ||
- | |||
- | Notez que le Session-ID est identique dans les 6 cas. | ||
- | |||
- | ===Mise en place du Standard HTTP Caching=== | ||
- | |||
- | Vérifiez que les modules **mod_cache** et **mod_cache_disk** soient activés : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule cache_module modules/ | ||
- | LoadModule cache_disk_module modules/ | ||
- | </ | ||
- | |||
- | ainsi que les modules **mod_expires** et **mod_headers** : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule expires_module modules/ | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule headers_module modules/ | ||
- | </ | ||
- | |||
- | Pour gérer l' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# updatedb | ||
- | [root@centos7 ~]# locate htcacheclean.service | ||
- | / | ||
- | |||
- | [root@centos7 ~]# cat / | ||
- | [Unit] | ||
- | Description=Disk Cache Cleaning Daemon for Apache HTTP Server | ||
- | After=httpd.service | ||
- | Documentation=man: | ||
- | |||
- | [Service] | ||
- | Type=forking | ||
- | User=apache | ||
- | PIDFile=/ | ||
- | EnvironmentFile=/ | ||
- | ExecStart=/ | ||
- | |||
- | [root@centos7 ~]# systemctl status htcacheclean.service | ||
- | ● htcacheclean.service - Disk Cache Cleaning Daemon for Apache HTTP Server | ||
- | | ||
- | | ||
- | Docs: man: | ||
- | </ | ||
- | |||
- | Pour configurer ce service à démarrer lors du démarrage d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# mkdir -p / | ||
- | </ | ||
- | |||
- | Ensuite créez un lien symbolique vers le fichier d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# ln -s / | ||
- | </ | ||
- | |||
- | L' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | # | ||
- | # Configuration options for systemd service, htcacheclean.service. | ||
- | # See htcacheclean(8) for more information on available options. | ||
- | # | ||
- | |||
- | # Interval between cache clean runs, in minutes | ||
- | INTERVAL=15tp | ||
- | |||
- | # Default cache root. | ||
- | CACHE_ROOT=/ | ||
- | |||
- | # Cache size limit in bytes (K=Kbytes, M=Mbytes) | ||
- | LIMIT=100M | ||
- | |||
- | # Any other options... | ||
- | OPTIONS= | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez que si vous modifiez la directive **CACHE_ROOT**, | ||
- | </ | ||
- | |||
- | Re-démarrez le serveur httpd : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | Editez maintenant le fichier **/ | ||
- | |||
- | * CacheRoot | ||
- | * CacheDirLevels | ||
- | * CacheDirLength | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | # | ||
- | # This is the main Apache HTTP server configuration file. It contains the | ||
- | # configuration directives that give the server its instructions. | ||
- | # See < | ||
- | # In particular, see | ||
- | # < | ||
- | # for a discussion of each configuration directive. | ||
- | # | ||
- | # Do NOT simply read the instructions in here without understanding | ||
- | # what they do. They' | ||
- | # consult the online docs. You have been warned. | ||
- | # | ||
- | # Configuration and logfile names: If the filenames you specify for many | ||
- | # of the server' | ||
- | # server will use that explicit path. If the filenames do *not* begin | ||
- | # with "/", | ||
- | # with ServerRoot set to '/ | ||
- | # server as '/ | ||
- | # interpreted as '/ | ||
- | |||
- | # | ||
- | # ServerRoot: The top of the directory tree under which the server' | ||
- | # configuration, | ||
- | # | ||
- | # Do not add a slash at the end of the directory path. If you point | ||
- | # ServerRoot at a non-local disk, be sure to specify a local disk on the | ||
- | # Mutex directive, if file-based mutexes are used. If you wish to share the | ||
- | # same ServerRoot for multiple httpd daemons, you will need to change at | ||
- | # least PidFile./ | ||
- | AuthnCacheSOCache shmcb | ||
- | |||
- | CacheRoot / | ||
- | CacheDirLevels 2 | ||
- | CacheDirLength 1 | ||
- | |||
- | ServerRoot "/ | ||
- | ... | ||
- | </ | ||
- | |||
- | Un hash md5 de l'URL servi est créé en tant que clef pour stocker les données. La valeur de **CacheDirLevels** spécifie le nombre de sous-répertoires à créer sur disque tandis que la valeur de **CacheDirLength** spécifie le nombre de caractères à utiliser pour le nom de chaque répertoire. Par exemple un hash de **b1946ac92492d2347c6235b4d2611184** avec **CacheDirLevels 2** et **CacheDirLength 1** sera stocké dans une structure **b/ | ||
- | |||
- | Editez ensuite la section **www.rhelnom.com** du fichier **/ | ||
- | |||
- | < | ||
- | CacheQuickHandler off | ||
- | CacheLock on | ||
- | CacheLockPath / | ||
- | CacheLockMaxAge 5 | ||
- | CacheIgnoreHeaders Set-Cookie | ||
- | < | ||
- | CacheEnable disk | ||
- | CacheHeader on | ||
- | CacheDefaultExpire 600 | ||
- | CacheMaxExpire 86400 | ||
- | CacheLastModifiedFactor 0.5 | ||
- | </ | ||
- | </ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ... | ||
- | ################## | ||
- | < | ||
- | ServerName www.rhelnom.com | ||
- | DirectoryIndex index.html | ||
- | DocumentRoot /www/site1 | ||
- | Customlog / | ||
- | Errorlog / | ||
- | CacheQuickHandler off | ||
- | CacheLock on | ||
- | CacheLockPath / | ||
- | CacheLockMaxAge 5 | ||
- | CacheIgnoreHeaders Set-Cookie | ||
- | < | ||
- | CacheEnable disk | ||
- | CacheHeader on | ||
- | CacheDefaultExpire 600 | ||
- | CacheMaxExpire 86400 | ||
- | CacheLastModifiedFactor 0.5 | ||
- | </ | ||
- | DBDriver mysql | ||
- | DBDParams " | ||
- | DBDMin | ||
- | DBDKeep 8 | ||
- | DBDMax | ||
- | DBDExptime 300 | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | < | ||
- | AllowOverride AuthConfig | ||
- | </ | ||
- | < | ||
- | | ||
- | | ||
- | # AuthBasicProvider dbd | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | ################## | ||
- | ... | ||
- | </ | ||
- | |||
- | ==CacheQuickHandler off== | ||
- | |||
- | Pour des raions citées précédement, | ||
- | |||
- | ==CacheLock on== | ||
- | |||
- | Le mécanisme de vérification de la page d' | ||
- | |||
- | La mise en place du **CacheLock** avec la valeur **on** indique à Apache que la ressource est en cours de mise-à-jour. De cette façon, Apache sert la ressource expirée mais avec un avertissement dans le header. | ||
- | |||
- | ==CacheLockPath / | ||
- | |||
- | Dans le cas de ce LAB, nous mettons en place un **CacheLockPath** de **/tmp**. | ||
- | |||
- | ==CacheLockMaxAge 5== | ||
- | |||
- | La valeur de la directive **CacheLockMaxAge** indique le nombre de secondes pendant lesquels le cache lock doit être considéré comme étant valide. | ||
- | |||
- | ==CacheIgnoreHeaders Set-Cookie== | ||
- | |||
- | Cette directive indique à Apache de ne pas mettre en cache le header **Set-Cookie** de façon à ce que des informations confidentielles ne soient pas divulguées d'une manière inadvertante. Le header **Set-Cookie** est donc enlevé avant la mise en cache des autres headers. | ||
- | |||
- | ==< | ||
- | |||
- | Cette directive indique que le cache sera mis en place pour tout le site www.rhelnom.com. | ||
- | |||
- | ==CacheEnable disk== | ||
- | |||
- | Cette directive met en place le cache sur disque. | ||
- | |||
- | ==CacheHeader on== | ||
- | |||
- | Cette directive indique que nous mettrosn en cache les headers. | ||
- | |||
- | ==CacheDefaultExpire 600== | ||
- | |||
- | Cette directive indique le nombre par défaut de secondes qu'une ressource sera stocké en cache dans le cas de l' | ||
- | |||
- | Another directive we'll set is CacheDefaultExpire so that we can set an expiration (in seconds) if neither the Expires nor the Last-Modified headers are set on the content. Similarly, we'll set CacheMaxExpire to cap the amount of time items will be saved. We'll set the CacheLastModifiedFactor so that Apache can create an expiration date if it has a Last-Modified date, but no expiration. The factor is multiplied by the time since modification to set a reasonable expiration. | ||
- | |||
- | ==CacheMaxExpire 86400== | ||
- | |||
- | Cette directive indique le temps maximum en secondes qu'une ressource sera stockée en cache. | ||
- | |||
- | ==CacheLastModifiedFactor== | ||
- | |||
- | Cette directive permet à Apache à calculer une date d' | ||
- | |||
- | Vérifiez maintenant la syntaxe des fichies de configuration : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# apachectl configtest | ||
- | Syntax OK | ||
- | </ | ||
- | |||
- | Redémarrez le service httpd : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | Syntax OK | ||
- | </ | ||
- | |||
- | Testez votre configuration : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump www.rhelnom.com | ||
- | Accueil du site 1 | ||
- | |||
- | |||
- | [root@centos7 ~]# ls -lR / | ||
- | / | ||
- | total 0 | ||
- | drwx------. 3 apache apache 14 Sep 10 15:26 W | ||
- | |||
- | / | ||
- | total 0 | ||
- | drwx------. 2 apache apache 72 Sep 10 15:26 J | ||
- | |||
- | / | ||
- | total 8 | ||
- | -rw-------. 1 apache apache 100 Sep 10 15:26 p19SR9R171waLwS6RcbA.data | ||
- | -rw-------. 1 apache apache 502 Sep 10 15:26 p19SR9R171waLwS6RcbA.header | ||
- | |||
- | [root@centos7 ~]# cat / | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | [root@centos7 ~]# cat / | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | [root@centos7 ~]# cat / | ||
- | �%r�dM�ur< | ||
- | ETag: " | ||
- | Accept-Ranges: | ||
- | Content-Length: | ||
- | Content-Type: | ||
- | |||
- | Host: www.rhelnom.com | ||
- | Accept: text/html, text/plain, text/css, text/sgml, */*;q=0.01 | ||
- | Accept-Language: | ||
- | User-Agent: Lynx/ | ||
- | </ | ||
- | |||
- | ====LAB #8 - Gestion d'un Reverse Proxy avec mod_proxy==== | ||
- | |||
- | |||
- | |||
- | ====LAB #9 - Gestion d'un Cluster de Répartition de Charge avec Tomcat et mod_jk==== | ||
- | |||
- | Pour installer Tomcat 8 sous **%%CentOS 7%%**, il convient de saisir les commandes suivantes : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# wget https:// | ||
- | [root@centos7 ~]# tar xvf apache-tomcat-8.0.36.tar.gz | ||
- | [root@centos7 ~]# mv apache-tomcat-8.0.36 / | ||
- | </ | ||
- | |||
- | Installez maintenant le JDK : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# yum install java-1.8.0-openjdk-devel | ||
- | </ | ||
- | |||
- | Vérifiez la présence du **jre-1.8.0-openjdk** dans le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 work]# ls -l / | ||
- | lrwxrwxrwx 1 root root 35 Apr 27 12:54 / | ||
- | lrwxrwxrwx 1 root root 51 Apr 27 12:54 / | ||
- | </ | ||
- | |||
- | Ajoutez les trois lignes suivantes au fichier **/ | ||
- | |||
- | < | ||
- | ... | ||
- | PATH=$PATH:/ | ||
- | JAVA_HOME=/ | ||
- | export PATH JAVA_HOME | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** : Vérifiez que la version du **jre-1.8.0-openjdk** dans le fichier **/ | ||
- | </ | ||
- | |||
- | Rechargez le fichier / | ||
- | |||
- | < | ||
- | [root@centos7 ~]# source / | ||
- | [root@centos7 ~]# echo $PATH | ||
- | / | ||
- | [root@centos7 ~]# echo $JAVA_HOME | ||
- | / | ||
- | </ | ||
- | |||
- | Vérifiez ensuite la version de java : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# java -version | ||
- | openjdk version " | ||
- | OpenJDK Runtime Environment (build 1.8.0_131-b11) | ||
- | OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) | ||
- | </ | ||
- | |||
- | Définissez maintenant la variable CATALINA_HOME dans le fichier **/ | ||
- | |||
- | < | ||
- | ... | ||
- | # Tomcat | ||
- | CATALINA_HOME="/ | ||
- | export CATALINA_HOME | ||
- | PATH=$PATH:/ | ||
- | JAVA_HOME=/ | ||
- | export PATH JAVA_HOME | ||
- | </ | ||
- | |||
- | Rechargez / | ||
- | |||
- | < | ||
- | [root@centos7 ~]# source / | ||
- | [root@centos7 ~]# echo $CATALINA_HOME | ||
- | / | ||
- | </ | ||
- | |||
- | Démarrez maintenant Tomcat 8 : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cd / | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | </ | ||
- | |||
- | Utilisez le navigateur de texte **lynx** pour tester Tomcat 8 : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | | ||
- | | ||
- | |||
- | Apache Tomcat/ | ||
- | |||
- | If you're seeing this, you've successfully installed Tomcat. Congratulations! | ||
- | |||
- | | ||
- | |||
- | Recommended Reading: | ||
- | ... | ||
- | </ | ||
- | |||
- | Le schéma suivant indique le couplage Tomcat/ | ||
- | |||
- | {{ : | ||
- | |||
- | Téléchargez le connecteur mod-jk pour Apache : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# wget http:// | ||
- | [root@centos7 ~]# tar xvf tomcat-connectors-1.2.42-src.tar.gz | ||
- | [root@centos7 ~]# cd tomcat-connectors-1.2.42-src/ | ||
- | </ | ||
- | |||
- | Installez le binaire **apxs** inclut dans le paquet **httpd-devel**. Le binaire apxs est utilisé pour construire les modules d' | ||
- | |||
- | < | ||
- | [root@centos7 tomcat-connectors-1.2.42-src]# | ||
- | </ | ||
- | |||
- | Placez-vous dans le sous-répertoire **native** et lancez les commandes pour effectuer la compilation : | ||
- | |||
- | < | ||
- | [root@centos7 tomcat-connectors-1.2.42-src]# | ||
- | [root@centos7 native]# which apxs | ||
- | /bin/apxs | ||
- | [root@centos7 native]# ./configure --with-apxs=/ | ||
- | ... | ||
- | [root@centos7 native]# make | ||
- | ... | ||
- | [root@centos7 native]# make install | ||
- | Making install in common | ||
- | make[1]: Entering directory `/ | ||
- | make[1]: Nothing to be done for `install' | ||
- | make[1]: Leaving directory `/ | ||
- | Making install in apache-2.0 | ||
- | make[1]: Entering directory `/ | ||
- | |||
- | Installing files to Apache Modules Directory... | ||
- | /bin/apxs -i mod_jk.la | ||
- | / | ||
- | / | ||
- | libtool: install: install .libs/ | ||
- | libtool: install: install .libs/ | ||
- | libtool: install: install .libs/ | ||
- | libtool: install: chmod 644 / | ||
- | libtool: install: ranlib / | ||
- | libtool: finish: PATH="/ | ||
- | ---------------------------------------------------------------------- | ||
- | Libraries have been installed in: | ||
- | / | ||
- | |||
- | If you ever happen to want to link against installed libraries | ||
- | in a given directory, LIBDIR, you must either use libtool, and | ||
- | specify the full pathname of the library, or use the `-LLIBDIR' | ||
- | flag during linking and do at least one of the following: | ||
- | - add LIBDIR to the `LD_LIBRARY_PATH' | ||
- | | ||
- | - add LIBDIR to the `LD_RUN_PATH' | ||
- | | ||
- | - use the `-Wl,-rpath -Wl, | ||
- | - have your system administrator add LIBDIR to `/ | ||
- | |||
- | See any operating system documentation about shared libraries for | ||
- | more information, | ||
- | ---------------------------------------------------------------------- | ||
- | chmod 755 / | ||
- | |||
- | Please be sure to arrange / | ||
- | |||
- | make[1]: Leaving directory `/ | ||
- | make[1]: Entering directory `/ | ||
- | make[2]: Entering directory `/ | ||
- | make[2]: Nothing to be done for `install-exec-am' | ||
- | make[2]: Nothing to be done for `install-data-am' | ||
- | make[2]: Leaving directory `/ | ||
- | make[1]: Leaving directory `/ | ||
- | </ | ||
- | |||
- | Modifiez ensuite le fichier / | ||
- | |||
- | < | ||
- | ... | ||
- | ServerName www.i2tch.loc: | ||
- | ... | ||
- | </ | ||
- | |||
- | et ajoutez les directives suivantes à la fin du fichier afin de prendre en compte mod_jk et sa configuration : | ||
- | |||
- | < | ||
- | ... | ||
- | LoadModule jk_module modules/ | ||
- | JkWorkersFile conf/ | ||
- | JkLogFile logs/ | ||
- | JkLogLevel info | ||
- | JkMount / | ||
- | JkMount / | ||
- | </ | ||
- | |||
- | Les différentes directives Apache utilisables avec **mod_jk** sont : | ||
- | |||
- | ^ Directive ^ Description ^ | ||
- | | **JkWorkersFile** | Spécifie le nom et l' | ||
- | | **JkWorkerProperty** | L' | ||
- | | **JkLogFile** | Spécifie le nom et l' | ||
- | | **JkLogLevel** | Spécifie le niveau de journalisation du module. Les valeurs ici peuvent être **trace**, **debug**, **info**, **warn** et **error**. Le fonctionnement est similaire à syslog dans la mesure où si la valeur est **info** alors tous les messages des niveaux **info**, **warn** et **error** seront journalisés. | | ||
- | | **JkMount** | Spécifie l' | ||
- | | **JkUnMount** | Spécifie une interdiction de redirection de requêtes vers une ressource d'une application Tomcat. La syntaxe est **JkUnMount <URL> <Nom du Travailleur> | ||
- | | **JkAutoAlias** | Spécifie un alias entre le répertoire des applications de Tomcat et le répertoire de publication des fichiers statiques d' | ||
- | | **JkLogStampFormat** | Spécifie le format de la date inscrite dans le fichier de journalisation du module en utilisant des séquences de contrôle, par exemple, **JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" | ||
- | | **JkExtractSSL** | Spécifie que le module peut transmettre les informations SSL vers le serveur Tomcat. | | ||
- | | **JkHTTPSIndicator** | Spécifie le nom de la variable Apache contenant l' | ||
- | | **JkCERTSIndicator** | Spécifie le nom de la variable Apache contenant le certificat SSL. | | ||
- | | **JkSESSIONIndicator** | Spécifie le nom de la variable Apache contenant l' | ||
- | |||
- | Modifiez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 native]# vi /etc/hosts | ||
- | [root@centos7 native]# cat /etc/hosts | ||
- | 127.0.0.1 localhost.localdomain localhost | ||
- | :: | ||
- | 10.0.2.15 www.i2tch.loc | ||
- | </ | ||
- | |||
- | Créez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 native]# cd ~ | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | worker.list=worker1 | ||
- | worker.worker1.type=ajp13 | ||
- | worker.worker1.host=10.0.2.15 | ||
- | worker.worker1.port=8009 | ||
- | </ | ||
- | |||
- | Vérifiez l' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | <!-- Define an AJP 1.3 Connector on port 8009 --> | ||
- | < | ||
- | </ | ||
- | |||
- | Redémarrez ensuite les services httpd et tomcat8 : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd.service | ||
- | [root@centos7 ~]# cd / | ||
- | [root@centos7 bin]# ls | ||
- | bootstrap.jar | ||
- | catalina.bat | ||
- | catalina.sh | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | </ | ||
- | |||
- | Vérifiez maintenant le bon fonctionnement d' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** : Notez qu'en consultant l' | ||
- | </ | ||
- | |||
- | Créez maintenant deux répertoires en dessous de $CATALINA_HOME : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# mkdir $CATALINA_HOME/ | ||
- | </ | ||
- | |||
- | Arrêtez le serveur Tomcat et copiez les répertoires $CATALINA_HOME/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cd $CATALINA_HOME | ||
- | [root@centos7 tomcat8]# cp -rp conf/ tomcat1/ | ||
- | [root@centos7 tomcat8]# cp -rp logs/ tomcat1 | ||
- | [root@centos7 tomcat8]# cp -rp temp/ tomcat1 | ||
- | [root@centos7 tomcat8]# cp -rp webapps/ tomcat1 | ||
- | [root@centos7 tomcat8]# cp -rp work/ tomcat1 | ||
- | [root@centos7 tomcat8]# cp -rp conf/ tomcat2/ | ||
- | [root@centos7 tomcat8]# cp -rp logs/ tomcat2/ | ||
- | [root@centos7 tomcat8]# cp -rp temp/ tomcat2/ | ||
- | [root@centos7 tomcat8]# cp -rp webapps/ tomcat2/ | ||
- | [root@centos7 tomcat8]# cp -rp work/ tomcat2/ | ||
- | </ | ||
- | |||
- | Supprimez les répertoires $CATALINA_HOME/ | ||
- | |||
- | < | ||
- | [root@centos7 tomcat8]# rm -rf conf/ logs/ temp/ webapps/ work/ | ||
- | </ | ||
- | |||
- | Créez maintenant les scripts de démarrage et d' | ||
- | |||
- | < | ||
- | [root@centos7 tomcat8]# cd bin | ||
- | [root@centos7 bin]# vi startTomcat1 | ||
- | [root@centos7 bin]# cat startTomcat1 | ||
- | #!/bin/bash | ||
- | export CATALINA_BASE=/ | ||
- | . $CATALINA_HOME/ | ||
- | |||
- | [root@centos7 bin]# vi stopTomcat1 | ||
- | [root@centos7 bin]# cat stopTomcat1 | ||
- | #!/bin/bash | ||
- | export CATALINA_BASE=/ | ||
- | . $CATALINA_HOME/ | ||
- | |||
- | [root@centos7 bin]# vi startTomcat2 | ||
- | [root@centos7 bin]# cat startTomcat2 | ||
- | export CATALINA_BASE=/ | ||
- | . $CATALINA_HOME/ | ||
- | |||
- | [root@centos7 bin]# vi stopTomcat2 | ||
- | [root@centos7 bin]# cat stopTomcat2 | ||
- | #!/bin/bash | ||
- | export CATALINA_BASE=/ | ||
- | . $CATALINA_HOME/ | ||
- | </ | ||
- | |||
- | Rendez les scripts exécutables : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# chmod a+x startTomcat1 | ||
- | [root@centos7 bin]# chmod a+x startTomcat2 | ||
- | [root@centos7 bin]# chmod a+x stopTomcat1 | ||
- | [root@centos7 bin]# chmod a+x stopTomcat2 | ||
- | [root@centos7 bin]# ls -l | grep startT | ||
- | -rwxr-xr-x | ||
- | -rwxr-xr-x | ||
- | [root@centos7 bin]# ls -l | grep stopT | ||
- | -rwxr-xr-x | ||
- | -rwxr-xr-x | ||
- | </ | ||
- | |||
- | Modifiez les ports dans le fichier server.xml de chaque installation de Tomcat en utilisant VI : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi / | ||
- | [root@centos7 bin]# vi / | ||
- | </ | ||
- | |||
- | Les commandes VI suivantes peuvent vous aider : | ||
- | |||
- | < | ||
- | Pour le fichier / | ||
- | : | ||
- | : | ||
- | : | ||
- | : | ||
- | Pour le fichier / | ||
- | : | ||
- | : | ||
- | : | ||
- | : | ||
- | </ | ||
- | |||
- | Démarrez les deux instances de Tomcat : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | [root@centos7 bin]# ps aux | grep tomcat | ||
- | root 25696 30.0 4.4 2399312 67900 pts/0 | ||
- | root | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | [root@centos7 bin]# ps aux | grep tomcat | ||
- | root 25696 32.1 5.2 2403492 80468 pts/0 | ||
- | root 25817 32.6 2.4 2381580 37172 pts/0 | ||
- | root | ||
- | </ | ||
- | |||
- | Vérifiez maintenant que les deux instances peuvent être arrêtés : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | [root@centos7 bin]# ps aux | grep tomcat | ||
- | root | ||
- | </ | ||
- | |||
- | Modifiez le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi / | ||
- | [root@centos7 bin]# cat / | ||
- | worker.list=balancer | ||
- | |||
- | worker.tomcat1.type=ajp13 | ||
- | worker.tomcat1.host=10.0.2.15 | ||
- | worker.tomcat1.port=8109 | ||
- | worker.tomcat1.lbfactor=1 | ||
- | |||
- | worker.tomcat2.type=ajp13 | ||
- | worker.tomcat2.host=10.0.2.15 | ||
- | worker.tomcat2.port=8209 | ||
- | worker.tomcat2.lbfactor=1 | ||
- | |||
- | worker.balancer.type=lb | ||
- | worker.balancer.balance_workers=tomcat1, | ||
- | worker.balancer.sticky_session=1 | ||
- | </ | ||
- | |||
- | Modifiez la section concernant Tomcat dans le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi / | ||
- | [root@centos7 bin]# tail / | ||
- | # | ||
- | # Load config files in the "/ | ||
- | # IncludeOptional conf.d/ | ||
- | |||
- | LoadModule jk_module modules/ | ||
- | JkWorkersFile conf/ | ||
- | JkLogFile logs/ | ||
- | JkLogLevel info | ||
- | JkMount / | ||
- | JkMount / | ||
- | </ | ||
- | |||
- | Modifiez la section < | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | ... | ||
- | <Engine name=" | ||
- | ... | ||
- | </ | ||
- | |||
- | Modifiez ensuite la section < | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | ... | ||
- | <Engine name=" | ||
- | ... | ||
- | </ | ||
- | |||
- | Pour pouvoir tester la configuration, | ||
- | |||
- | < | ||
- | [root@centos7 bin]# mv $CATALINA_HOME/ | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# cat $CATALINA_HOME/ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | [root@centos7 bin]# mv $CATALINA_HOME/ | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# cat $CATALINA_HOME/ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | [root@centos7 bin]# | ||
- | </ | ||
- | |||
- | Redémarrez le service httpd.service : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# systemctl restart httpd.service | ||
- | </ | ||
- | |||
- | Démarrez les deux instances de Tomcat : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started. | ||
- | </ | ||
- | |||
- | Utilisez Lynx pour vous connecter à l' | ||
- | |||
- | < | ||
- | [root@centos7 httpd]# lynx --dump http:// | ||
- | This is Tomcat2 | ||
- | |||
- | |||
- | [root@centos7 httpd]# lynx --dump http:// | ||
- | This is Tomcat2 | ||
- | |||
- | |||
- | [root@centos7 httpd]# lynx --dump http:// | ||
- | This is Tomcat2 | ||
- | |||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Attention** : Notez que l' | ||
- | </ | ||
- | |||
- | Arrêtez maintenant l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | </ | ||
- | |||
- | Connectez-vous de nouveau à l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | This is Tomcat1 | ||
- | |||
- | |||
- | [root@centos7 bin]# | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez que c'est maintenant l' | ||
- | </ | ||
- | |||
- | ====LAB #10 - Gestion d'un Cluster de Répartition de Charge avec mod_proxy_ajp==== | ||
- | |||
- | Vérifiez que les lignes **LoadModule proxy_ajp_module modules/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# cat / | ||
- | # This file configures all the proxy modules: | ||
- | LoadModule proxy_module modules/ | ||
- | LoadModule lbmethod_bybusyness_module modules/ | ||
- | LoadModule lbmethod_byrequests_module modules/ | ||
- | LoadModule lbmethod_bytraffic_module modules/ | ||
- | LoadModule lbmethod_heartbeat_module modules/ | ||
- | LoadModule proxy_ajp_module modules/ | ||
- | LoadModule proxy_balancer_module modules/ | ||
- | LoadModule proxy_connect_module modules/ | ||
- | LoadModule proxy_express_module modules/ | ||
- | LoadModule proxy_fcgi_module modules/ | ||
- | LoadModule proxy_fdpass_module modules/ | ||
- | LoadModule proxy_ftp_module modules/ | ||
- | LoadModule proxy_http_module modules/ | ||
- | LoadModule proxy_scgi_module modules/ | ||
- | LoadModule proxy_wstunnel_module modules/ | ||
- | </ | ||
- | |||
- | Modifiez le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# tail -n 15 / | ||
- | |||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | |||
- | ProxyTimeout 300 | ||
- | |||
- | <Proxy balancer:// | ||
- | BalancerMember ajp:// | ||
- | BalancerMember ajp:// | ||
- | </ | ||
- | |||
- | ProxyPass / | ||
- | ProxyPassReverse / | ||
- | </ | ||
- | |||
- | Redémarrez le serveur httpd : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# systemctl restart httpd.service | ||
- | </ | ||
- | |||
- | Démarrez l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | Tomcat started | ||
- | </ | ||
- | |||
- | Utilisez Lynx pour vous connecter à l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | This is Tomcat1 | ||
- | |||
- | |||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | This is Tomcat2 | ||
- | |||
- | |||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | This is Tomcat1 | ||
- | |||
- | |||
- | [root@centos7 bin]# lynx --dump http:// | ||
- | This is Tomcat2 | ||
- | |||
- | |||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Attention** : Notez que l' | ||
- | </ | ||
- | |||
- | Afin de mettre en place l' | ||
- | |||
- | Modifiez le fichier **/ | ||
- | |||
- | < | ||
- | ... | ||
- | IncludeOptional conf.d/ | ||
- | |||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | Header add Set-Cookie " | ||
- | <Proxy balancer:// | ||
- | BalancerMember ajp:// | ||
- | BalancerMember ajp:// | ||
- | ProxySet stickysession=ROUTEID | ||
- | </ | ||
- | |||
- | ProxyPass | ||
- | ProxyPassReverse | ||
- | </ | ||
- | |||
- | Testez ensuite l' | ||
- | |||
- | Pour plus d' | ||
- | |||
- | ===Maintenir l'Etat des Clients=== | ||
- | |||
- | Editez le fichier **web.xml** de l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# tail $CATALINA_HOME/ | ||
- | http:// | ||
- | version=" | ||
- | metadata-complete=" | ||
- | |||
- | < | ||
- | < | ||
- | | ||
- | </ | ||
- | < | ||
- | </ | ||
- | [root@centos7 bin]# tail $CATALINA_HOME/ | ||
- | http:// | ||
- | version=" | ||
- | metadata-complete=" | ||
- | |||
- | < | ||
- | < | ||
- | | ||
- | </ | ||
- | < | ||
- | </ | ||
- | </ | ||
- | |||
- | Créez les fichiers **$CATALINA_HOME/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# cat $CATALINA_HOME/ | ||
- | <%@page language=" | ||
- | < | ||
- | < | ||
- | <h3> | ||
- | Session : <%= session.getId() %> | ||
- | </h3> | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | [root@centos7 bin]# cat $CATALINA_HOME/ | ||
- | <%@page language=" | ||
- | < | ||
- | < | ||
- | <h3> | ||
- | Session : <%= session.getId() %> | ||
- | </h3> | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Décommentez la ligne suivante dans les fichiers **server.xml** : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | ... | ||
- | <Cluster className=" | ||
- | ... | ||
- | [root@centos7 bin]# vi $CATALINA_HOME/ | ||
- | ... | ||
- | <Cluster className=" | ||
- | ... | ||
- | </ | ||
- | |||
- | Editez maintenant les fichier **$CATALINA_HOME/ | ||
- | |||
- | < | ||
- | < | ||
- | <Store className=" | ||
- | directory="/ | ||
- | </ | ||
- | </ | ||
- | |||
- | Vous obtiendrez un résultat similaire à celui-ci : | ||
- | |||
- | < | ||
- | [root@centos7 bin]# cat / | ||
- | <?xml version=' | ||
- | <!-- | ||
- | Licensed to the Apache Software Foundation (ASF) under one or more | ||
- | contributor license agreements. | ||
- | this work for additional information regarding copyright ownership. | ||
- | The ASF licenses this file to You under the Apache License, Version 2.0 | ||
- | (the " | ||
- | the License. | ||
- | |||
- | http:// | ||
- | |||
- | Unless required by applicable law or agreed to in writing, software | ||
- | distributed under the License is distributed on an "AS IS" BASIS, | ||
- | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
- | See the License for the specific language governing permissions and | ||
- | limitations under the License. | ||
- | --> | ||
- | <!-- The contents of this file will be loaded for each web application --> | ||
- | < | ||
- | |||
- | < | ||
- | <Store className=" | ||
- | directory="/ | ||
- | </ | ||
- | |||
- | <!-- Default set of monitored resources. If one of these changes, the --> | ||
- | <!-- web application will be reloaded. | ||
- | < | ||
- | < | ||
- | |||
- | <!-- Uncomment this to disable session persistence across Tomcat restarts --> | ||
- | <!-- | ||
- | <Manager pathname="" | ||
- | --> | ||
- | |||
- | <!-- Uncomment this to enable Comet connection tacking (provides events | ||
- | on session expiration as well as webapp lifecycle) --> | ||
- | <!-- | ||
- | <Valve className=" | ||
- | --> | ||
- | </ | ||
- | </ | ||
- | |||
- | Créez le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# mkdir / | ||
- | </ | ||
- | |||
- | En utilisant votre navigateur graphique, saisissez l'URL suivante : | ||
- | |||
- | < | ||
- | http:// | ||
- | </ | ||
- | |||
- | Vous obtiendrez une résultat similaire à l' | ||
- | |||
- | < | ||
- | Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1 | ||
- | </ | ||
- | |||
- | ou | ||
- | |||
- | < | ||
- | Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat2 | ||
- | </ | ||
- | |||
- | Selon l' | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | </ | ||
- | |||
- | ou | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ./ | ||
- | Using CATALINA_BASE: | ||
- | Using CATALINA_HOME: | ||
- | Using CATALINA_TMPDIR: | ||
- | Using JRE_HOME: | ||
- | Using CLASSPATH: | ||
- | </ | ||
- | |||
- | Contrôlez le contenu du répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 bin]# ls -l / | ||
- | total 4 | ||
- | -rw-r--r-- 1 root root 263 Jul 5 23:32 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1.session | ||
- | </ | ||
- | |||
- | Revenez à votre navigateur Web graphique et rafraichissez la page. Vous obtiendrez un résultat démontrant que la session est resté la même malgré le fait que c'est l' | ||
- | |||
- | < | ||
- | Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1 | ||
- | </ | ||
- | |||
- | ou | ||
- | |||
- | < | ||
- | Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat2 | ||
- | </ | ||
- | |||
- | ====LAB #11 - Gestion du Web-based Distributed Authoring and Versioning avec mod_dav==== | ||
- | |||
- | ===Introduction=== | ||
- | |||
- | **%%WebDAV%%** (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP. Le protocole %%WebDAV%% : | ||
- | |||
- | * est décrit dans la **[[http:// | ||
- | * permet de simplifier la gestion de fichiers avec des serveurs distants | ||
- | * permet de récupérer, | ||
- | * permet, grâce à un mécanisme de verrouillage et de déverrouillage de protéger contre l' | ||
- | * gère les métadonnées : titre, sujet, créateur, etc, | ||
- | * gère les attributs de fichiers : copier, renommer, déplacer et supprimer des fichiers, | ||
- | |||
- | ===Installation=== | ||
- | |||
- | Pour activer WebDAV, il faut que les deux modules suivants soient activés dans le fichier httpd.conf : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule dav_module modules/ | ||
- | LoadModule dav_fs_module modules/ | ||
- | LoadModule dav_lock_module modules/ | ||
- | </ | ||
- | |||
- | ===Configuration=== | ||
- | |||
- | Afin de mettre en place un hôte virtuel pour contenir un site %%WebDAV%%, créez son répertoire racine : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# mkdir /www/dav | ||
- | </ | ||
- | |||
- | Créez ensuite le fichier / | ||
- | |||
- | < | ||
- | [root@centos7 ~]# echo test > / | ||
- | </ | ||
- | |||
- | Ensuite éditez le fichier **/ | ||
- | |||
- | < | ||
- | ################## | ||
- | < | ||
- | ServerName dav.homeland.net | ||
- | DocumentRoot /www/dav | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | < | ||
- | Dav On | ||
- | AuthType Basic | ||
- | AuthName " | ||
- | AuthUserFile / | ||
- | < | ||
- | Require valid-user | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Vous obtiendrez : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | </ | ||
- | ################# | ||
- | NameVirtualHost *:80 | ||
- | ################## | ||
- | < | ||
- | VirtualDocumentRoot / | ||
- | ServerName i2tch.loc | ||
- | ServerAlias *.i2tch.loc | ||
- | ServerAdmin webmaster@localhost | ||
- | LogLevel info | ||
- | < | ||
- | Options FollowSymLinks | ||
- | AllowOverride All | ||
- | Require all granted | ||
- | </ | ||
- | </ | ||
- | ################## | ||
- | < | ||
- | ServerName www.rhelnom.com | ||
- | DirectoryIndex index.html | ||
- | DocumentRoot /www/site1 | ||
- | Customlog / | ||
- | Errorlog / | ||
- | DBDriver mysql | ||
- | DBDParams " | ||
- | DBDMin | ||
- | DBDKeep 8 | ||
- | DBDMax | ||
- | DBDExptime 300 | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | < | ||
- | AllowOverride AuthConfig | ||
- | </ | ||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | ################## | ||
- | < | ||
- | ServerName dav.homeland.net | ||
- | DocumentRoot /www/dav | ||
- | < | ||
- | Require all granted | ||
- | </ | ||
- | < | ||
- | Dav On | ||
- | AuthType Basic | ||
- | AuthName " | ||
- | AuthUserFile / | ||
- | < | ||
- | Require valid-user | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Créez maintenant le répertoire pour contenir le fichier des mots de passe : | ||
- | |||
- | [root@centos7 ~]# mkdir / | ||
- | |||
- | Créez le fichier **.davusers** avec un mot de passe pour **webmaster** : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# htpasswd -c / | ||
- | New password: fenestros | ||
- | Re-type new password: fenestros | ||
- | Adding password for user webmaster | ||
- | </ | ||
- | |||
- | Ajoutez le site **dav.homeland.net** au fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi /etc/hosts | ||
- | [root@centos7 ~]# cat /etc/hosts | ||
- | 127.0.0.1 localhost.localdomain localhost | ||
- | :: | ||
- | 10.0.2.16 i2tch.com | ||
- | 10.0.2.16 *.i2tch.loc | ||
- | 10.0.2.16 | ||
- | 192.168.1.99 | ||
- | 10.0.2.16 dav.homeland.net | ||
- | </ | ||
- | |||
- | Rechargez les fichiers de configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Pour tester la configuration, | ||
- | |||
- | Installez Cadaver : | ||
- | |||
- | < | ||
- | [root@centos7 ~]yum install cadaver | ||
- | </ | ||
- | |||
- | Connectez-vous au site **http:// | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cadaver http:// | ||
- | Authentication required for Accès WebDAV on server `dav.homeland.net': | ||
- | Username: webmaster | ||
- | Password: | ||
- | dav:/> ls | ||
- | Listing collection `/': succeeded. | ||
- | dav.test | ||
- | dav:/> cat dav.test | ||
- | Displaying `/ | ||
- | test | ||
- | dav:/> exit | ||
- | Connection to `dav.homeland.net' | ||
- | [root@centos7 ~]# | ||
- | </ | ||
- | |||
- | ==== LAB #12 - Gestion de la réécriture d'URL avec mod_rewrite ==== | ||
- | |||
- | ===Introduction=== | ||
- | |||
- | Le module **mod_rewrite** permet la réécriture d'URL en temps réel en utilisant des **expressions régulières**. | ||
- | |||
- | ===Activer mod_rewrite=== | ||
- | |||
- | Pour activer **mod_rewrite**, | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule rewrite_module modules/ | ||
- | </ | ||
- | |||
- | ===Mettre un site en maintenance=== | ||
- | |||
- | Dans cet exemple, vous allez rediriger votre site principal vers une page nommée maintenance.html. | ||
- | |||
- | Créez donc une page **maintenance.html** dans le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | Notre site est actuellement en maintenance. Merci de revenir plus tard. | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Editez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | AllowOverride All | ||
- | </ | ||
- | RewriteEngine on | ||
- | RewriteRule ^/$ / | ||
- | </ | ||
- | ... | ||
- | </ | ||
- | |||
- | La directive **%%RewriteEngine on%%** active mod_rewrite pour le serveur virtuel principal. | ||
- | |||
- | La directive **%%RewriteRule ^/$ / | ||
- | |||
- | Sauvegardez votre fichier puis rechargez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Testez ensuite votre configuration avec lynx : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump http:// | ||
- | Notre site est actuellement en maintenance. Merci de revenir plus tard. | ||
- | |||
- | |||
- | [root@centos7 ~]# | ||
- | </ | ||
- | |||
- | ===Interdire l' | ||
- | |||
- | Dans ce cas, vous avez constaté qu'un pirate vous crée problèmes et vous avez pu relever son adresse IP. Le but ici est donc de renvoyer ce pirate vers une page **aurevoir.html** créer spécialement pour l' | ||
- | |||
- | Commencez par créer la page **aurevoir.html** dans le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Editez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | AllowOverride All | ||
- | </ | ||
- | RewriteEngine on | ||
- | # | ||
- | RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.99$ | ||
- | RewriteCond %{REQUEST_URI} !^bye\.html | ||
- | RewriteRule .* /bye.html | ||
- | </ | ||
- | ... | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez bien que la règle precédente a été mise en commentaire. | ||
- | </ | ||
- | |||
- | Sauvegardez votre fichier puis rechargez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Testez ensuite votre configuration avec lynx : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump http:// | ||
- | Bye bye Pirate ! Ha! Ha! Ha! | ||
- | |||
- | |||
- | [root@centos7 ~]# | ||
- | </ | ||
- | |||
- | ===Indiquer un déplacement permenant=== | ||
- | |||
- | Dans ce cas, votre but est de rediriger les internautes de l' | ||
- | |||
- | Commencez par créer vos deux fichiers **oldpage.html** et **newpage.html** dans **/ | ||
- | |||
- | Le fichier **oldpage.html** est vide car son contenu a été déplacé à la **newpage.html** : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# touch / | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Editez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | AllowOverride All | ||
- | </ | ||
- | RewriteEngine on | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | RewriteRule ^/ | ||
- | </ | ||
- | ... | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez bien que les règles précédentes ont été mises en commentaires. | ||
- | </ | ||
- | |||
- | Sauvegardez votre fichier puis rechargez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Testez ensuite votre configuration avec lynx : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump http:// | ||
- | Exemple de DEPLACEMENT PERMENANT | ||
- | |||
- | |||
- | [root@centos7 ~]# | ||
- | </ | ||
- | |||
- | ===Indiquer qu'une ressource est indisponible=== | ||
- | |||
- | Au bout d'une certaine période, on peux considérer que les moteurs de recherche soient mis à jours avec notre changement vers la **newpage.html**. | ||
- | |||
- | Dans ce cas, nous allons donc tout simplement indiquer que l' | ||
- | |||
- | Editez ensuite le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | AllowOverride All | ||
- | </ | ||
- | RewriteEngine on | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | RewriteRule ^/ | ||
- | </ | ||
- | ... | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez bien que les règles précédentes ont été mises en commentaires. | ||
- | </ | ||
- | |||
- | Sauvegardez votre fichier puis rechargez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Testez ensuite votre configuration avec lynx : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump http:// | ||
- | Gone | ||
- | |||
- | The requested resource | ||
- | / | ||
- | is no longer available on this server and there is no forwarding | ||
- | | ||
- | </ | ||
- | |||
- | ===Directives de mod_rewrite=== | ||
- | |||
- | ==RewriteEngine== | ||
- | |||
- | // | ||
- | |||
- | Cette directive active ou désactive le moteur de réécriture. | ||
- | |||
- | ==RewriteOptions== | ||
- | |||
- | // | ||
- | |||
- | Cette directive définit deux options : | ||
- | |||
- | * Inherit | ||
- | * La configuration courante hérite de la configuration parente. Ceci peut être appliquer à un hôte virtuel ou un répertoire. | ||
- | |||
- | * %%MaxRedirects=nombre%% | ||
- | * //nombre// dont la valeur par défaut est de 10, permet de sortir d'une règle mal écrite au bout de //nombre// boucles. Dans ce cas le serveur sert une page HTTP 500 - Internal Server Error. | ||
- | |||
- | ==RewriteLog== | ||
- | |||
- | // | ||
- | |||
- | Cette directive consigne les activités de réécriture dans le fichier passé en argument. | ||
- | |||
- | ==RewriteLogLevel== | ||
- | |||
- | // | ||
- | |||
- | Cette directive définit le niveau de verbosité de 0 à 9 où 0 ne consigne rien et 9 consigne tout. En production la valeur ne devrait pas dépasser **2**, sauf en cas de débogage. | ||
- | |||
- | ==RewriteLock== | ||
- | |||
- | // | ||
- | |||
- | Cette directive désigne le fichier-verrou utilisé par mod_rewrite pour éviter des accès concurrentiels à des programmes et scripts définis par la directive **%%RewriteMap%%**. | ||
- | |||
- | ==RewriteMap== | ||
- | |||
- | // | ||
- | |||
- | Cette directive définit une table externe utilisée pour des réécritures. La règle de réécriture est écrite comme suit : | ||
- | |||
- | $ { table : clef : ValeurParDéfaut } | ||
- | |||
- | Lors de l' | ||
- | |||
- | La //table// peut être au format **texte brut**, au format **DBM** ou être un **binaire** ou un **script** : | ||
- | |||
- | * **txt: | ||
- | * La table contient une paire par ligne au format // | ||
- | * **dbm: | ||
- | * La table contient une paire par ligne au format // | ||
- | * **prg: | ||
- | * prg est un binaire ou un script. prg reçoit sur stdin la clef et retourne sur stdout la %%ValeurDeSubstitution%%. Si aucune correspondance n'est trouvée, prg retourne la chaîne //NULL// sur stdout. | ||
- | |||
- | Par exemple, nous souhaitons rediriger les URLs de format suivant **www.exampledomain.com/ | ||
- | |||
- | On commence par créer une table de correspondance : | ||
- | |||
- | < | ||
- | vi / | ||
- | |||
- | cat / | ||
- | product1234 travelbox_12 | ||
- | product1235 travelbox_13 | ||
- | product2310 case_07 | ||
- | product3126 case_12 | ||
- | product9320 anotheritem_54 | ||
- | ... | ||
- | </ | ||
- | |||
- | On crée une base de données avec l' | ||
- | |||
- | < | ||
- | httxt2dbm -f db -i / | ||
- | </ | ||
- | |||
- | puis on utilise les règles suivantes : | ||
- | |||
- | < | ||
- | RewriteEngine On | ||
- | RewriteMap rewrites dbm=db:/ | ||
- | RewriteCond {rewrites: | ||
- | RewriteRule ^/ | ||
- | </ | ||
- | |||
- | ==RewriteBase== | ||
- | |||
- | // | ||
- | |||
- | Cette directive indique l'URL de base pour les règles de réécriture incluses dans un fichier **.htaccess**. Dans ce cas, l' | ||
- | |||
- | ==RewriteCond== | ||
- | |||
- | // | ||
- | |||
- | La directive **%%RewriteCond%%** définit une condition d' | ||
- | |||
- | L' | ||
- | |||
- | * //La variable $N allant de **1** à **9** faisant référence à la règle de réécriture// | ||
- | * Cette variable permet de récupérer la valeur d'un sous-motif, après l' | ||
- | * //La variable %N allant de **1** à **9** faisant référence à la dernière condition remplie//. | ||
- | * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la dernière **%%RewriteCond%%** remplie du bloc actuel à condition que les sous-motifs soient entourés de parenthèses. | ||
- | * //Une variable serveur : // | ||
- | * En-têtes HTTP | ||
- | * HTTP_USER_AGENT | ||
- | * HTTP_REFERER | ||
- | * HTTP_COOKIE | ||
- | * HTTP_FORWARDED | ||
- | * HTTP_HOST | ||
- | * HTTP_PROXY_CONNECTION | ||
- | * HTTP_ACCEPT | ||
- | * Connexions et requêtes | ||
- | * REMOTE_ADDR | ||
- | * REMOTE_HOST | ||
- | * REMOTE_USER | ||
- | * REMOTE_IDENT | ||
- | * REQUEST_METHOD | ||
- | * SCRIPT_FILENAME | ||
- | * PATH_INFO | ||
- | * QUERY_STRING | ||
- | * AUTH_TYPE | ||
- | * Variables internes | ||
- | * DOCUMENT_ROOT | ||
- | * SERVER_ADMIN | ||
- | * SERVER_NAME | ||
- | * SERVER_PORT | ||
- | * SERVER_PROTOCAL | ||
- | * SERVER_SOFTWARE | ||
- | * SERVER_VERSION | ||
- | * Variables système | ||
- | * TIME_YEAR | ||
- | * TIME_MON | ||
- | * TIME_DAY | ||
- | * TIME_HOUR | ||
- | * TIME_MIN | ||
- | * TIME_SEC | ||
- | * TIME_WDAY | ||
- | * TIME | ||
- | * Variables spéciales | ||
- | * API_VERSION | ||
- | * THE_REQUEST | ||
- | * REQUEST_URI | ||
- | * REQUEST_FILE | ||
- | * NAME | ||
- | * IS_SUBREQ | ||
- | |||
- | |||
- | <WRAP center round todo> | ||
- | **A Faire** - Passez en revue les **variables serveur** en utilisant le **[[http:// | ||
- | </ | ||
- | |||
- | Le **motif** est soit une expression régulière : | ||
- | |||
- | ^Caractère spécial ^ Description ^ | ||
- | | %%^%% | Trouver la chaîne au début de la ligne | | ||
- | | $ | Trouver la chaîne à la fin de la ligne | | ||
- | | . | Trouver n' | ||
- | | * | Trouver 0 ou plus du caractère qui précède | | ||
- | | + | Trouver 1 ou plus du caractère qui précède | | ||
- | | \ | Annuler l' | ||
- | | [ ] | Trouver n' | ||
- | | [%%^%%] | Exclure les caractères entre crochets | | ||
- | | {a} | Trouver a occurrences de ce qui précède | | ||
- | | %%|%% | Trouver soit ce qui se trouve avant, soit ce qui se trouve après | | ||
- | | ( ) | Limiter la portée d'une alternative | | ||
- | |||
- | soit une expression : | ||
- | |||
- | ^Expression ^ Description ^ | ||
- | | <chaine | Vrai si chaineatester est lexicographiquement inférieur à chaine | | ||
- | | >chaine | Vrai si chaineatester est lexicographiquement supérieur à chaine | | ||
- | | =chaine | Vrai si chaineatester est lexicographiquement égal à chaine | | ||
- | | -d | Vrai si chaineatester est un répertoire qui existe | | ||
- | | -f | Vrai si chaineatester est un fichier normal qui existe | | ||
- | | -s | Vrai si chaineatester est un fichier normal non-vide qui existe | | ||
- | | -l | Vrai si chaineatester est un lien symbolique qui existe | | ||
- | | -F | Vrai si chaineatester est un fichier existant et accessible selon la configuration du serveur | | ||
- | | -F | Vrai si chaineatester est un URL existant et accessible selon la configuration du serveur | | ||
- | |||
- | Les **drapeaux** sont une liste de commutateurs séparés par des virgules et entourés de crochets. Voici une liste de commutateurs les plus utilisés : | ||
- | |||
- | ^Drapeaux ^ Description ^ | ||
- | | [NC] | Insensible à la casse | | ||
- | | [OR] | Permet de lier deux conditions **%%RewriteCond%%** par un **OU** | ||
- | |||
- | ==RewriteRule== | ||
- | |||
- | // | ||
- | |||
- | Cette directive définit la **règle de réécriture**. | ||
- | |||
- | Le **motif** est une expression régulière qui sera appliquée à l'URL courante. L'URL courante n'est pas nécessairement l'URL d' | ||
- | |||
- | La **substitution** est une chaîne qui remplacera l'URL qui correspond au **motif**. | ||
- | |||
- | Cette chaîne peut contenir des variables : | ||
- | |||
- | * //La variable $N allant de **1** à **9** faisant référence à la règle de réécriture// | ||
- | * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la règle courante à condition que les sous-motifs soient entourés de parenthèses. | ||
- | * //La variable %N allant de **1** à **9** faisant référence à la drective **%%RewriteCond%%** précédente// | ||
- | * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la dernière **%%RewriteCond%%** à condition que les sous-motifs soient entourés de parenthèses. | ||
- | * //Une variable serveur : // | ||
- | * En-têtes HTTP | ||
- | * HTTP_USER_AGENT | ||
- | * HTTP_REFERER | ||
- | * HTTP_COOKIE | ||
- | * HTTP_FORWARDED | ||
- | * HTTP_HOST | ||
- | * HTTP_PROXY_CONNECTION | ||
- | * HTTP_ACCEPT | ||
- | * Connexions et requêtes | ||
- | * REMOTE_ADDR | ||
- | * REMOTE_HOST | ||
- | * REMOTE_USER | ||
- | * REMOTE_IDENT | ||
- | * REQUEST_METHOD | ||
- | * SCRIPT_FILENAME | ||
- | * PATH_INFO | ||
- | * QUERY_STRING | ||
- | * AUTH_TYPE | ||
- | * Variables internes | ||
- | * DOCUMENT_ROOT | ||
- | * SERVER_ADMIN | ||
- | * SERVER_NAME | ||
- | * SERVER_PORT | ||
- | * SERVER_PROTOCAL | ||
- | * SERVER_SOFTWARE | ||
- | * SERVER_VERSION | ||
- | * Variables système | ||
- | * TIME_YEAR | ||
- | * TIME_MON | ||
- | * TIME_DAY | ||
- | * TIME_HOUR | ||
- | * TIME_MIN | ||
- | * TIME_SEC | ||
- | * TIME_WDAY | ||
- | * TIME | ||
- | * Variables spéciales | ||
- | * API_VERSION | ||
- | * THE_REQUEST | ||
- | * REQUEST_URI | ||
- | * REQUEST_FILE | ||
- | * NAME | ||
- | * IS_SUBREQ | ||
- | * Des appels à des fonctions **%%RewriteMap%%**. | ||
- | |||
- | Les **drapeaux** sont une liste de commutateurs séparés par des virgules et entourés de crochets. Voici une liste de commutateurs les plus utilisés : | ||
- | |||
- | ^Drapeaux ^ Description ^ | ||
- | | [R[=code]] | Force la redirection | | ||
- | | [F] | L'URL sera interdit ( Erreur 403 ) | | ||
- | | [G] | L'URL sera marqué comme déménagé ( Erreur 410 ) | | ||
- | | [P] | Force la redirection à passer par le proxy d' | ||
- | | [L] | Arrête le traitement de réécriture | | ||
- | | [C] | Force un chaînage avec la règle suivante | | ||
- | | [N] | Force un traitement en boucle de la règle de réécriture | | ||
- | | [NC] | Insensible à la casse | | ||
- | |||
- | Dernièrement il existe une expression de substitution spéciale définie par **-**. Dans ce cas, il n'y a **pas** de substitution. | ||
- | |||
- | <WRAP center round todo> | ||
- | Consultez la **[[http:// | ||
- | </ | ||
- | |||
- | ====LAB #13 - Personnalisation des en-têtes de requêtes et de réponses HTTP avec mod_header==== | ||
- | |||
- | **HSTS** ou **HTTP Strict Transport Security** est une caractéristique de sécurité qui permet à un site web d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cat / | ||
- | LoadModule headers_module modules/ | ||
- | </ | ||
- | |||
- | Pour mettre en place cette notification, | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | # | ||
- | # When we also provide SSL we have to listen to the | ||
- | # the HTTPS port in addition. | ||
- | # | ||
- | Listen 443 https | ||
- | Header always set Strict-Transport-Security " | ||
- | |||
- | ## | ||
- | ... | ||
- | </ | ||
- | |||
- | Dans ce cas, l' | ||
- | |||
- | Pour forcer les navigateurs à connecter en https, il convient d' | ||
- | |||
- | < | ||
- | ... | ||
- | ################# | ||
- | NameVirtualHost *:80 | ||
- | ################## | ||
- | < | ||
- | VirtualDocumentRoot / | ||
- | ServerName i2tch.loc | ||
- | ServerAlias *.i2tch.loc | ||
- | ServerAdmin webmaster@localhost | ||
- | LogLevel info | ||
- | < | ||
- | Options FollowSymLinks | ||
- | AllowOverride All | ||
- | Require all granted | ||
- | </ | ||
- | RewriteEngine on | ||
- | RewriteCond %{HTTPS} off | ||
- | RewriteRule (.*) https:// | ||
- | </ | ||
- | ################## | ||
- | ... | ||
- | </ | ||
- | |||
- | Rechargez la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl reload httpd | ||
- | </ | ||
- | |||
- | Testez ensuite avec un navigateur le lien **[[http:// | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx --dump http:// | ||
- | |||
- | Looking up i2tch.loc | ||
- | Making HTTP connection to i2tch.loc | ||
- | Sending HTTP request. | ||
- | HTTP request sent; waiting for response. | ||
- | HTTP/1.1 302 Found | ||
- | Data transfer complete | ||
- | HTTP/1.1 302 Found | ||
- | Using https:// | ||
- | Looking up i2tch.loc | ||
- | Making HTTPS connection to i2tch.loc | ||
- | SSL callback: | ||
- | Retrying connection without TLS. | ||
- | Looking up i2tch.loc | ||
- | Making HTTPS connection to i2tch.loc | ||
- | Alert!: Unable to make secure connection to remote host. | ||
- | |||
- | lynx: Can't access startfile http:// | ||
- | </ | ||
- | |||
- | Revenez à la configuration d' | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# vi / | ||
- | [root@centos7 cgi-bin]# cat / | ||
- | # | ||
- | # When we also provide SSL we have to listen to the | ||
- | # the HTTPS port in addition. | ||
- | # | ||
- | Listen 443 https | ||
- | # Header always set Strict-Transport-Security " | ||
- | ... | ||
- | </ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | ################# | ||
- | < | ||
- | DocumentRoot /www/site2 | ||
- | ServerName www.rhelip.com | ||
- | DirectoryIndex index.html | ||
- | Customlog / | ||
- | Errorlog / | ||
- | < | ||
- | Require all granted | ||
- | AllowOverride All | ||
- | </ | ||
- | RewriteEngine on | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | RewriteRule ^/ | ||
- | </ | ||
- | ################# | ||
- | NameVirtualHost *:80 | ||
- | ################## | ||
- | < | ||
- | VirtualDocumentRoot / | ||
- | ServerName i2tch.loc | ||
- | ServerAlias *.i2tch.loc | ||
- | ServerAdmin webmaster@localhost | ||
- | LogLevel info | ||
- | < | ||
- | Options FollowSymLinks | ||
- | AllowOverride All | ||
- | Require all granted | ||
- | </ | ||
- | # | ||
- | # | ||
- | # | ||
- | </ | ||
- | ################## | ||
- | < | ||
- | --More-- | ||
- | </ | ||
- | |||
- | Dernièrement, | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | ====LAB #14 - L' | ||
- | |||
- | Le mod_suexec introduit un contrôle plus sévère en ce qui concerne quels comptes peuvent exécuter de CGI. | ||
- | |||
- | Naviguez au répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# cd / | ||
- | </ | ||
- | |||
- | Créez un script bash appelé **whoami.cgi** : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# vi / | ||
- | [root@centos7 cgi-bin]# cat / | ||
- | #!/bin/bash | ||
- | echo " | ||
- | echo "" | ||
- | echo "Nom de connexion :" `whoami` | ||
- | </ | ||
- | |||
- | Le but de ce script est de montrer qui exécute le CGI en question. | ||
- | |||
- | Rendez le script exécutable : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# chmod u+x whoami.cgi | ||
- | </ | ||
- | |||
- | Appelez le script CGI : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# lynx --dump http:// | ||
- | | ||
- | |||
- | The server encountered an internal error or misconfiguration and was | ||
- | | ||
- | |||
- | | ||
- | them of the time this error occurred, and the actions you performed | ||
- | just before this error. | ||
- | |||
- | More information about this error may be available in the server error | ||
- | log. | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Notez que l' | ||
- | </ | ||
- | |||
- | Regardez dans le fichier de journalisation **/ | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# tail / | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 00: | ||
- | [Mon Sep 03 01: | ||
- | [Mon Sep 03 01: | ||
- | </ | ||
- | |||
- | En effet, le fichier whoami.cgi apprtient à root : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# ls -l | ||
- | total 12 | ||
- | -rwxr-xr-x. 1 root root 32 Sep 2 16:14 php56.fcgi | ||
- | -rwxr-xr-x. 1 root root 32 Sep 2 16:14 php72.fcgi | ||
- | -rwxr--r--. 1 root root 87 Sep 3 01:00 whoami.cgi | ||
- | </ | ||
- | |||
- | Modifiez donc le propriétaire et le groupe à **apache** : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# chown apache: | ||
- | </ | ||
- | |||
- | Appelez le script CGI : | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# lynx --dump http:// | ||
- | Nom de connexion : apache | ||
- | |||
- | [root@centos7 cgi-bin]# | ||
- | </ | ||
- | |||
- | Vous allez maintenant créer un utilisateur spécifique pour l' | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# useradd scripts | ||
- | </ | ||
- | |||
- | Créez le répertoire **/ | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# mkdir / | ||
- | </ | ||
- | |||
- | Modifiez le propriétaire, | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# chown scripts: | ||
- | [root@centos7 cgi-bin]# chmod 2755 / | ||
- | </ | ||
- | |||
- | Déplacez le script vers **/ | ||
- | |||
- | < | ||
- | [root@centos7 cgi-bin]# mv whoami.cgi / | ||
- | [root@centos7 cgi-bin]# cd !$ | ||
- | cd / | ||
- | [root@centos7 scripts]# ls -l | ||
- | total 4 | ||
- | -rwxr--r--. 1 apache apache 87 Sep 3 01:00 whoami.cgi | ||
- | </ | ||
- | |||
- | Editez le fichier **/ | ||
- | |||
- | < | ||
- | ... | ||
- | ServerRoot "/ | ||
- | SuexecUserGroup scripts scripts | ||
- | ... | ||
- | </ | ||
- | |||
- | Vérifiez que la ligne suivante existe dans le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 scripts]# cat / | ||
- | LoadModule suexec_module modules/ | ||
- | </ | ||
- | |||
- | Ajoutez l' | ||
- | |||
- | < | ||
- | ... | ||
- | # | ||
- | # "/ | ||
- | # CGI directory exists, if you have that configured. | ||
- | # | ||
- | < | ||
- | AllowOverride None | ||
- | Options None | ||
- | Require all granted | ||
- | </ | ||
- | Alias /scripts/ "/ | ||
- | < | ||
- | Options +ExecCGI | ||
- | SetHandler cgi-script | ||
- | </ | ||
- | |||
- | < | ||
- | ... | ||
- | </ | ||
- | |||
- | Sauvegardez et vérifiez votre fichier de configuration : | ||
- | |||
- | < | ||
- | [root@centos7 scripts]# httpd -t | ||
- | [Mon Sep 03 01: | ||
- | AH00548: NameVirtualHost has no effect and will be removed in the next release / | ||
- | Syntax OK | ||
- | </ | ||
- | |||
- | Re-démarrez le serveur apache : | ||
- | |||
- | < | ||
- | [root@centos7 scripts]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | Modifiez donc le propriétaire et groupe du script : | ||
- | |||
- | < | ||
- | [root@centos6 scripts]# chown scripts: | ||
- | </ | ||
- | |||
- | Appelez le script dans le répertoire **scripts** : | ||
- | |||
- | < | ||
- | [root@centos7 scripts]# lynx --dump http:// | ||
- | Nom de connexion : scripts | ||
- | |||
- | [root@centos7 scripts]# | ||
- | </ | ||
- | |||
- | ====LAB #15 - Améliorer l' | ||
- | |||
- | Le module MPM worker utilise moins de mémoire que le module prefork pour le même nombre de connexions. | ||
- | |||
- | Ajoutez la section suivante au fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# more / | ||
- | ServerTokens OS | ||
- | Timeout 60 | ||
- | KeepAlive Off | ||
- | MaxKeepAliveRequests 100 | ||
- | KeepAliveTimeout 15 | ||
- | < | ||
- | StartServers | ||
- | MinSpareServers | ||
- | MaxSpareServers | ||
- | ServerLimit | ||
- | MaxClients | ||
- | MaxRequestsPerChild | ||
- | </ | ||
- | < | ||
- | ServerLimit | ||
- | StartServers | ||
- | MinSpareThreads | ||
- | MaxSpareThreads | ||
- | ThreadLimit | ||
- | ThreadsPerChild | ||
- | MaxClients | ||
- | MaxRequestsPerChild | ||
- | </ | ||
- | --More--(22%) | ||
- | </ | ||
- | |||
- | <WRAP center round todo> | ||
- | **A faire** - Voir la page **[[https:// | ||
- | </ | ||
- | |||
- | Ouvrez maintenant le fichier **/ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# vi / | ||
- | [root@centos7 ~]# cat / | ||
- | # Select the MPM module which should be used by uncommenting exactly | ||
- | # one of the following LoadModule lines: | ||
- | |||
- | # prefork MPM: Implements a non-threaded, | ||
- | # See: http:// | ||
- | #LoadModule mpm_prefork_module modules/ | ||
- | |||
- | # worker MPM: Multi-Processing Module implementing a hybrid | ||
- | # multi-threaded multi-process web server | ||
- | # See: http:// | ||
- | # | ||
- | LoadModule mpm_worker_module modules/ | ||
- | |||
- | # event MPM: A variant of the worker MPM with the goal of consuming | ||
- | # threads only for connections with active processing | ||
- | # See: http:// | ||
- | # | ||
- | #LoadModule mpm_event_module modules/ | ||
- | </ | ||
- | |||
- | <WRAP center round important> | ||
- | **Important** - Le MPM Worker n'est pas comptible avec PHP. | ||
- | </ | ||
- | |||
- | Redémarrez ensuite apache : | ||
- | |||
- | < | ||
- | [root@centos7 ~]# systemctl restart httpd | ||
- | </ | ||
- | |||
- | Consultez les adresses [[http:// | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx http:// | ||
- | Apache Status (p1 of 2) | ||
- | | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | Total accesses: 0 - Total Traffic: 0 kB | ||
- | CPU Usage: u0 s0 cu0 cs0 | ||
- | 0 requests/ | ||
- | 1 requests currently being processed, 223 idle workers | ||
- | |||
- | ................................________________________________ | ||
- | ________________________________________________________________ | ||
- | ____________________________________________________W___________ | ||
- | ................................................................ | ||
- | ________________________________________________________________ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................................................ | ||
- | ................................ | ||
- | |||
- | | ||
- | " | ||
- | " | ||
- | " | ||
- | ... | ||
- | </ | ||
- | |||
- | < | ||
- | [root@centos7 ~]# lynx http:// | ||
- | Server Information (p1 of 59) | ||
- | Apache Server Information | ||
- | |||
- | | ||
- | Configuration Files, Server Settings, Module List, Active Hooks, Available Providers | ||
- | | ||
- | |||
- | | ||
- | Loaded Modules, Server Settings, Startup Hooks, Request Hooks, Other Hooks, Providers | ||
- | | ||
- | |||
- | Loaded Modules | ||
- | |||
- | | ||
- | mod_authn_core.c, | ||
- | mod_authz_dbm.c, | ||
- | mod_cgid.c, mod_data.c, mod_dav.c, mod_dav_fs.c, | ||
- | mod_ext_filter.c, | ||
- | mod_lbmethod_heartbeat.c, | ||
- | mod_proxy_balancer.c, | ||
- | mod_proxy_scgi.c, | ||
- | mod_so.c, mod_socache_dbm.c, | ||
- | mod_unique_id.c, | ||
- | | ||
- | |||
- | Server Settings | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | MPM Name: worker | ||
- | ... | ||
- | </ | ||
- | |||
- | |||
- | ----- | ||
- | < | ||
- | <DIV ALIGN=" | ||
- | Copyright © 2004-2018 Hugh Norris. | ||
- | </ | ||
- | </ | ||
- |