Mutualisation de sites sur un serveur local
MGD
-
MGD -
MGD -
Bonjour,
J'ai un PC local sur lequel tourne Apache, PHP et MySql. Ce PC me sert de serveur d'évaluation pour les différents sites que je maintiens.
A chaque fois que je travaille sur un site, je dois modifier la configuration d'Apache (DocumentRoot, directory, etc.) et celle de PHP (pour le chemin d'include) de mon serveur local. Pour MySql, pas de problème car chaque site a sa propre base sur le serveur du PC.
Je pense qu'il doit y avoir moyen de mutualiser les différents sites sur le serveur (les hébergeurs y arrivent bien). Si j'ai une vague idée de ce qu'il faut faire pour Apache (par ex. jouer avec les VirtualHost ou les alias) , je n'ai aucune idée de comment faire pour que chaque site ait son propre include_path.
Je voudrais éviter de faire des rewrite dans le fichier .htaccess car les fichiers doivent être rigoureusement identiques sur le serveur d'évaluation et chez l'hébergeur (la plupart des sites sont chez des hébergeurs différents).
Si quelqu'un peut m'expliquer comment mutualiser mes différents sites sur mon serveur (configuration d'Apache et de PHP), je lui en saurai le plus grand gré.
J'ai un PC local sur lequel tourne Apache, PHP et MySql. Ce PC me sert de serveur d'évaluation pour les différents sites que je maintiens.
A chaque fois que je travaille sur un site, je dois modifier la configuration d'Apache (DocumentRoot, directory, etc.) et celle de PHP (pour le chemin d'include) de mon serveur local. Pour MySql, pas de problème car chaque site a sa propre base sur le serveur du PC.
Je pense qu'il doit y avoir moyen de mutualiser les différents sites sur le serveur (les hébergeurs y arrivent bien). Si j'ai une vague idée de ce qu'il faut faire pour Apache (par ex. jouer avec les VirtualHost ou les alias) , je n'ai aucune idée de comment faire pour que chaque site ait son propre include_path.
Je voudrais éviter de faire des rewrite dans le fichier .htaccess car les fichiers doivent être rigoureusement identiques sur le serveur d'évaluation et chez l'hébergeur (la plupart des sites sont chez des hébergeurs différents).
Si quelqu'un peut m'expliquer comment mutualiser mes différents sites sur mon serveur (configuration d'Apache et de PHP), je lui en saurai le plus grand gré.
A voir également:
- Mutualisation de sites sur un serveur local
- Appdata local - Guide
- Meilleurs sites de téléchargement - Accueil - Outils
- Sites de vente d'occasion - Guide
- Changer serveur dns - Guide
- Ip local - Guide
3 réponses
Je comprend pas tres bien ton problème... tu cherche a faire des chemin relatifs dans tes fichiers php? ou tu veux conditionner ton php.ini.
tu peux me donner un exemple de ce que tu modifie. Et expliquer pourquoi tu dois faire ces modif
tu peux me donner un exemple de ce que tu modifie. Et expliquer pourquoi tu dois faire ces modif
MGD
Puisque j'ai dit que les fichiers (php comme les autres) devaient être identique en local et chez l'hébergeur, c'est bien évidemment les fichiers de configuration d'Apache et de Php de mon serveur local que je souhaite modifier...
J'aurais encore dû mieux préciser :
Puisque j'ai dit que les fichiers (php comme les autres) du site devaient être identiques en local et chez l'hébergeur, c'est bien évidemment les fichiers de configuration d'Apache (httpd.conf) et de Php (php.ini) de mon serveur local que je souhaite modifier...
Puisque j'ai dit que les fichiers (php comme les autres) du site devaient être identiques en local et chez l'hébergeur, c'est bien évidemment les fichiers de configuration d'Apache (httpd.conf) et de Php (php.ini) de mon serveur local que je souhaite modifier...
C'est pas aussi evident que ce que tu semble croire. avec $_SERVER['PHP_SELF'] tu retrouve le path de ton fichier qu'il soit en local ou chez ton hebergeur. en combinant avec dirname et autre basename tu retrouve facilement le nom du fichier l'url ou l'arborescence.
si ton prbleme c'est d'avoir ton path d'include tu creer dans un fichier à la racine du repertoire du site, que t'appelle config.php (par exemple) et que tu inclus partout avec include_once. Une CONSTANTE definie comme: $INCLUDE = $_SERVER['PHP_SELF'].'/include'; ou mieu une constante $chemin_racine_de_mon_site = $_SERVER['PHP_SELF'].
Que tu sois en local en staging en prod ou chez free t'aurra un chemin relatif
Si c'est pas ce que tu cherche a faire, et que tu veux vraiment modifier tes fichiers de config, j'ai besoin de precision sur ce que tu as besoin exactement: fais un copier coller des lignes que tu dois modifier en ce moment avant et après les avoir modifier. Mais avant de faire ça assure toi que t'as le controle sur les fichiers chez l'hebergeur.
si ton prbleme c'est d'avoir ton path d'include tu creer dans un fichier à la racine du repertoire du site, que t'appelle config.php (par exemple) et que tu inclus partout avec include_once. Une CONSTANTE definie comme: $INCLUDE = $_SERVER['PHP_SELF'].'/include'; ou mieu une constante $chemin_racine_de_mon_site = $_SERVER['PHP_SELF'].
Que tu sois en local en staging en prod ou chez free t'aurra un chemin relatif
Si c'est pas ce que tu cherche a faire, et que tu veux vraiment modifier tes fichiers de config, j'ai besoin de precision sur ce que tu as besoin exactement: fais un copier coller des lignes que tu dois modifier en ce moment avant et après les avoir modifier. Mais avant de faire ça assure toi que t'as le controle sur les fichiers chez l'hebergeur.
Je répète :
LES FICHIERS DU SITE (tels que présents chez l'hébergeur) NE DOIVENT PAS ÊTRE MODIFIÉS.
Il s'agit de configurer LE SERVEUR LOCAL (Apache et Php) pour que ces fichiers tournent également sur ce serveur local.
Actuellement c'est le cas, mais pour un seul à la fois. Quand je change de site (répertoire racine différent), il faut reconfigurer Apache et PHP pour coller aux nouveaux chemins.
Je sais qu'il est possible d'héberger plusieurs sites simultanément sur un même serveur, mais je ne sais pas comment configurer Apache et Php pour le faire.
Il n'est pas question de modifier la config chez l'hébergeur, c'est celle de mon serveur local qu'il faut adapter.
Voici un extrait des lignes de config qu'il faut que je modifie à chaque fois que je veux changer de site (il faut décommenter la ligne du site concerné et commenter les autres) :
httpd.conf:
#DocumentRoot "D:\Selvos\SiteDistant"
DocumentRoot "D:\PremRenov"
.....
#<Directory "D:\Selvos\SiteDistant">
<Directory "D:\PremRenov">
.....
php.inif:
;include_path = "D:\Selvos\SiteDistant\include;.;${path}\php\pear\"
include_path = "D:\PremRenov\include;.;${path}\php\pear\"
.....
Et il y en a peut-être d'autres...
Il doit bien y avoir un mécanisme pour adapter ces lignes automatiquement en fonction du nom du site appelé ou du port adressé. J'ai trois sites chez Online sur le même serveur et cela fonctionne très bien.
Y-a-t'il un pro de l'installation de serveurs web dans la salle ?
LES FICHIERS DU SITE (tels que présents chez l'hébergeur) NE DOIVENT PAS ÊTRE MODIFIÉS.
Il s'agit de configurer LE SERVEUR LOCAL (Apache et Php) pour que ces fichiers tournent également sur ce serveur local.
Actuellement c'est le cas, mais pour un seul à la fois. Quand je change de site (répertoire racine différent), il faut reconfigurer Apache et PHP pour coller aux nouveaux chemins.
Je sais qu'il est possible d'héberger plusieurs sites simultanément sur un même serveur, mais je ne sais pas comment configurer Apache et Php pour le faire.
Il n'est pas question de modifier la config chez l'hébergeur, c'est celle de mon serveur local qu'il faut adapter.
Voici un extrait des lignes de config qu'il faut que je modifie à chaque fois que je veux changer de site (il faut décommenter la ligne du site concerné et commenter les autres) :
httpd.conf:
#DocumentRoot "D:\Selvos\SiteDistant"
DocumentRoot "D:\PremRenov"
.....
#<Directory "D:\Selvos\SiteDistant">
<Directory "D:\PremRenov">
.....
php.inif:
;include_path = "D:\Selvos\SiteDistant\include;.;${path}\php\pear\"
include_path = "D:\PremRenov\include;.;${path}\php\pear\"
.....
Et il y en a peut-être d'autres...
Il doit bien y avoir un mécanisme pour adapter ces lignes automatiquement en fonction du nom du site appelé ou du port adressé. J'ai trois sites chez Online sur le même serveur et cela fonctionne très bien.
Y-a-t'il un pro de l'installation de serveurs web dans la salle ?
Bon, je me suis débrouillé tout seul...
Pour ceux que cela intéresse, la réponse est à
https://apache.developpez.com/cours/virtual-host/
Comme le problème du include_path n'est pas traité (à ce jour) dans le tutoriel, j'ai contacté l'auteur qui m'a répondu ceci :
cela est possible si et seulement si PHP fonctionne comme module Apache (et non en CGI). Il vous est alors possible de redéfinir, depuis le fichier de configuration d'Apache, pour chaque virtualhost, un certain nombre de paramètres PHP (voir sa documentation pour de plus amples détails : https://www.php.net/manual/fr/ini.php à l'aide de la directive php_admin_value ou php_admin_flag (cette dernière est destinée exclusivement aux valeurs de type booléenne ; la précédente au reste).
Donc dans votre cas (et si vous remplissez le pré-requis indiqué), vous pourriez procéder de la sorte pour redéfinir l'include_path pour chacun des virtualhosts :
php_admin_value include_path ".:/home/siteX/www/offline/libs"
Grand merci à lui !
Pour ceux que cela intéresse, la réponse est à
https://apache.developpez.com/cours/virtual-host/
Comme le problème du include_path n'est pas traité (à ce jour) dans le tutoriel, j'ai contacté l'auteur qui m'a répondu ceci :
cela est possible si et seulement si PHP fonctionne comme module Apache (et non en CGI). Il vous est alors possible de redéfinir, depuis le fichier de configuration d'Apache, pour chaque virtualhost, un certain nombre de paramètres PHP (voir sa documentation pour de plus amples détails : https://www.php.net/manual/fr/ini.php à l'aide de la directive php_admin_value ou php_admin_flag (cette dernière est destinée exclusivement aux valeurs de type booléenne ; la précédente au reste).
Donc dans votre cas (et si vous remplissez le pré-requis indiqué), vous pourriez procéder de la sorte pour redéfinir l'include_path pour chacun des virtualhosts :
php_admin_value include_path ".:/home/siteX/www/offline/libs"
Grand merci à lui !