002 : Site Web Local apache2/bind9

Apache2 est un server web populaire qui permet de publier des sites via le protocole HTTP(S).

Bind9 est un server DNS (domaine name system) grâce au protocole TCP/IP il permet la correspondance entre nom de domaine et adresse IP.

Nous allons dans ce TP installer bind9 et apache2 et les configurer de manière à obtenir une page web html avec un nom de domaine associer sur notre machine locale.

Commençons par installer apache2 apt install apache2
Ensuite bind9 apt install bind9 dnsutils dnsutils permet de fournir des outils pour tester et debugger le service dns.
Une fois bind9 installer sur votre machine verifié son statut en tapant la commande systemctl status bind9

pour commencer rendez-vous dans le répertoire /etc/bind/ et ouvrez le fichier named.conf.local puis remplissez le fichier de la manière suivante à votre convenance.



Puis ouvrez le fichier db.local aprés l'avoir copié de manière à conserver une copie du fichier original.cp db.local db.votrenomdedomaine

ouvrez et remplissez le fichier de la manière suivante.



127.0.0.1 est l'adresse de boucle local donc correspond à votre machine peu importe votre adresse IP

La prochaine étapes correspond à une vérification des deux fichiers édités précédemment, nous allons donc taper la commande suivante afin de voir si il n'y a pas d'erreur de configuration.

named-checkconf puis named-checkzone www.votredomaine /etc/bind/db.votredomaine

si tout c'est bien passer nous passons à la suite sinon vérifier la syntaxe de vos fichiers et refaites le test.

Pour la suite nous devons nous deplacer dans le répértoire /var/www/html et crée un répertoire qui contiendra vôtre site en relation au nom de domaine que vous avez choisie.

mkdir /var/www/html/nomdevotrerepertoire

déplacez vous dans ce nouveau repertoire et créer un fichier index.html à l'interieur duquel vous pouvez mettre un petit mot pour tester si tout c'est bien passer exemple "bonjour bienvenu sur mon site !".

Maintenant allons dans le répertoire /etc/apache2/sites-available/ et faire une copie du fichier original cp 000-default.conf votredomaine.conf

Ouvrez le fichier et configurez le ainsi. Dans l'exemple ci-dessous les fichiers de log ont été volontairement effacer.



maintenant nous allons activé notre page web grace a la commandea2ensite votredomaine.

Redemarrer le service apache2 systemctl restart apache2

Ouvrez maintenant votre naviguateur web et tappez l'adresse du nom de domaine que vous avez choisie vous devriez tomber sur votre page index.html et voir le petit mot laisser précédemment.



Voici un script réaliser par mes soins permettant d'automatiser la creation et le deployement d'un site local à executer en root en donnant les droit d'execution au fichier.

         #! /bin/bash

         #saisir le nouveau nom de domaine en .com
         echo "saisir un nom de domaine en .com : "; read domaine;

         # verification de l'existance du domaine
         if [ -f /etc/bind/db.$domaine ]
         then
         	echo "Nom de domaine déja existant patate douce..."
         else
         #creation zone fichier named.conf.local
         	echo "
         		zone \"www.$domaine\"{
         			type master;
         			file\"/etc/bind/db.$domaine\";
         		};" >> /etc/bind/named.conf.local

         #insertion date du jour en variable dans fichier db.domaine en place du serial
         	ddj=$(date +%Y%m%d)

         #insertion valeur $ttl... cause $ qui pause probleme pour insertion d'un bloc
         	echo '$TTL 604800' >/etc/bind/db.$domaine

         #insertion du reste du fichier dan etc/bind/db.$domaine
         	echo "
         @	IN	SOA	www.$domaine. root.localhost. (
         			$ddj		; Serial
         			 604800		; Refresh
         			  86400		; Retry
         			2419200		; Expire
         			 604800 )	; Negative Cache TTL
         ;
         @	IN	NS	$domaine.
         @	IN	A	127.0.0.1
         www	IN	A	127.0.0.1" >> /etc/bind/db.$domaine


         	service bind9 restart 2>/dev/null
         	sleep 5
         	named-checkconf
         	named-checkzone www.$domaine /etc/bind/db.$domaine

         #creation du dossier domaine
         	mkdir /var/www/html/$domaine

         #index.html personaliser
         	echo "salut ! bienvenue sur www.$domaine" > /var/www/html/$domaine/index.html

         #creation du fichier $domaine.conf dans sites-available
         	echo "
         
         ServerAdmin webmaster@localhost
         ServerName www.$domaine
         DocumentRoot /var/www/html/$domaine
         " > /etc/apache2/sites-available/$domaine.conf

         	sleep 5

         #activation du site available en enable
         	a2ensite $domaine

         #restart du serveur apache2
         	service apache2 restart
         #fin de la condition else
         fi

         #creation d' un fichier cacher si reponse +
         echo " Souhaitez-vous crée un fichier caché ? repondre O pour oui ou N pour non : "
         read reponse;
         if [[ $reponse = "O" ]]
         then
         	mkdir /var/www/html/$domaine/dossier
         	echo "
         Authuserfile /var/www/html/$domaine/dossier/.htpasswd
         Authname \"access denied\"
         Authtype basic
         require valid-user" > /var/www/html/$domaine/dossier/.htaccess
         	echo "votre login est votre nom de domaine en .com "
         	sleep 5
         	echo "entrez votre mdp : "
         	htpasswd -d -c .htpasswd $domaine

         	mv .htpasswd ./ /var/www/html/$domaine/dossier 2>/dev/null
         		echo "
         
         ServerAdmin webmaster@localhost
         ServerName www.$domaine
         DocumentRoot /var/www/html/$domaine
         
         options indexes followsymlinks multiviews
         allowoverride authconfig
         require all granted
         
         " > /etc/apache2/sites-available/$domaine.conf

         sleep 2
         systemctl restart apache2

         else
         	echo " ok ma poule "
         fi
       


Voici l'execution du script :



Si le site existe déja et que l'on ne veux pas crée de dossier cacher.