8

Je ne sais pas comment le dire d'autre je vais juste expliquer mon scénario idéal et j'espère que vous pouvez m'expliquer comment l'implémenter ...Comment créer une application SaaS?

Je crée une application avec le Zend Framework qui sera hébergé avec DreamHost. L'application sera hébergée sur son propre domaine (exemple: example-app.com). Fondamentalement, un utilisateur devrait être capable de s'inscrire, d'obtenir son propre domaine sampleuser.example-app.com ou exemple-app.com/sampleuser qui pointe vers, ce qui ressemble à leur propre instance de l'application, qui est vraiment une seule instance servir un contenu différent basé sur l'URL. Finalement, je veux que mes utilisateurs puissent créer leur propre domaine (comme foobar.com) qui pointe vers sampleuser.example-app.com, de sorte que les visiteurs de foobar.com ne remarquent pas que le site est vraiment servi par example-app.com.

Je ne sais pas comment faire la plupart de ces choses. Comment ce processus fonctionne-t-il? Ai-je besoin de faire des choses géniales avec Apache ou est-ce possible avec un hôte tiers, comme DreamHost?

Mise à jour: Merci pour le conseil! J'ai décidé de mordre la balle et mettre à jour mon plan d'hébergement pour utiliser des sous-domaines génériques. C'est moins cher que ce à quoi je m'attendais! J'ai également découvert des programmes de revendeurs de domaines, comme opensrs.com, qui ont leur propre API. Je pense que l'utilisation de l'une de ces API sera la solution à mon problème d'enregistrement de domaine.

Répondre

10

Les sous-domaines sont faciles. Dans les environnements d'hébergement, dans la plupart des cas, apache est configuré pour capturer tous les appels de sous-domaines situés en dessous du domaine principal. Vous avez juste besoin d'avoir un DNS générique défini, ainsi * .example-app.com pointe vers l'adresse IP de votre serveur. Ensuite, votre site Web devrait attraper tous les appels à ces noms de sous-domaine.

D'autres domaines sont difficiles. Ils doivent être configurés en tant qu'hôtes virtuels dans Apache - voir http://httpd.apache.org/docs/1.3/vhosts/name-based.html - cela signifie qu'il sera difficile d'automatiser cela, en particulier dans l'environnement d'hébergement - à moins que votre hôte ne vous donne une API pour le faire (scénario facile et plus réaliste serait d'avoir une adresse IP distinctive attribuée à votre site Web, vous pouvez alors tout saisir avec votre Apache - il est probablement possible de configurer en utilisant votre panneau de contrôle d'hébergement ou fonctionne hors de la boîte - et ensuite pointer les serveurs DNS sur votre adresse IP).

Ensuite, une fois que vous avez configuré votre Apache pour pointer tous les appels nécessaires à votre site Web, vous pouvez differnetiate partitions d'application par sous-domaine de cette façon:

  • obtenir l'en-tête hôte de requête HTTP
  • ont une table de base de données contenant tous les noms de sous-domaines que vous desservez
  • Cherchez dans cette table de base de données pour déterminer l'instance, ou l'utilisateur, et utilisez-la plus tard pour filtrer les données/ou sélectionner une base de données, si vous utilisez une base de données par instance "schéma d'application".

Bonne chance :)

+1

je lance une application avec une architecture similaire et il fonctionne comme décrit. Veillez à vérifier que vous pouvez configurer un hôte générique (* .domaine.tld) ​​si vous utilisez un hébergement partagé. –

+0

J'utilise l'hébergement partagé, et le sous-domaine générique n'est pas supporté. Je pourrais mettre à jour mon compte et pétitionner pour un support générique, mais cela ne semble pas en valoir la peine. Cela peut-il être fait d'une manière qui n'utilise pas le caractère générique? Merci! – Andrew

+0

Si vous êtes prêt à ajouter chaque en-tête d'hôte à votre site Web (ou avez un moyen de l'automatiser - encore une fois, vérifiez l'API de votre hôte) - alors oui, c'est possible.Votre site Web doit répondre aux appels de toutes les adresses - le caractère générique DNS (ou l'adresse IP attribuée pour le scénario «n'importe quel domaine») serait optimal. Si votre hôte ne vous donne pas de telles options, changez-le. –