Aujourd’hui, nous allons voir comment héberger un nouveau domaine sur le serveur, en simplifiant au maximum les procédures.
Le nom de domaine sera réservé chez OVH et le site hébergé sur notre serveur Debian. Nous allons servir le site avec NginX en HTTPS grâce à un certificat SSL fourni gratuitement par Let’s Encrypt.
Enfin, on utilisera le serveur email existant et on ajoutera la configuration OpenDKIM pour signer et authentifier tous les emails sortants du domaine.
Nom de domaine
J’achète mes noms de domaine chez OVH parce que le prix est relativement raisonnable (comparé à mon ancien registrar).
Au moment de la commande, faites pointer le nouveau domaine vers les DNS du serveur.
Si votre serveur n’est pas chez OVH, il suffit d’aller dans Domaines > Serveurs DNS et de renseigner le DNS primaire et secondaire de votre serveur.
Configuration DNS dans BIND
Une fois le domaine commandé, si vous vous rendez dans le Manager OVH, vous vous rendrez compte que le bouton DNS est en rouge : c’est normal puisqu’il nous faut paramétrer notre nouveau domaine dans BIND, notre serveur de noms.
On édite la configuration de BIND :
nano /etc/bind/named.conf.local
et on lui indique que nous créons une nouvelle zone :
zone "example.com" {
type master;
file "/etc/bind/example.com.hosts";
allow-query { any; };
};
Code language: JavaScript (javascript)
On crée maintenant notre fichier de zone:
nano /etc/bind/example.com.hosts
$ttl 84600
$ORIGIN example.com.
@ IN SOA XXXXXX.kimsufi.com. root.example.net. (
2018012801
14400
3600
604800
84600 )
; NAMESERVERS
IN NS XXXXXX.kimsufi.com.
IN NS ns.kimsufi.com.
example.com. IN A XXX.XXX.XXX.XXX
example.com. IN AAAA 4001:41d0:1:4462::1
example.com. IN MX 10 mail.example.net.
www.example.com. IN A XXX.XXX.XXX.XXX
www.example.com. IN AAAA 4001:41d0:1:4462::1
www IN A XXX.XXX.XXX.XXX
Code language: PHP (php)
Ps: example.net est le domaine principal du serveur.
Pous vérifions la configuration BIND:
named-checkconf -z
et nous redémarrons BIND pour prendre en compte nos changements et activer notre nouveau fichier de zone:
service bind9 restart
Vous pouvez vérifier votre configuration DNS à l’aide de l’outil ZoneMaster.
Configuration du bloc serveur sous NginX
On commence par créer le répertoire qui va accueillir les fichiers du site et on lui attribue les bons droits:
mkdir -p /home/example/public_html
chown -R www-data:www-data /home/example/public_html
chmod 755 /home/example/public_html
On crée également un fichier index.php
à la racine du site pour éviter une erreur 403 plus tard lors de la génération du certificat SSL :
echo "<!--?php echo 'hello world. Domain activated.'; ?-->" >> /home/example/public_html/index.php
Code language: HTML, XML (xml)
On crée maintenant le répertoire de cache du site, toujours avec les bons droits:
mkdir -p /home/nginx-cache/example
chown -R www-data:www-data /home/nginx-cache/example
chmod 755 /home/nginx-cache/example
Voici le server block de départ, en HTTP simple :
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
#return 301 https://$server_name$request_uri;
root /home/example/public_html;
index index.php index.html;
}
Code language: PHP (php)
On active le site :
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
On teste la configuration de NginX et on redémarre le service:
nginx -t
service nginx restart
On crée maintenant le certificat SSL avec Let’s Encrypt :
certbot certonly --webroot -w /home/example/public_html -d example.com -d www.example.com