Pergunta

Estamos desenvolvendo um aplicativo que seria oferecido como solução hospedada.Estou surpreso ao entender como posso usar vários sites com o mesmo código sem duplicar o código base.

por exemplo:site 1:www.example.com e site 2:www.sample.com será executado no mesmo código, mas terá configurações e temas diferentes ...como se administrássemos nossos próprios nomes de domínio no wordpress.

gostaria de saber como posso fazer isso.

também no caso de banco de dados.seria melhor criar bancos de dados individuais para cada site ou usar o mesmo banco de dados com ID do site como coluna em cada tabela.

por favor me ajude.

esclarecimento] seu alias de não domínio.como...seria um serviço.onde diferentes clientes receberão o mesmo aplicativo em seu próprio nome de domínio com temas diferentes.algo parecido com o que o blogueiro faz ..com nomes de domínio próprios, mas com o mesmo aplicativo de blog

Tecnologia] Estou especificamente analisando como usar o nome do host para determinar qual configuração usar, estamos usando PHP e MySQL

Foi útil?

Solução

Reutilizar o código é definitivamente desejável. É difícil imaginar em suas postagens como os sites serão diferentes um do outro. Estamos falando de logotipos, esquemas de cores ou funcionalidade diferente?

Vou começar com a aparência e a sensação diferentes. Também assumirei que este é o único aplicativo no servidor.

Eu recomendo planejar sua estrutura de diretório com cuidado. Algo como:

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);

Esta é uma abordagem simplista, mas algo para se fazer.

Outras dicas

Na verdade, é muito simples.

Sua base de código pode e deve ser única.Você faz o upload para hospedagem1 e hospedagem2.Na manutenção, assim que atualizar o código, carregue-o nos dois espaços de hospedagem.

Suponho que é assim que este site funciona também.Veja o rodapé da página.Você tem stackoverflow, meta, superusuário e serverfault.Se você olhar o que diz o comentário no canto inferior direito agora, seria "svn revision:5404".A mesma coisa.Uma base de código publicada em quatro sites.É claro que os bancos de dados são diferentes e contêm conteúdos completamente diferentes.

Portanto as partes variáveis ​​são:

  1. Configuração

  2. Configurações

  3. Dados

Aqueles que você precisa copiar.

Você precisa codificá-lo desta forma que as configurações e definições não sejam codificadas, mas armazenadas em alguma tabela de banco de dados ou pelo menos em alguns arquivos de configuração externos.Eles não fazem parte do código (ou da implementação, se desejar), portanto não precisam estar no código.Se você os tiver, tire-os.

Suponho que você poderia Tenha dois domínios diferentes apontando para o mesmo servidor e defina configurações diferentes com base no nome do host. Eu não recomendaria isso. Você pode encontrar problemas com estabilidade e desempenho, especialmente se tiver uma grande base de usuários ou um grande número de domínios apontando para a base de código.

Geralmente, se você estiver executando vários sites, deve ter um servidor diferente para cada um.

Editar:

Depois de ler comentários sobre a outra resposta, entendo um pouco melhor o seu caso de uso.

Se você possui um grande número de sites para os quais deseja usar essa configuração, se você projetar a arquitetura corretamente e implementar um esquema de balanceamento de carga de algum tipo para lidar com grandes cargas de usuário, poderá fazer isso funcionar.

Para recapitular:

  • Obtenha vários servidores e equilibre a carga neles.
  • projete o aplicativo para lidar com uma grande carga do usuário.
  • Use o nome do host para determinar qual configuração usar.

Fazemos isso com cerca de 15.000 domínios únicos no momento. Não é difícil, mas são necessárias algumas considerações de design para implementar adequadamente.

Você pode fazer isso de uma única base de código e servidor e basicamente apenas construir seu código para depender inteiramente da solicitação de entrada Http_host valor. Em seguida, tudo em suas teclas de banco de dados fora desse valor como meio de segregar dados corretamente e responder à solicitação com os dados/html apropriados.

Por razões de segurança, você pode considerar:

A) definir uma restrição open_basedir separada para cada host para que os arquivos enviados pelo usuário não possam ser acessados ​​por outros sites, por exemplo:/shared_library /host1 /user_images /host2 /user_images

Você pode incluir diretórios compartilhados e específicos de domínio nos caminhos permitidos.

B) conectar-se a um banco de dados diferente para cada host, para evitar que erros em suas consultas de banco de dados capturem acidentalmente dados de outro site e para permitir um escalonamento mais fácil de servidores de banco de dados (por exemplo,Mova domínios ocupados para um servidor de banco de dados diferente)

Se você tiver um aplicativo extremamente simples, poderá usar um banco de dados.

Em qualquer caso, você deve ter uma estratégia de implementação para que nenhum dos sites quebre quando você fizer alterações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top