
L’idée de ce tutorial, c’est de mettre en place une architecture de preprod… mais la preprod, késako ???
Alors pour faire simple, c’est de la pré-production. C’est à dire que si un client me demande de lui réaliser un site web, je peux l’installer sur mon serveur dans un répertoire et avoir un truc du genre :
https://www.ts-services.ovh/preprod/monclient1
et pour un autre client :
https://www.ts-services.ovh/preprod/monclient2
Alors comme ça me direz vous, “oui, et alors” ? Alors le “souci” c’est que plus tard quand j’installerai le site chez mon client sur sa propre URL du site https://www.sitedemonclient.com, j’aurais des soucis… notamment à cause de l’URI (/preprod/monclient1) car la plupart du temps, si je fais des liens du style /monlien.php, en preprod, ça voudra dire https://www.ts-services.ovh/monlien.php, alors qu’en fait, je voulais dire https://www.ts-services.ovh/preprod/monclient1/monlien.php… donc, il va falloir que je me prenne le chou pour qualifier correctement les URLs alors que si “simplement”, je faisait un sous-domaine du style https://monclient1.ts-services.ovh, il suffira “juste” de remplacer le nom de domaine pour la prod.
Ouais, mais là, on va commencer à toucher à des virtual hosts & ça peut faire peur… et prendre du temps car ça veut dire qu’à chaque nouveau site, il faudra refaire un virtual host, le binder sur le bon répertoire et tout et tout.
Et bien non !! Avec nginx, je vais mettre en place un virtual host générique.
L’idée est simplement de me faire un répertoire “racine” qui contiendra l’ensemble de mes sites de preprod (ex : /var/www/preprod).
Puis, il suffira de mapper exactement le nom du sous-domaine avec le répertoire :
- https://monclient1.ts-services.ovh sera hosté sur /var/www/preprod/monclient1
- https://monautreclient.ts-services.ovh sera hosté sur /var/www/preprod/monautreclient
Donc en d’autres termes, il suffit d’expliquer à nginx via du pattern matching (expression régulière) qu’il associe le sous-domaine au répertoire.
Je crée le fichier /etc/nginx/conf.d/preprod.conf :
[code lang=”yml”]server {
# On écoute le port 80.
listen 80;
# On va utiliser une expression régulière
# pour récupérer le sous-domaine dans une variable nommée "sub".
server_name ~^(?P<sub>.+)\.ts-services\.ovh$;
root /var/www/preprod/$sub;
index index.php index.html;
autoindex off;
location / {
try_files $uri $uri/ /index.php;
}
# Cf. mon autre billet sur l’utilisation de php-fpm
location ~\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+?\.php)(/.+)$;
fastcgi_pass php-fpm-sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
[/code]
Et voilà ! Il me suffira maintenant de créer le sous-domaine (pas de propagation DNS à prévoir) ainsi que le répertoire correspondant pour commencer ma préprod pour mon client.
[…] février 4, 2018 by laetomPrevNext […]