8

私はちょうど私の理想的なシナリオを説明するつもりだし、うまくいけば、あなたはそれを実装する方法を私に説明することができますので、私はZendのを使用してアプリケーションを作成しています...それを言うためにどのように他SaaSアプリケーションの作成方法は?

を知りませんDreamHostでホストされるフレームワーク。アプリケーションは、独自のドメイン(example-app.comなど)でホストされます。基本的に、ユーザーはサインアップして、独自のドメインsampleuser.example-app.comまたはexample-app.com/sampleuserを取得する必要があります。これは、実際には1つのインスタンスURLに基​​づいて異なるコンテンツを提供しています。

最終的には、ユーザーがfoobar.comなどの自分のドメインを作成して、sampleuser.example-app.comを指し示すようにして、foobar.comの訪問者がそのサイトが実際にexample-app.comから提供されています。

私はそのようなもののほとんどをどのように行うのか分かりません。このプロセスはどのように機能しますか?私はApacheでいくつかのファンキーなことをする必要がありますか、これはDreamHostのようなサードパーティのホストで行うことができますか?

更新:アドバイスありがとうございます!私は弾丸を噛んで、ワイルドカードサブドメインを利用するように私のホスティングプランをアップグレードすることに決めました。それは私が予想していたよりも安い!また、opensrs.comのような独自のAPIを持つドメイン再販業者プログラムについても知っていました。私は、これらのAPIの1つを使用することが、私のドメイン登録の問題の解決策になると思います。

答えて

10

サブドメインは簡単です。環境のホスティングでは、ほとんどの場合、apacheはメインドメイン以下のすべてのサブドメイン呼び出しを捕捉するように設定されています。ワイルドカードDNSを定義するだけでよいので、* .example-app.comはあなたのサーバのIPを指しています。その後、あなたのウェブサイトは、それらのサブドメイン名へのすべての呼び出しを捕捉する必要があります。

他のドメインは難しいです。彼らはApacheのバーチャルホストとして設定する必要があります - http://httpd.apache.org/docs/1.3/vhosts/name-based.htmlを参照してください。つまり、特にホスト環境で自動化するのは難しいでしょう - あなたのホストがあなたにちょうどそれをするためのAPIを与えていない限り(簡単かつ実現可能なシナリオにはあなたのウェブサイトに割り当てられた特有のIPであれば、あなたはすべてあなたのApacheでキャッチすることができます。あなたのホストコントロールパネルを使って設定するか、そのまま利用できます。

その後、あなたはあなたのウェブサイトに必要なすべての呼び出しを指すように、あなたのApacheを設定した後、あなたは、このようにサブドメインあたりのアプリケーションパーティションをdiffernetiateことができます。

  • は、HTTPリクエスト
  • からホストヘッダーを持っていますあなたが提供しているすべてのサブドメイン名を含むデータベーステーブル
  • インスタンスまたはユーザーIDを決定するためにそのデータベーステーブルを参照し、後でデータのフィルタリングまたはデータベースの選択に使用します。アプリケーションインスタンスごとのスキーマ "

幸運:)

+1

私は、同様のアーキテクチャを使用してアプリケーションを実行し、説明したようにそれが動作します。共有ホスティングを使用する場合は、ワイルドカードホスト(* .domain.tld)を設定できることを確認してください。 –

+0

共有ホスティングを使用しています。ワイルドカードサブドメインはサポートされていません。私はアカウントとワイルドカードの申請をアップグレードすることができますが、それは価値があるとは思われません。これは、ワイルドカードを使用しない方法で行うことができますか?ありがとう! – Andrew

+0

ウェブサイトにすべてのホストヘッダーを追加したい場合(または自動化する方法がある場合は、ホストからAPIを確認してください)、それが可能です。あなたのウェブサイトは、ワイルドカードDNS(または「任意のドメイン」のシナリオでは割り当てられたIP)が最適となるように、それらのすべてのアドレスによる呼び出しに応答する必要があります。あなたのホストがあなたにそのようなオプションを与えていない場合は、それを変更してください。 –