Как настроить многосайтовость битрикс

Для работы многосайтовости на разных доменах нам потребуется произвести настройку программного продукта. Настройку веб-сервера Apache, как и в случае с многосайтовостью на одном домене, должна произвести хостинговая компания.

Будем использовать для примера конфигурацию из двух сайтов:

  • www.site1.com — корпоративный сайт компании
  • www.site2.com — интернет-магазин компании

Настройка многосайтовости на разных доменах

Каждый сайт надо разместить в соответствующем каталоге, например:

  • /home/www/site1/
  • /home/www/site2/

Установка продукта и настройка символьных ссылок

Продукт устанавливается в один из сайтов. Чтобы ядро могло работать для обоих сайтов, необходимо создать символьные ссылки для сайта, в котором нет установленного ядра. Ссылки потребуются для папок /bitrix и /upload.

Примечание:Есть возможность простого копирования указанных папок из первого сайта во второй. При таком копировании получится две копии ядра, которые работают с одной базой данных. Такой вариант будет работать, но есть два отрицательных момента: технический и юридический. Техническая проблема заключается в том, что после обновления одного из ядер обновится база данных и второй сайт перестанет работать. Юридическая проблема заключается в том, что, копирование ядра противоречит лицензии на продукт.

 

Примечание:Технически возможно (но не рекомендуется) копирование указанных папок в некоторую внешнюю папку, на которую для всех сайтов настраиваются символические ссылки.

 

Символьная ссылка: (также симлинк от англ. Symbolic link, символическая ссылка)Cпециальный файл, для которого в файловой системе не хранится никакой информации, кроме одной текстовой строки. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке.

Практически символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как позволяют одному файлу или каталогу иметь несколько имён и свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одного раздела и не могут ссылаться на каталоги).

Ссылки можно создать двумя способами. Первый — классический, который рекомендовался компанией с самого начала. Второй — более поздний, считается более «красивым и изящным». В нем отсутствует шаг создания отдельной папки и переноса в нее ядра системы.

Первый вариант (зеленым цветом приведены примеры для установки на UNIX системы):

  1. установите программный продукт «1С-Битрикс: Управление сайтом» сначала в каталог первого сайта /home/www/site1/
  2. создайте каталог /home/www/shared/, в котором будут располагаться общие для всех сайтов файлы:
    mkdir /home/www/shared
  3. перенесите весь каталог /home/www/site1/bitrix/ в /home/www/shared/bitrix/:
    mv /home/www/site1/bitrix /home/www/shared/bitrix
  4. перенесите весь каталог /home/www/site1/upload/ в /home/www/shared/upload/:
    mv /home/www/site1/upload /home/www/shared/upload
  5. создайте символическую связь для каталога /bitrix/ в каждом из сайтов:
    1. ln -s /home/www/shared/bitrix /home/www/site1/
    2. ln -s /home/www/shared/upload /home/www/site1/
    3. ln -s /home/www/shared/bitrix /home/www/site2/
    4. ln -s /home/www/shared/upload /home/www/site2/
  6. убедитесь, что веб-сервер (Apache, IIS) имеет право на запись в каталог /home/www/shared/ (это необходимо будет для работы системы обновлений и загрузки графических файлов)
  7. разместите публичную часть второго сайта в каталог /home/www/site2/
Примечание:Для создания символьных связей в Windows необходимо воспользоваться дополнительными программами, например, Far Manager или Junction от Sysinternals.

 

Важно!Файловая система FAT32 не поддерживает создание символьных ссылок.

При настройке многосайтовой конфигурации на UNIX, можно воспользоваться программным методом создания символьных ссылок:

<?
symlink("/virt/homes/forinsured/bitrix", "/virt/homes/forinsured/htdocs/bitrix");
symlink("/virt/homes/forinsured/upload", "/virt/homes/forinsured/htdocs/upload");
?>

Примечание:В ряде случаев, например если web сервер работает в chroot, необходимо делать относительные ссылки.

Пример:
/var/www/s1 — первый сайт
/var/www/s2 — второй сайт
/var/www/shared — папка с ядром системы

Заходим в /var/www/s1 и создаём ссылки:
ln -s ../shared/bitrix bitrix
ln -s ../shared/upload upload

Переходим в /var/www/s2 и выполняем те же команды.

Второй вариант. В нем символьные ссылки создаются непосредственно в папке второго сайта.

    1. Установите программный продукт «1С-Битрикс: Управление сайтом» сначала в каталог первого сайта /home/www/site1/
    2. Создайте в корневой папке второго сайта (/home/www/site2/) скрипт, например, под именем symlink.php:
<html>
<head><title>Создание ссылок на папки bitrix и upload</title></head>
<body>
<?
error_reporting(E_ALL & ~E_NOTICE);
@ini_set("display_errors",1);
if ($_POST['path'])
   $path = rtrim($_POST['path'],"/\\");
else
   $path = '../site2/www';
