web-dev-qa-db-ja.com

default.settings.phpを設定して、開発、テスト、本番サイトで使用するにはどうすればよいですか?

私はdevtstおよびprd環境を使用していますDrupal 7サイトのセットアップ。私は- gitバージョン管理用。

devからtstに、およびtstからprd

ここで、dev、tst、およびprdサイトのsettings.phpを個別に更新する必要があります。

Default.settings.phpファイルを設定して、dev、tst、prdのすべての設定が1つのdefault.settings.phpに保存されるようにしたいと思います。 settings.phpにコピーした後、Drupalは環境に応じて適切な設定を選択します。

以下の疑似コードのようなものを探しています:

common.settings 

if environment = dev then
   ...
   dev.settings
   ...
else if environment = tst then
   ...
   tst.settings
   ...
else if environment = prd then
   ...
   prd.settings
   ...
end if

Drupal 7に対してこれを行う方法を正確に知っていますか?

8
Refineo

疑似コードで提案しているような同じ設定ファイルを使用しないでください。代わりに、3つの異なるフォルダーにある3つの異なる設定ファイルを使用します。各フォルダーは、各インスタンスのドメイン名に対応しています。

少なくとも、通常、各環境は個別のデータベースホストを使用します。環境によって異なるその他の設定には、Apache Solr Host、memcached設定、一時フォルダー、ファイルフォルダーなどがあります。それらすべてをそこに配置できます。データベースをPRODからTEST、DEVに移行すると、指定した設定が自動的に取得されます。

私のサイトの名前がmyfoobarsite.comだとします。これは私の設定構造がどのようになるかです:

/htdocs
../sites
..../default
....../default.settings.php
..../dev.myfoobarsite.com (DEV)
....../settings.php
..../qa.myfoobarsite.com (TEST)
....../settings.php
..../myfoobarsite.com (PROD)
....../settings.php

また、サイトのローカルインスタンスは通常2つあります。1つはPRODからの最新のデータベーススナップショットで、もう1つはすべての変更を保存します。これは、機能を操作するときに非常に役立ちます。コミットする前に、機能を(ローカルで)本番データベースに対してテストできます。変更された構造は次のとおりです。

/htdocs
../sites
..../default
..../dev.myfoobarsite.com (DEV)
..../qa.myfoobarsite.com (TEST)
..../myfoobarsite.com (PROD)
..../mfbs.local (LOCAL ONE)
....../settings.php
..../mfbs2.local (LOCAL TWO)
....../settings.php

ローカルインスタンスについては、/etc/hostsファイルに適切なエントリを作成し、Apacheホスト設定を変更することを忘れないでください。

念のため、settings.phpのスニペットもガイダンスとして配置しました。

<?php
$databases['default']['default'] = array(
    'database' => 'myfoobarsite',
    'username' => 'foo',
    'password' => 'bar',
    'Host' => '127.0.0.1',
    'port' => '3306',
    'driver' => 'mysql',
    'prefix' => '',
);

/**
 * Apache Solr settings.
 * Use the acquia_identifier/acquia_key when hosting w/ Acquia.
 * Specify only the apachesolr_path key for your local instance
 * or instances that do not use Acquia.
 */
//$conf["acquia_identifier"] = "ABCD-12345";
//$conf["acquia_key"] = "1234f05ab12345dc1234a1234bbc1c12";
$conf["apachesolr_path"] = "http://localhost:8983/solr";

/**
 * Filesystem settings (MAC OS X, LOCAL)
 */
$conf["file_public_path"] = "sites/default/files";
$conf["file_temporary_path"] = "/Users/amateurbarista/tmp";
$conf["file_private_path"] = "/Users/amateurbarista/Sites/tfk/private";

最後に、Acquiaでホスティングしている場合は、データベースを移行するたびにhttp://myfoobarsite.com/admin/config/system/acquia-agentに移動し、[キーのクリア]をクリックする必要があります。これにより、Drupalはインポートされたデータベースに付属するキーを削除し、設定ファイルで指定されたキーを取得します。

11
amateur barista

環境モジュール を使用して、環境ごとに異なるモジュールを使用することもできます。

指示

まず、dev/staging/productionサイトに独自のユニークなsettings.phpを設定する必要があります(一般的なパターンは、settings.phpからsettings.local.phpを要求することです)。このような設定がない場合は、このモジュールは必要ありません。

Staging/devの場合、settings.phpに次のようなものを追加します。environment_modulesが有効になると、これらのモジュールも有効になります。

例えば。

$conf['environment_modules'] = array(
  'devel' => 'sites/all/modules/devel/devel.module',
);

次の例を使用して、1つのsettings.phpを使用することもできます。

$env = $_ENV['AH_SITE_ENVIRONMENT']; // Acquia way: environment name
$env = $_SERVER['SERVER_NAME']; // or your server name, or whatever
$envModules = array(
    'default' => array( // By default it is development environment
      'devel' => 'sites/all/modules/contrib/devel/devel.module',
      'coder_review' => 'sites/all/modules/contrib/coder/coder_review/coder_review.module',
    ),
    'dev' => array(
      'devel' => 'profiles/mp_singapore/modules/devel/devel.module',
      'coder_review' => 'sites/all/modules/contrib/coder/coder_review/coder_review.module',
    ),
    'test' => array(
      'diff' => 'sites/all/modules/contrib/diff/diff.module',
    ),
    'prod' => array(
      'diff' => 'sites/all/modules/contrib/diff/diff.module',
    ),
);
$conf['environment_modules'] = $envModules[$env] ?: $envModules['default'];
0
kenorb