Virtual hosting

Résolu/Fermé
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 16 avril 2018 à 00:15
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 - 18 avril 2018 à 00:37
Bonjour,

j'ai déjà installé plusieurs fois des distributions Debian sur mon ordinateur par des net-install. A la fin de l'installation tous les serveurs (web, mysql, smtp, etc.) étaient opérationnels. Mais tout avait été fait en même temps.

Là, je viens d'acquérir un hébergement de type VPS sur lequel je peux installer l'un des OS proposés. J'ai choisi Debian 8. A la fin de l'installation, j'ai pu constater que le résultat obtenu est conforme à ce qui était annoncé, c'est à dire une distribution dite 'nue' (juste l'OS sans les serveurs). C'est à moi de faire l'installation des serveurs que je souhaite mettre en place.

Mon objectif avec cet hébergement est de pouvoir supporter plusieurs sites web utilisant PHP et MySQL (je ne conçois que difficilement un site web dans ces deux derniers). MySQL a eté installé avec un 'apt-get install mysql', Apache2 et PHP respectivement par 'apt-get install apache2' et 'apt-get install php5'. PHP fonctionne ainsi que les serveurs web et mysql mais la racine des documents web est /var/www/. Par ailleurs, j'ai un autre hébergement (mais avec interface Plesk) où tout est prêt pour de multiples sites web et ceux-ci se trouvent en :
- /var/www/vhosts/domaine1.tld/httpdocs
- /var/www/vhosts/domaine2.tld/httpdocs
- /var/www/vhosts/domaine3.tld/httpdocs
- etc.
J'en conclus que je dois installer un paquet pour du virtual hosting mais je ne connais pas son nom. un 'apt-cache search vhost' m'a permis de trouver "gforge-web-apache2-vhosts - collaborative development tool - web vhosts (using Apache)" mais je ne sais pas si c'est le bon paquet.

Ma question est la suivante : Quel paquet dois-je intaller pour du virtual hosting et dans quel ordre dois-je installer ceux-ci (mysql, php5, apache2, php5-mysql, paquet-pour-virtual-hosting) pour éviter d'éventuels problèmes de configuration ?

Merci beaucoup pour votre aide


A voir également:

1 réponse

avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
Modifié le 16 avril 2018 à 01:51
Bonjour,

Apache gère l'hébergement le "virtual hosting" nativement, sans module.

Les hôtes virtuels se définissent dans la configuration de Apache, quelle que soit la méthode choisie pour installer Apache et les autres composants (apt-get, net-install, ...).

Sous Debian et Ubuntu, on crée généralement un fichier « .conf » par hôte virtuel dans le dossier /etc/apache2/sites-available/
Par exemple :
- monsite1.com et www.monsite1.com => /etc/apache2/sites-available/monsite1.com.conf
- admin.monsite1.com => /etc/apache2/sites-available/admin.monsite1.com.conf
- monsite2.com => /etc/apache2/sites-available/monsite2.com.conf

Pourquoi mettre monsite1.com et www.monsite1.com dans le même fichier de .conf, mais placer admin.monsite1.com dans un autre fichier .conf ?

Car tu ne peux définir qu'un seul dossier racine (DocumentRoot) par VirtualHost.

Je te conseille de placer tous les domaines et sous-domaines pointant vers le même dossier dans le même fichier .conf.
Il faudra définir le nom principal (domaine / sous-domaine) avec la directive ServerName et les autres domaines / sous-domaines avec ServerAlias.
Il n'y a pas toujours un nom qui est "plus principal" qu'un autre mais il faudra faire un choix.


Exemple : monsite1.com, www.monsite1.com et secure.monsite1.com doivent pointer vers le même dossier car ils doivent afficher le même site, mais seul secure.monsite1.com dispose d'un SSL valide.

Dans ce cas, le fichier /etc/apache2/sites-available/monsite1.com.conf ressemblera à :

<VirtualHost *:80>
ServerName monsite1.com
ServerAlias www.monsite1.com secure.monsite1.com

DocumentRoot /home/user1/vhosts/monsite1.com/

# ...
</VirtualHost>



Cette "fusion" de tous les domaines / sous-domaines associés au même DocumentRoot dans le même fichier .conf n'est pas une obligation, tu peux aussi placer chaque nom en tant que ServerName dans un VirtualHost séparé.

Tu peux aussi placer plusieurs VirtualHost dans un même fichier .conf.
C'est assez flexible, mais ces .conf devront être activés individuellement (voir paragraphe suivant).
En plaçant plusieurs VirtualHost dans un même .conf, tu pourras activer/désactiver tous ces VirtualHost simultanément et uniquement.

L'activation d'un fichier "sites-available/*.conf" se fait à l'aide de la commande a2ensite. Celle-ci crée un lien symbolique dans "sites-enabled". Apache charge tous les fichiers dans "sites-enabled" par inclusion depuis le fichier principal. Les fichiers dans "sites-available" sont ignorés. L'ordre du nom des fichiers peut avoir de l'importance. L'opération inverse fait appel à la commande a2dissite.

Pour plus d'informations :
http://httpd.apache.org/docs/current/vhosts/
http://httpd.apache.org/docs/current/vhosts/name-based.html
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-debian-8
1
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
Modifié le 16 avril 2018 à 16:07
Tout d'abord merci infiniment pour cette réponse riche, détaillée et constructive, donc efficace.
Je vais détailler les fichiers .conf du VPS qui contient déjà plusieurs sites pour bien intégrer ce que tu viens de m'expliquer et j'essayerai de configurer ça sur le VPS en cours de configuration. Je ne ferme donc pas ce fil de suite mais très prochainement quand j'aurai effectué mes tests que j'espère concluants.
En tout cas, encore une fois merci. Bonne journée.
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
17 avril 2018 à 18:43
Alors, encore une fois merci. J'ai suivi tes indications.

Au départ DocumentRoot était en /var/www/html (appelé à disparaître)

J'ai créé les répertoires différents pour deux domaines :
- /var/www/vhosts/domaine1.fr/httpdocs
- /var/www/vhosts/domaine2.fr/httpdocs

Dans ces deux répertoires j'ai créé des pages index différentes mentionnant l'endroit l'on était (sur le site de tel somaine)

J'ai ensuite créé les fichiers de configuration d'hôtes virtuels a minima pour ces deux domaines :
- /etc/apache2/sites-available/domaine1.fr.conf
- /etc/apache2/sites-available/domaine2.fr.conf

Puis, j'ai relancé le serveur apache2 après avoir validé les hôtes virtuels par la commande a2ensite (voulant dire, je suppose : apache2-enable-site).

Mes noms de domaines ont été acquis chez GANDI. Je suis allé dans mon compte GANDI et pour chacun de ces deux domaines j'ai modifié les DNS pour les faire pointer tous les deux sur la même adresse IP, celle de mon hébergement. Attente d'une demi-heure/trois-quarts d'heure environ (temps de propagation des données des DNS sur Internet).

Tests à partir de plusieurs navigateurs (PC et smartphones). On arrive sur le même hébergement à l'endroit qui correspond bien à l'URL indiquée. Tout va donc très bien, le plus dur est fait (s'approprier la mécanique). Merci encore.

Il me reste à peaufiner les fichiers de configuration domaine1.fr.conf et domaine2.fr.conf

En effet, pour la suite et comme ça va évoluer, j'aimerais que ça soit carré, d'entrée de jeu et que je sache où ranger mes affaires surtout si je dois rajouter des domaines. je compte donc créer, pour chaque domaine (je prends pour l'exemple qui suit : domaine1.fr) les répertoires suivants :
-
/var/www/vhosts/domaine1.fr/httpdocs/    
déjà créé et opérationnel
-
/var/www/vhosts/domaine1.fr/error_docs/    
pages à envoyer en cas d'erreurs (404 etc.)
-
/var/www/vhosts/domaine1.fr/logs/	    
Les fichiers logs du domaine
-
/var/www/vhosts/domaine1.fr/web_users/    
Au cas où...
-
/var/www/vhosts/domaine1.fr/blog.domaine1.fr/    
httpdoc du sous-domaine qui existera
-
/var/www/vhosts/domaine1.fr/genealogie.domaine1.fr/    
httpdoc du sous-domaine qui existera

et comme deux sous-domaines existeront, il y aura deux répertoires supplémentaires (et donc deux fichiers .conf supplémentaires)
- /var/www/vhosts/domaine1.fr/logs/blog.domaine1.fr/
- /var/www/vhosts/domaine1.fr/logs/genealogie.domaine1.fr/

Mêmes tirs, mêmes éléments, ce sera sur le même principe pour la mise en place du domaine2.fr

La chose qui me reste à chercher sont les variables ainsi que leur valeur à placer dans chacun des fichiers .conf pour placer les logs, chercher les pages d'erreurs au bon endroit et pouvoir facilement rajouter un hôte virtuel en prenant la même architecture de répertoire et le même modèle de fichier .conf

En fait, je n'ai besoin que de deux ou trois directives à placer dans ces fichiers .conf ; en fouinant bien partout et en lisant complètement la doc dont tu m'as donné les liens, je vais bien finir par les trouver mais comme tu m'as l'air d'avoir bien saisi l'histoire puisque tu m'as été d'une aide efficace, si tu connais le nom de ces deux ou trois variables (le chemin des logs et les documents d'erreur ; la valeur c'est le répertoire visé) ça me ferait gagner un temps précieux. Si tu sais, c'est super. Si tu ne t'en rappelles plus, ne te mets pas martel en tête, je finirai par trouver et merci de m'avoir permis de comprendre la mécanique du schmilblic et d'arriver jusque là.

A bientôt.
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
18 avril 2018 à 00:13
Re-bonjour

Le problème est réglé.

En fait le modèle de fichier .conf d'un hôte virtuel qu'on trouve dans la doc précise les directives
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
pour les fichiers journaux. J'ai cherché partout à quel endroit redéfinir la vaiable ${APACHE_LOG_DIR}

Je me suis rendu compte que c'était idiot. En effet, une variable n'a d'intérêt que si elle est définie en un seul endroit pour être utilisée ensuite plusieurs fois à des endroits différents. Ça évite en cas de modifications de devoir modifier partout. Or là, dans ce que je veux obtenir (chaque domaine et sous-domaine, ses logs propres) Les paramètres ErrorLog et CustomLog seront forcément différents pour chaque fichier .conf ; je me suis donc passé de la variable pour écrire directement le chemin réel dans le fichier .conf
ErrorLog /var/www/vhosts/domaine1.fr/logs/error.log
CustomLog /var/www/vhosts/domaine1.fr/logs/access.log combined
J'ai vérifié, ça fonctionne du feu de Dieu !
Merci de m'avoir mis sur la voie. Je te remercie vraiment et te souhaite une bonne continuation.
Fil marqué comme résolu. Bye.
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
Modifié le 18 avril 2018 à 01:31
Bonjour,

Tu peux spécifier le chemin + le format des logs d'accès à l'aide de la directive CustomLog au sein de chaque VirtualHost.


Pour spécifier uniquement le chemin (et utiliser le format par défaut ou défini avec LogFormat), il y a la directive TransferLog

Un exemple pour blog.domaine1.fr :

<VirtualHost *:80>
ServerName blog.domaine1.fr
DocumentRoot /var/www/vhosts/domaine1.fr/blog.domaine1.fr/

# ...

CustomLog /var/www/vhosts/domaine1.fr/logs/blog.domaine1.fr/access_log combined
ErrorLog /var/www/vhosts/domaine1.fr/logs/blog.domaine1.fr/error_log
</VirtualHost>

(non testé mais je ne vois pas d'erreur au 1er coup d'œil)

N'hésite pas à t'inspirer du VirtualHost par défaut (dans sites-available/000-default.conf de mémoire).

Cette page contient une note intéressante concernant la gestion des logs avec les VirtualHost :
https://httpd.apache.org/docs/2.4/logs.html#virtualhost

La documentation d'Apache est très complète et je crois que la majorité des documents sont même traduits en français si tu n'es pas à l'aise avec l'anglais. Il y a aussi des tonnes d'articles sur le Web traitant de tous les cas de figure imaginables. En cas de besoin, la communauté CCM reste à ta disposition.

Merci d'avoir pris le temps de me lire et de remercier !

EDIT: Je n'avais pas vu ta dernière réponse, ça donne l'impression que je répète ce que tu dis, oups. Mais c'est une bonne chose que tu aies trouvé par toi-même !
0