Comment faire face à plusieurs sites qui ont accès à un « cerveau »?
-
19-09-2019 - |
Question
En général, mon développement couvrait uniquement les petites entreprises de taille moyenne et les sites de commerce électroniques.
Mon prochain projet comprendra 30 sites dire - cependant, ils ont environ 95% en commun avec l'autre. Je veux qu'ils aient 1 « cerveau » qui signifie que je peux déployer des changements, des mises à jour du cadre etc qu'une seule fois.
Je me demande si la famille Stack Overflow des sites faire (super-utilisateur, stackoverflow, serverfault etc).
Mes langues / plates-formes de choix sont PHP 5.3, MySQL 5 et le Cadre Kohana.
Le cerveau doit avoir
- 1 système d'administration qui peut gérer tous les sites
- tous les modèles existent dans le cerveau - mais ils ont des espaces réservés, par exemple, titre, logo, etc
- Une façon donc je peux rouler toute mise à jour des modèles globaux filtrera automatiquement à tous les autres sites.
Je sais que cela mettrait beaucoup de stress sur le cerveau, donc je dois utiliser la mise en cache beaucoup côté serveur.
Comment aurais-je chaque accès au domaine du cerveau, par exemple:
http://www.mysite2.com/products/something
http://www.mothership.com/mysite2/products/something
Et que ce serait la meilleure façon de le faire? Avez-vous des conseils? Suis-je sur la bonne voie?
Ne hésitez pas à me poser plus de détails.
La solution
La meilleure façon de le faire est avec l'hébergement virtuel. Fondamentalement, vous exécutez tous les sites sur une seule machine. L'une machine a une configuration Apache qui sert tous les sites.
Si les sites sont plus semblables que différents alors il suffit de pointer tous les sites à l'un répertoire. Les fichiers PHP peuvent détecter ce site, ils sont au service. Vous pouvez fournir un en-tête et pied de page pour chaque site pour gérer le look and feel. Vous pouvez également limiter certaines pages de cette façon.
Si les sites sont plus différents que semblables pointez chacun à un répertoire différent et avoir des pages pertinentes à ces sites dans chaque répertoire.
Pour des fonctionnalités communes que vous pouvez utiliser quelque chose comme mod_rewrite pour cartographier les URL sur les différents sites du même script ou vous pourriez avoir des scripts PHP à chaque emplacement qui include / require fonctionnalités communes.
En fait il y a beaucoup d'options. Votre objectif doit être rendre le site facile à entretenir et maintenir la duplication de code à un minimum absolu.
Comme l'a demandé, a suggéré la lecture:
- Apache config hébergement virtuel : ceci est un sujet complexe que de sorte que vous pouvez le prendre à ServerFault pour se rendre à des profondeurs sombres;
- Configuration d'un hôte virtuel dans Apache ; et
- Astuces PHP: Comment faire pour gérer plusieurs domaines .
Autres conseils
Vous pouvez y parvenir dans Apache en utilisant le <VirtualHost> Directive
. Pour ce faire, sous Apache 2.x, modifier httpd.conf
et cette ligne décommenter (généralement près de la fin du fichier): Include conf/extra/httpd-vhosts.conf
. Ensuite, recherchez le fichier httpd-vhosts.conf
et l'entrée du VirtualHosts
dans ce format:
<VirtualHost 10.1.2.3>
DocumentRoot /home/site1
ServerName site1.com
</VirtualHost>
<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site2.com
</VirtualHost>
<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site3.com
</VirtualHost>