8

Ich weiß nicht, wie ich es sonst sagen soll, also werde ich nur mein ideales Szenario erklären und hoffentlich kannst du mir erklären, wie man es implementiert ...Wie erstellt man eine SaaS-Anwendung?

Ich erstelle eine Anwendung mit dem Zend Framework, das mit DreamHost gehostet wird. Die Anwendung wird auf einer eigenen Domain (d. H. Beispiel-app.com) gehostet. Grundsätzlich sollte sich ein Benutzer anmelden können, um seine eigene Domain sampleuser.example-app.com oder example-app.com/samplususer zu bekommen, die auf eine Instanz verweist, die wie ihre eigene Instanz der App aussieht, die wirklich eine einzelne Instanz ist verschiedene Inhalte basierend auf der URL anbieten.

Schließlich möchte ich, dass meine Benutzer in der Lage sind, ihre eigene Domain (wie foobar.com) zu erstellen, die auf sampleuser.example-app.com verweist, sodass Besucher von foobar.com die Site nicht bemerken wirklich von example-app.com serviert werden.

Ich weiß nicht, wie man das meiste davon macht. Wie funktioniert dieser Prozess? Muss ich etwas Funky mit Apache machen oder kann dies mit einem Drittanbieter wie DreamHost geschehen?

Update: Danke für den Hinweis! Ich habe beschlossen, in den sauren Apfel zu beißen und meinen Hosting-Plan zu aktualisieren, um Wildcard-Subdomains zu nutzen. Es ist billiger als ich erwartet hatte! Ich habe auch über Domain-Reseller-Programme wie opensrs.com erfahren, die ihre eigene API haben. Ich denke, dass die Verwendung einer dieser APIs die Lösung für mein Domainregistrierungsproblem sein wird.

Antwort

10

Subdomains sind einfach. In Hostingumgebungen ist Apache in den meisten Fällen so konfiguriert, dass alle Subdomain-Aufrufe unterhalb der Hauptdomäne abgefangen werden. Sie müssen nur ein Wildcard-DNS definieren, damit * .example-app.com auf die IP-Adresse Ihres Servers verweist. Dann sollte Ihre Website alle Aufrufe dieser Subdomänennamen erfassen.

Andere Domänen sind schwer. Sie müssen als virtuelle Hosts in Apache konfiguriert werden - siehe http://httpd.apache.org/docs/1.3/vhosts/name-based.html - das bedeutet, dass es schwierig sein wird, das zu automatisieren, vor allem in der Hosting-Umgebung - es sei denn, Ihr Host gibt Ihnen eine API, um genau dies zu tun (einfach und machbar Szenario wäre zu haben) eine unverwechselbare IP zugewiesen zu Ihrer Website, dann können Sie alle mit Ihrem Apache fangen - es ist wahrscheinlich möglich, mit Ihrem Hosting-Control-Panel zu konfigurieren oder funktioniert out-of-the-box - und dann zeigen Sie nur DNS-Server auf Ihre IP).

  • erhalten den Host-Header von HTTP-Anforderung
  • habe ein:

    Dann, nachdem Sie Ihren Apache so konfiguriert haben, alle erforderlichen Anrufe auf Ihre Website zu verweisen, können Sie Anwendungspartitionen pro Sub-Domain auf diese Weise differnetiate Datenbanktabelle, die alle Subdomänennamen enthält, die Sie bedienen

  • Suchen Sie in dieser Datenbanktabelle nach einer Instanz oder Benutzer-ID und verwenden Sie sie später zum Filtern von Daten/oder zum Auswählen einer Datenbank, wenn Sie eine "Datenbank" verwenden pro Anwendungsinstanz "Schema.

Viel Glück :)

+1

ich führen eine Anwendung mit einer ähnlichen Architektur und es funktioniert wie beschrieben. Stellen Sie sicher, dass Sie bei Verwendung von Shared Hosting einen Platzhalter-Host (* .domain.tld) ​​einrichten können. –

+0

Ich verwende Shared Hosting, und Wildcard-Subdomain wird nicht unterstützt. Ich könnte mein Konto aufrüsten und um Unterstützung für Wildcards bitten, aber es scheint sich nicht zu lohnen. Kann dies auf eine Weise geschehen, die den Platzhalter nicht verwendet? Vielen Dank! – Andrew

+0

Wenn Sie bereit sind, jeden Host-Header zu Ihrer Website hinzuzufügen (oder eine Möglichkeit zu haben, sie zu automatisieren - erneut, prüfen Sie, ob ein API von Ihrem Host vorhanden ist) - dann ist es möglich.Ihre Website muss auf alle Anrufe von diesen Adressen irgendwie antworten - Platzhalter-DNS (oder zugewiesene IP für "jede Domäne" -Szenario) wäre optimal. Wenn Ihr Host Ihnen solche Optionen nicht gibt, ändern Sie sie. –