0

複数のサイトをホストするために使用できる CMS を構築しようとしています。このプロジェクトでは、何百万回も車輪の再発明を行うことになることを知っているので、既存のオープンソースの Ruby on Rails CMS を拡張して、自分のニーズを満たすことを考えています。

これらのニーズの 1 つは、1 つのコードベースのみを使用して複数のサイトを実行できるようにすることです。こうすることで、更新したい場合は 1 か所で更新でき、その変更はすべてのサイトに反映されます。これは、アプリケーションの複数のインスタンスを実行することでスケーリングできると思います。

ドメイン/サブドメインを使用して、表示するデータを決定できると思います。たとえば、誰かが subdomain1.mysite.com にアクセスすると、アプリケーションはデータベースで subdomain1 のコンテンツを検索します。

私が目にする問題は、ほとんどの構築済みの CMS ソリューションにあります。それらは、使用したいサイトを含む 1 つのサイトのみをホストするように設計されています。そのため、データベースは 1 つのサイトで動作するように構成されています。ただし、サイトごとに「新しいデータベースを作成」し、上記のようにドメイン/サブドメインに基づいて接続するデータベースを指定することで、これを克服できるという考えがありました。

これを Heroku でホストすることを考えているので、これに対する私のオプションは何だろうと思っています。私は Amazon S3 や Amazon SimpleDB にはあまり詳しくありませんが、サイトごとに新しい MySQL データベースを作成するよりも、このソリューションをより現実的なものにするある種の「クラウド データベース」があるように感じます。

どう思いますか?私はこれについて間違った方法で考えていますか?この分野で何かアドバイスはありますか?

4

2 に答える 2

0

私はこのようなRailsアプリに取り組んできましたが、そこで行われた方法は、実行中の各サイトのdbエントリを使用した名前ベースの仮想ホストでした。各レコードは、必要に応じてサイト(ブログ投稿など)にスコープされ、ユーザーはそのデータベースが不足しているすべてのサイトにアクセスできます。管理者権限は、グローバルにすることも、1つ以上のサイトにスコープすることもできます。

プロジェクト中に車輪の再発明を何百万回も行うと言ったとき、あなたは絶対に正しいです。プラグインは、CMS自体に加えてハッキングを必要とする可能性があります。

私の状況では、各クライアントサイトの気まぐれに対応しながら、複数のサイトを実行するためのコードベースを構築することは、企業の資金のほぼ100万ドルの無駄になりました。それは機能しましたが、その後コードベースに侵入したサイト固有のハッキングの数が多かったため、あまり保守できませんでした。プラットフォームで実行されている特定のクライアントサイトへのケータリングについて心配する必要がない場合は、それを機能させることができる場合があります。

最終的には、方法論に関係なく、さまざまなサイトを処理するための間接参照のレイヤーが必要になります。最終的にデータベース自体に配置しました。前述のdifferent-db-for-each-siteメソッドを使用する場合は、代わりにそのレイヤーをコードに配置します。どちらが良い方法かわかりません。

あなたがこれをやってのけることができることを願っています。私は失敗しました。

また、今日学んだように、Herokuはmysqlforrailsアプリの代わりにpostgresを提供しています。

于 2010-06-06T17:59:48.950 に答える
0

Rails 2.3 用の James Stewart のTheme Support Pluginと、Rails 3+ 用の lucasefe のthemes_for_rails gemがあります。

バージョン 2.3 を使い始めたばかりですが、今のところ問題なく動作しています。

于 2011-04-10T13:02:23.510 に答える