Question

Nous développons une application qui serait offert une solution hébergée. Je suis frappé de comprendre comment puis-je utiliser plusieurs sites avec le même code sans dupliquer le code de base.

par exemple: Site 1: www.example.com et le site Web 2:. www.sample.com se déroulera sur le code même, mais aurait différents paramètres de configuration, et un thème différent ... comme nous gérons nos propres noms de domaine dans wordpress

Je voudrais savoir comment je peux le faire.

aussi en cas de la base de données .. serait-il préférable que je crée des bases de données individuelles pour chaque site ou utiliser la même base de données avec le site Web ID comme une colonne dans chaque tableau.

pls me aider.

[précisions] son alias pas de domaine. comme ... ce serait un service. où différents clients auront la même application sur leur propre nom de domaine avec thème différent. quelque chose comme ce blogueur fait .. avec ses propres noms de domaine, mais même application de blog

[la technologie] plus précisément je regarde comment utiliser le nom d'hôte pour déterminer la configuration à utiliser nous utilisons PHP et MySQL

Était-ce utile?

La solution

Code Réutiliser est certainement souhaitable. Il est difficile d'imaginer de vos messages comment les différents sites seront les uns des autres. Est-ce que nous parlons de logos, et des couleurs ou des fonctionnalités différentes?

Je vais commencer par les différents look & feel. Je suppose aussi que c'est la seule application sur le serveur.

Je recommande la planification de votre structure de répertoire soigneusement. Quelque chose comme:

www-root/  
   / lib  
   / themes
        / domain1  
        / domain2  


index.php:

<?php
$host = $_SERVER['HTTP_HOST'];
$include_theme = "themes/" . $host . "/configuration.php";
//make sure the file exists
require_once($include_theme);

Ceci est une approche simpliste, mais quelque chose à chose au sujet.

Autres conseils

Il est très simple en fait.

Votre base de code peut et doit être unique. Vous téléchargez à hosting1 et hosting2. Lors de l'entretien, dès que vous mettiez à jour le code, le télécharger sur les deux espaces d'hébergement.

Je suppose que c'est comment ce site fonctionne aussi bien. Regardez le bas de la page. Vous avez là stackoverflow, meta, et serverfault super-utilisateur. Si vous regardez ce que le commentaire sur dit en bas à droite en ce moment, ce serait la « révision svn: 5404 ». La même chose. Une base de code publié à quatre sites. Les bases de données de cours sont différents et contiennent un contenu complètement différent.

Ainsi, les parties variables sont:

  1. Configuration

  2. Paramètres

  3. Données

Ceux-là vous devez copier.

Vous devez coder cette façon que la configuration et les paramètres ne sont pas codés en dur, mais soit les magasins dans une table de base de données ou au moins dans certains fichiers de configuration externes. Ceux-ci ne font pas partie du code (ou la mise en œuvre si vous le souhaitez) ils ne doivent pas nécessairement être dans le code. Si vous les avez dans, les retirer.

Je suppose que vous peut ont deux domaines différents pointant sur le même serveur, et définir des configurations différentes en fonction du nom d'hôte. Je ne recommanderais pas ce bien. Vous pouvez rencontrer des problèmes avec la stabilité et les performances, surtout si vous avez une grande base ou d'un grand nombre de domaines pointant vers la base de code utilisateur.

En général, si vous exécutez plusieurs sites, vous devez disposer d'un serveur différent pour chacun.

Modifier:

Après avoir lu les commentaires sur l'autre réponse, je comprends votre cas d'utilisation un peu mieux.

Si vous avez un grand nombre de sites que vous souhaitez utiliser cette configuration pour, si vous concevez correctement l'architecture, et mettre en œuvre un système d'équilibrage de charge d'une sorte de manipuler de grosses charges d'utilisateurs, vous pouvez faire ce travail.

Pour récapituler:

  • obtenir plusieurs serveurs, et d'équilibrer la charge entre eux.
  • concevoir l'application pour gérer une grande charge de l'utilisateur.
  • utilisez le nom d'hôte pour déterminer la configuration à utiliser.

Nous le faisons avec environ 15 000 domaines uniques en ce moment. Il est pas difficile, mais il faut des considérations de conception pour mettre en œuvre correctement.

Vous pouvez le faire hors d'un seul serveur et base de code, et essentiellement juste construire votre code dépend entièrement de la de requête entrante HTTP_HOST valeur. Ensuite, tout dans vos clés de DB hors de cette valeur en tant que moyen de données et de répondre correctement séparer la demande avec les données appropriées / html.

Pour des raisons de sécurité, vous pourriez envisager:

A) définir une restriction open_basedir distincte pour chaque hôte de sorte que l'utilisateur les fichiers téléchargés ne peuvent pas être accessibles par d'autres sites, par exemple:     / shared_library     / Host1 / user_images     / Host2 / user_images

Vous pouvez inclure des répertoires spécifiques et partagés domaine dans les chemins autorisés.

B) se connecter à une base de données différente pour chaque hôte, pour éviter toute erreur dans vos requêtes de base de données de saisir accidentellement les données d'un autre site Web, et pour permettre mise à l'échelle plus facile des serveurs de base de données (par exemple, déplacer des domaines très occupés sur un serveur de base de données différente)

Si vous avez une application extrêmement simple, vous pouvez vous en sortir avec une base de données.

Dans tous les cas, vous devriez avoir une stratégie de déploiement de sorte qu'aucun des sites pause lorsque vous apportez des modifications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top