if ($_POST['create'])
{
   if (preg_match("#^/#",$path))
      $full_path = $path;
   else
      $full_path = realpath($_SERVER['DOCUMENT_ROOT'].'/'.$path);
   if (file_exists($_SERVER['DOCUMENT_ROOT']."/bitrix"))
      $strError = "В текущей папке уже существует папка bitrix";
   elseif (is_dir($full_path))
   {
      if (is_dir($full_path."/bitrix"))
      {
         if (symlink($path."/bitrix",$_SERVER['DOCUMENT_ROOT']."/bitrix"))
        {
if(symlink($path."/upload",$_SERVER['DOCUMENT_ROOT']."/upload"))
               echo "<font color=green>Символические ссылки удачно созданы</font>";
            else
               $strError = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера';
         }
         else
            $strError = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера';  
      }
      else
         $strError = 'Указанный путь не содержит папку bitrix';
   }
   else
      $strError = 'Неверно указан путь или ошибка прав доступа';
   if ($strError)
      echo '<font color=red>'.$strError.'</font><br>Исходный путь: '.$full_path;
}
?>
<form method=post>
Путь к папке, содержащей папки bitrix и upload: <input name=path  value="<?=htmlspecialchars($path)?>"><br>
<input type=submit value='Создать' name=create>
</form>
</body> 
</html>
  1. Запустите скрипт и укажите путь к корневой папке первого сайта, в нашем случае /home/www/site1/.
  2. После того как символьные ссылки созданы наберите в адресной строке браузера site1/bitrix/admin. Откроется панель авторизации.
  3. Вводите данные администратора, которые указывали при установке продукта на первый сайт и попадете в административную панель «1С-Битрикс: Управление сайтом».

После завершения работы скрипта наличие символических ссылок на папки /bitrix и /upload в папке второго сайта можно проверить по появлению одноименных папок.

На этапе создания могут возникнуть проблемы:

  • отсутствия прав на запись в текущую папку;
  • ограничение безопасности (open_basedir), которое не позволяет пользователям разделяемого хостинга обращаться к другим сайтам.

В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру.

Конфигурирование сайтов

Настройка сайтов выполняется в административном разделе системы на странице Настройки > Настройки продукта > Сайты > Список сайтов.

В строке первого сайта (www.site1.com), в колонке действий выбираем команду Изменить и указываем в них:

  • Название: site1
  • Доменное имя: www.site1.com
  • Папка сайта: /
  • Название сайта: Корпоративный сайт компании «Название компании«
  • URL сервера: www.site1.com
  • Путь к корневой папке веб-сервера для этого сайта: /home/www/site1/

Если DNS настроен таким образом что ваш сайт отвечает на адрес http://site1.com, то в поле Доменное имя желательно указывать без www. Можно перечислить в этом поле с новой строки любое число доменных имен, по которым вы хотите, чтобы отвечал сайт (или уже отвечает).

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

Очень важно не указывать в списке доменов сайты, которые не работают на данном экземпляре продукта. Указанный неправильно или несуществующий домен может не только замедлить работу пользователей, но и фактически не позволит перенести данные в сайты, работающие не на общем экземпляре продукта.

Аналогично настроим параметры второго сайта (www.site2.com/):

  • Название: site2
  • Доменное имя: site2.com
  • Папка сайта: /
  • Название сайта: Интернет-магазин компании «Название компании«
  • URL сервера: www.site2.com
  • Путь к корневой папке веб-сервера для этого сайта: /home/www/site2/

Обратите внимание, что для двух сайтов в параметре Папка сайта указано одинаковое значение: «/«. Это связано с тем, что сайты обслуживаются разными «виртуальными серверами» (в терминологии Apache) у которых для размещения файлов использован разный каталог.

Также необходимо обратить на параметр Путь к корневой папке веб-сервера для этого сайта. Для разных сайтов у него свое значение, взятое из параметраDocumentRoot настроек соответствующего «виртуального сервера» (см. ниже пример части файла httpd.conf настроек Apache).

Примечание:Необходимо иметь в виду, что при организации многосайтовости по данному способу, вы можете использовать как виртуальные сервера одной установки Apache, так и просто разные установки Apache. Это справедливо для других веб-серверов: IIS, EServ и т.д.

 

Важно: при создании второго сайта необходимо скопировать с основного сайта или заново создать файлы /.htaccess и /404.php.

 

Файл .access.php

Создайте файл .access.php c таким содержанием в корне второго сайта:

<? $PERM["/"]["*"]="R"; ?>
Примечание:Для данного способа организации многосайтовости не требуется настраивать на индексной странице алгоритм выбора сайтов, как это делается приПсевдомногосайтовости, т.к. сайт будет однозначно определяться по полю Доменное имя.

Конфигурация готова к работе.

Вход в систему

  • Наберите в адресной строке браузера http://site1/bitrix/admin (или http://site2/bitrix/admin). Откроется панель авторизации.
  • Вводите данные администратора, которые указывали при установке продукта на первый сайт и попадете в административную панель «1С-Битрикс: Управление сайтом«.

Поскольку ядро одно и база одна — административная панель для обоих сайтов будет одинаковая.

Технически система допускает создание произвольного числа сайтов работающих по этой схеме. В каждом из вновь создаваемых сайтов необходимо настроить веб-сервер и создать символическую ссылку. Юридически для создания каждого нового сайта (кроме первых двух) необходимо приобрести дополнительный купон.