2011-04-16 11 views
6

私は、URLに基​​づいてDrupalで環境を設定しようとしています。 たとえば、mysite.localに行くと、localdbが使用され、サイトの名前が "Local Mysite"に変更されます。 mysite.comに行くと、自動的にproductiondbを使用して名前を "Mysite"に設定します。URLに基​​づいてさまざまな環境(開発、生産)を設定します

これは私が最もMVCベースのフレームワークで使用する同様の設定です:

define('DEVELOPMENT', 'mysite.local'); 
define('PRODUCTION', 'mysite.com'); 

switch ($_SERVER['SERVER_NAME']) { 
    case DEVELOPMENT: 
    // development server 
    $config['base_url'] = "http://mysite.local"; 
    $config['title'] = "DEVELOPMENT Mysite"; 
    $config['debug'] = 1; 
    break; 

    default: 
    // live server 
    $config['base_url'] = "http://mysite.com/"; 
    $config['title'] = "Mysite"; 
    $config['debug'] = 0; 
    break; 
} 

はDrupal7でそのような何かが、私は別のサイトを使用したくない(すでに同じサイトに対してのみ異なる設定あり)、そしてこのスイッチが起こる必要がある(私は現在settings.phpについて考えています)何らかの種類のコンベンションがあります。

+0

http://drupal.stackexchange.com/questions/9/suggestions-for-settings-php-local-dev-development-server-live-server/41#41、特に私の見解をお勧めします。そこに答えてください。 – Berdir

答えて

4

個人的に私はバージョンコントロールにsettings.phpをコミットしません(settings.default.phpは)、各環境でsettings.default.phpに基づいてカスタムsettings.phpファイルを保存してください。

しかし、あなたの環境をこのように設定したい場合、このようなものはサイトの/ default/settings.phpファイルで動作します。

ここでは、これらの変数のそれぞれについて、settings.phpの他の部分で定義されているかどうかをコメントする必要があります。

開発環境を目的としたマルチサイトは悪い考えだと私は付け加えます。同じ環境で、独自のcustom settings.phpファイルを持つのが好きなのと同じ理由だと思います。ほとんどの場合、私はコードを移植するのが好きです。私はコードを実行している環境の設定ファイル以外の環境にコードやファイルシステムの参照を必要としません。

Drupalのマルチサイト機能を使用して、開発とステージングが必要な環境であれば、ここで示唆しているように、管理するのが面倒です。

+0

おそらくこれは私が行く方法です。私はそれを必要とするので、私はSVNから直接展開することができます。ファイルを変更したり、毎回すべてが動作するようにしたりします。この問題は、ステージングサーバーを環境に追加するとさらに複雑になります。 –

+0

それは必要以上に複雑に思えますが、私はそれぞれの状況が異なることを知っています。 settings.default.phpをsettings.phpにコピーする(つまり、バージョンコントロールにないsettings.php)という方法を各環境で一度使用すると、設定ファイルは次のようにsvnからうまく展開できるはずです。触られることはありません。一度設定したsettings.phpファイルを一度設定するだけで、すべてのデータを一つのsettings.phpファイルで管理するよりも簡単で移植性が向上します。 – Coder1

+0

Drushは$ _SERVER ['HTTP_HOST']を使用しているようで、$ _SERVER ['SERVER_NAME']は使用していないようです。 – mperrin

0

私は別々のサイトを使用することがあなたの望むものだと思います。私は同様の設定をしており、それぞれのサイトにはそれぞれ独自のsettings.phpファイルがあります。しかし、私はモジュールとテーマのディレクトリをシンボリックリンクして、重複したファイルがないようにしました。しかし、開発用の環境を1つ設定する場合は、それらを別々にしておきたいと考えています。

だから私はこのようなものがあります:

drupal/sites/mysite.com/themes 
drupal/sites/mysite.com/modules 
drupal/sites/mysite.com/settings.php 

drupal/sites/mysite.local/themes => ../../mysite.com/themes 
drupal/sites/mysite.local/modules => ../../mysite.com/modules 
drupal/sites/mysite.local/settings.php 

drupal/sites/default => mysite.com 

DrupalはURLに基​​づいて、正しいサイト構成を使用しますが。

+0

これは私が欲しいものに似ていますが、シンボリックリンク(Windows Devマシン)を使うことができないので、Drupalの方が良い方法があるはずだと思っていました。別のマシン。私は短い答えは、このような場所に何もないと思うし、私は "マルチサイト"と一緒にやって、断片化につながるファイルやモジュールなどを繰り返すか、設定を編集する必要があります。私はそれを持っているようにPHPを設定してください... –

1

あなたが記述していることは、Drupalのmulti-site configurationと呼ばれています。
マルチサイト設定では、サイトにアクセスするために使用されたドメイン名に基づいて異なる設定ファイルを使用するようにDrupalを設定しています。異なるドメイン名を使用して同じWebサーバーにアクセスする場合と同じ、同じサーバーにすべてのドメイン名を指す異なるドメイン名に同じコードを使用することができます。

Run multiple sites from the same code base (multi-site)に報告されたことにも興味があります。

+0

ありがとう。 私はDrupalの "マルチサイト"機能を認識していますが、それは各環境ごとに異なるフォルダ、モジュール、アップロードなどを持つことを意味します。私は以前これを使っていましたが、私は別のものを求めています。同じサイトに対して異なる環境を設定できるようにしたい(サイトのフォルダは常に「デフォルト」ですが、URLに基​​づいて名前、データベースなどの設定が行われます)。言い換えれば、私は自分のローカルボックスに展開し、DBは自動的に私のローカルDBなどに切り替えるでしょう。 –