2009-08-25 22 views
6

En general, mi desarrollo solo ha cubierto compañías pequeñas y medianas y sitios de comercio electrónico.¿Cómo lidiar con múltiples sitios que acceden a un "cerebro"?

Mi próximo proyecto abarcará, por ejemplo, 30 sitios; sin embargo, tendrán un 95% en común entre sí. Quiero que tengan 1 'cerebro', lo que significa que puedo implementar cambios, actualizaciones en el marco, etc., solo una vez.

Me pregunto si la familia de sitios de Stack Overflow lo hace (superusuario, stackoverflow, serverfault, etc.).

Mis idiomas/plataformas de elección son PHP 5.3, MySQL 5 y el Framework Kohana.

El cerebro debe tener

  • 1 sistema de administración que puede manejar todos los sitios
  • existen todas las plantillas en el cerebro - sin embargo, tienen marcadores de posición, por ejemplo, el título, logotipo, etc
  • Una forma para que pueda desplegar cualquier actualización de las plantillas globales se filtrará automáticamente a todos los otros sitios.

Me doy cuenta de que esto pondría mucho estrés en el cerebro, por lo que tendría que usar mucho el almacenamiento en el lado del servidor.

¿Cómo tengo cada dominio de acceso al cerebro, así por ejemplo:

http://www.mysite2.com/products/something

silencio acceder http://www.mothership.com/mysite2/products/something

Y eso sería la mejor manera de hacerlo? ¿Tiene algún consejo? ¿Estoy en el camino correcto?

No dudes en preguntarme más detalles.

+0

Están todos los sitios en un servidor compartido, es decir, tener la misma dirección IP? –

+0

Podrían ser, sin embargo, tengo una experiencia limitada para hacerlo de esta manera. – alex

+1

mothership.com NIZA! –

Respuesta

3

La forma más fácil de hacerlo es con el alojamiento virtual. Básicamente, ejecutas todos los sitios en una máquina. La máquina única tiene una configuración de Apache que sirve a todos los sitios.

Si los sitios son más similares que diferentes, simplemente apunta todos los sitios al único directorio. Los archivos PHP pueden detectar a qué sitio sirven. Puede proporcionar un encabezado y pie de página diferente para que cada sitio maneje la apariencia. También puede restringir ciertas páginas de esta manera.

Si los sitios son más diferentes que similares, señale cada uno a un directorio diferente y tenga páginas relevantes para esos sitios en cada directorio.

Para una funcionalidad común puede usar algo como mod_rewrite para mapear URL en los diferentes sitios al mismo script o puede tener scripts PHP en cada ubicación que incluyen/requieren funcionalidad común.

Básicamente hay muchas opciones. Su objetivo debe ser hacer que el sitio sea fácil de mantener y mantener la duplicación de código a un mínimo absoluto.

Conforme a lo solicitado, sugirió la lectura:

+0

Su última oración describe exactamente lo que estoy tratando de lograr. No conozco demasiado qué configurar Apache fuera de los archivos .htaccess. Tendré que investigar ... ¿Alguna lectura recomendada, Cletus? Y gracias por tu respuesta. – alex

0

Puede lograr esto en Apache usando el <VirtualHost> Directive. Para hacer esto en Apache 2.x, edite httpd.conf y elimine el comentario de esta línea (generalmente se encuentra cerca del final del archivo): Include conf/extra/httpd-vhosts.conf. A continuación, busque el archivo httpd-vhosts.conf y la entrada del VirtualHosts en este 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> 
+0

¿Conoces algún host que te permita modificar esto? – alex

+0

Necesitará acceso de administrador para modificar los archivos del sistema. Lo mejor es inscribirse en una solución de alojamiento VPS, que generalmente comienza en $ 25 por mes. http://www.webhostingtalk.com/web-hosting-providers/vps-hosting – jusunlee

Cuestiones relacionadas