8

No sé de qué otra manera decirlo, así que solo voy a explicar mi escenario ideal y espero que pueda explicarme cómo implementarlo ...¿Cómo crear una aplicación SaaS?

Estoy creando una aplicación con Zend Marco que se alojará con DreamHost. La aplicación se alojará en su propio dominio (es decir, example-app.com). Básicamente, un usuario debería poder registrarse, obtener su propio dominio, sampleuser.example-app.com o example-app.com/sampleuser, que apunta a lo que parece ser su propia instancia de la aplicación, que en realidad es una sola instancia sirviendo contenido diferente basado en la url.

Eventualmente, deseo que mis usuarios puedan crear su propio dominio (como foobar.com) que apunte a sampleuser.example-app.com, de modo que los visitantes de foobar.com no se den cuenta de que el sitio es realmente se sirve desde example-app.com.

No sé cómo hacer la mayoría de esas cosas. ¿Cómo funciona este proceso? ¿Necesito hacer algo funky con Apache o puedo hacerlo con un host de terceros, como DreamHost?

Actualización: ¡Gracias por el consejo! Decidí aprovechar la bala y actualizar mi plan de hosting para utilizar subdominios con comodines. ¡Es más barato de lo que esperaba! También descubrí programas de revendedores de dominios, como opensrs.com, que tienen su propia API. Creo que el uso de una de estas API será la solución a mi problema de registro de dominio.

Respuesta

10

Los subdominios son fáciles. En entornos de hospedaje, en la mayoría de los casos, apache está configurado para capturar todas las llamadas de subdominio debajo del dominio principal. Solo necesita tener un DNS comodín definido, por lo que * .example-app.com apunta a la IP de su servidor. Luego, su sitio web debería captar todas las llamadas a esos nombres de subdominio.

Otros dominios son difíciles. Deben configurarse como hosts virtuales en Apache, ver http://httpd.apache.org/docs/1.3/vhosts/name-based.html, lo que significa que será difícil automatizar eso, especialmente en el entorno del hosting, a menos que el host le proporcione alguna API para hacer eso (el escenario más fácil y más factible sería tener una IP distintiva asignada a su sitio web, luego puede capturar todo con su Apache - probablemente sea posible configurarlo usando su panel de control de hosting o funcionar de inmediato - y luego simplemente señalar servidores DNS a su IP).

Entonces, después de haber configurado el Apache para señalar todas las llamadas necesarias a su sitio web, puede differnetiate particiones de aplicación por subdominio de esta manera:

  • obtener el encabezado de host de la solicitud HTTP
  • tienen una tabla de base de datos que contiene todos los nombres de subdominio a los que está dando servicio
  • haga una búsqueda en esa tabla de base de datos para determinar la instancia, o usuario, id y úsela más tarde para filtrar datos/o seleccionar una base de datos, si va con una "base de datos por instancia de aplicación "esquema.

Buena suerte :)

+1

corro una aplicación con una arquitectura similar y funciona como se describe. Asegúrese de verificar que puede configurar un host comodín (* .domain.tld) ​​si usa el alojamiento compartido. –

+0

Uso el alojamiento compartido y no se admite el subdominio de comodines. Podría actualizar mi cuenta y solicitar compatibilidad con comodines, pero no parece valer la pena. ¿Se puede hacer esto de una manera que no use el comodín? ¡Gracias! – Andrew

+0

Si está dispuesto a agregar todos los encabezados de host a su sitio web (o tiene una forma de automatizarlo, de nuevo, verifique alguna API de su host), entonces sí, es posible.Su sitio web tiene que responder a las llamadas de todas las direcciones de alguna manera: el DNS comodín (o el IP asignado para el escenario de "cualquier dominio") sería óptimo. Si su anfitrión no le da tales opciones, entonces cámbielo. –

Cuestiones relacionadas