Como lidar com vários sites que acessam um 'cérebro'?
-
19-09-2019 - |
Pergunta
Geralmente, meu desenvolvimento tem cobria apenas empresas de pequeno e médio porte e sites de comércio eletrônico.
Meu próximo projeto vai abranger dizer 30 locais - no entanto, eles têm cerca de 95% em comum uns com os outros. Eu quero que eles têm um 'cérebro' Isso significa que posso lançar alterações, atualizações para o quadro etc apenas uma vez.
Gostaria de saber se a família Stack Overflow de sites fazem isso (superusuário, stackoverflow, serverfault etc).
Meus idiomas / plataformas de escolha são PHP 5.3, MySQL 5 e o Quadro Kohana.
O cérebro deve ter
- 1 sistema de administração que pode lidar com cada site
- existem todos os modelos no cérebro - no entanto eles têm espaços reservados, por exemplo, título, logotipo, etc
- Uma maneira para que eu possa lançar alguma atualização para os modelos globais irá filtrar automaticamente a todos os outros sites.
Eu percebo isso seria colocar um monte de estresse sobre o cérebro, então eu teria que do lado do servidor usar o cache de um monte.
Como eu teria cada acesso de domínio do cérebro, assim, por exemplo:
http://www.mysite2.com/products/something
http://www.mothership.com/mysite2/products/something
E isso seria a melhor maneira de fazê-lo? Você tem alguma dica? Am I no caminho certo?
Sinta-se livre para me perguntar qualquer mais detalhes.
Solução
A maneira mais fácil de fazer isso é com hospedagem virtual. Basicamente você executar todos os sites em uma única máquina. A única máquina tem uma configuração do Apache que serve todos os sites.
Se os sites são mais semelhantes do que diferentes, em seguida, basta apontar todos os sites para o diretório. Os arquivos PHP pode detectar o local que está servindo. Você pode fornecer um cabeçalho e rodapé diferente para cada site para lidar com o look and feel. Você também pode restringir determinadas páginas desta forma.
Se os sites são mais diferente do similar, então apontar cada um para um diretório diferente e têm páginas relevantes a esses sites em cada diretório.
Para obter a funcionalidade comum que você poderia usar algo como mod_rewrite para mapear URLs sobre os diferentes sites para o mesmo script ou você poderia ter scripts PHP em cada local que incluem / exigem funcionalidade comum.
Basicamente, existem muitas opções. Seu objetivo deve ser tornar o site fácil de manter e manter a duplicação de código a um mínimo absoluto.
Conforme solicitado, sugestões de leitura:
- Apache hospedagem virtual configuração : este é um tema complicado embora assim você pode querer levá-la para Serverfault para chegar às profundezas escuras;
- Configurando uma máquina virtual no Apache ; e
- truques PHP: Como lidar com múltiplos domínios .
Outras dicas
Você pode conseguir isso no Apache usando o <VirtualHost> Directive
. Para fazer isso sob o Apache 2.x, editar httpd.conf
e descomente esta linha (geralmente encontrado perto do final do arquivo): Include conf/extra/httpd-vhosts.conf
. Em seguida, localize o arquivo httpd-vhosts.conf
ea entrada VirtualHosts
neste formato:
<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>