OpenClassrooms P4 - Infra 3 tiers web, bdd et dns # Debian 12 Installer Debian sans GUI. 3 serveurs sont requis pour chaque composant de notre 3 tiers, 1 vm sera possiblement utile avec interface pour montrer que ça fonctionne. ## Serveur DNS ### Paquets requis - bind9 - dns-utils ### Resolv.conf Il est possible que le fichier `/etc/resolv.conf` soit "link", lié à un autre fichier. On peut vérifier ça en lisant les premières lignes du fichier et en regardant avec `ls -lisah /etc/resolv.conf`. Si le fichier est lié, il faudra alors le supprimer puis l'éditer à nouveau (`rm /etc/resolv.conf && vi /etc/resolv.conf`). Contenu : ``` nameserver 198.19.249.98 search beesafe.co ``` ### Bind9 #### DNS forwarders Requis pour garder des DNS fonctionnels. Si Bind9 ne connaît pas ce qu'on demande (par exemple Google.com), il va renvoyer sur un serveur DNS indiqué en forwarder. Edition de `/etc/bind/named.conf.options` ``` options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 1.1.1.1; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; listen-on-v6 { any; }; }; ``` #### Déclaration de la zone Edition de `/etc/bind/named.conf.local` ``` zone "beesafe.co" { type master; file "/etc/bind/db.beesafe.co"; }; ``` #### Contenue de la zone Copie de `/etc/bind/db.empty` vers `/etc/bind/db.beesafe.co` Contenue de `/etc/bind/db.beesafe.co` : ``` ; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA ns1.beesafe.co. contact.besafe.co. ( 2023112802 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1 ns1 IN A 198.19.249.98 dns IN A 198.19.249.98 web IN A 198.19.249.159 bdd IN A 198.19.249.246 www IN CNAME web ``` #### Test - `ping www.beesafe.co` (ou nslookup) doit retourner les infos attendues ## Serveur Web ### Paquets requis - libapache2-mod-php8.2 - git - curl ### Resolv.conf Il est possible que le fichier `/etc/resolv.conf` soit "link", lié à un autre fichier. On peut vérifier ça en lisant les premières lignes du fichier et en regardant avec `ls -lisah /etc/resolv.conf`. Si le fichier est lié, il faudra alors le supprimer puis l'éditer à nouveau (`rm /etc/resolv.conf && vi /etc/resolv.conf`). Contenu : ``` nameserver 198.19.249.98 search beesafe.co ``` ### Apache2 On copie `/etc/apache2/sites-available/000-default.conf` vers `/etc/apache2/sites-available/beesafe.co.conf` puis on l'édite : ``` <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerName www.beesafe.co ServerAdmin webmaster@beesafe.co DocumentRoot /var/www/html/beesafe.co # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> ``` Ensuite `a2ensite beesafe.co.conf` puis `systemctl reload apache2`. ### Site web On utilise Git pour cloner le projet localement dans `/var/www/html/beesafe.co` avec `git clone https://github.com/OpenClassrooms-Student-Center/ASR-P4-BeeSafe.git` Puis on peut tester avec curl ou un navigateur web sur une machine qui peut utiliser notre DNS : `curl www.beesafe.co`.