Настройка различных сред (разработка, производство) на основе URL - PullRequest
6 голосов
/ 16 апреля 2011

Я пытаюсь настроить окружение в Drupal на основе URL.Например, если я зайду на mysite.local, он будет использовать localdb и изменит имя сайта на «Local Mysite»;если я зайду на mysite.com, он автоматически переключится на использование productiondb и установит имя «Mysite».

Это аналогичная настройка, которую я использую для большинства основанных на 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 уже (я не хочу использовать разные сайты, только разные настройки для одного и того же сайта), и есть какое-то соглашение, когда этот переключатель должен произойти (я сейчас думаю о настройках.php).

Ответы [ 3 ]

4 голосов
/ 17 апреля 2011

Лично я не фиксирую файл settings.php в системе управления версиями (settings.default.php), а затем просто сохраняю собственный файл settings.php, основанный на файле settings.default.php, в каждой среде.

Однако, если вы предпочитаете настраивать свои среды таким образом, то что-то подобное будет работать в вашем файле sites / default / settings.php.

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

switch ($_SERVER['SERVER_NAME']) {
  case DEVELOPMENT:
    // development server
    $db_url = 'mysql://user:pass@localhost/mydb_dev';
    $db_prefix = '';
    $base_url = 'http://mysite.local';
    $conf = array(
     'site_name' => 'Development Environment',
    );
    break;

  default:
    // live server
    $db_url = 'mysql://user:pass@localhost/mydb_prod';
    $db_prefix = '';
    $base_url = 'http://mysite.com';
    $conf = array(
     'site_name' => 'My Site',
    );
    break;
}

Помните, что для каждой из этих переменных, которые вы здесь используете, вам нужно комментировать, если они определены в других частях settings.php.

Я также должен добавить, что я считаю, что использование мультисайтов для целей среды разработки - плохая идея, и я думаю, по той же причине я предпочитаю, чтобы в каждой среде был свой собственный файл settings.php. В большинстве случаев я предпочитаю сохранять код переносимым, так как мне не нужны ссылки на код или файловую систему для какой-либо среды, кроме файла настроек для среды, в которой я запускаю код.

Использование многопользовательской функциональности Drupal для каждой среды, в которой вы нуждаетесь для разработки и развития, как предлагают другие, было бы безумным для управления.

1 голос
/ 16 апреля 2011

То, что вы описываете, называется многосайтовая конфигурация , в Drupal.
Сказав несколько слов, в многосайтовой конфигурации вы настраиваете Drupal для использования различных файлов конфигурации на основедоменное имя, используемое для доступа к сайту.Он позволяет использовать один и тот же код для разных доменных имен, которые указывают все на один и тот же сервер, как в вашем случае, когда вы хотите получить доступ к одному и тому же веб-серверу, используя разные доменные имена.

Вас также интересует, чтосообщается в Запуск нескольких сайтов из одной и той же кодовой базы (несколько сайтов) .

0 голосов
/ 16 апреля 2011

Я думаю, что вы хотите использовать отдельные сайты. У меня похожая настройка, и у каждого сайта есть свой файл settings.php. Но потом я сделал ссылку на каталог модулей и тем, чтобы у меня не было дубликатов файлов. Но если вы настраиваете одну среду для разработки, вы захотите оставить их отдельно.

Итак, у меня есть что-то вроде этого:

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.

...