Многосайтовость на битрикс нужно ли покупать лицензию.

Для работы многосайтовости на разных доменах нам потребуется произвести настройку программного продукта. Настройку веб-сервера 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, можно воспользоваться программным методом создания символьных ссылок:

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

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

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

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

    1. Установите программный продукт «1С-Битрикс: Управление сайтом» сначала в каталог первого сайта /home/www/site1/
    2. Создайте в корневой папке второго сайта (/home/www/site2/) скрипт, например, под именем symlink.php :
Создание ссылок на папки bitrix и upload Символические ссылки удачно созданы"; else $strError = "Не удалось создать ссылку на папку upload, обратитесь к администратору сервера"; } else $strError = "Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера"; } else $strError = "Указанный путь не содержит папку bitrix"; } else $strError = "Неверно указан путь или ошибка прав доступа"; if ($strError) echo "".$strError."
Исходный путь: ".$full_path; } ?>
Путь к папке, содержащей папки bitrix и upload:
  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 таким содержанием в корне второго сайта:

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

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

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

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

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

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

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

Многие обладатели лицензии 1С битрикс знают о многосайтовости на этой платформе, как она строится и функционирует. Возможно, кто-то использует этот функционал в полном объеме, а кто-то собирается внедрить его в свой сайт. В том или ином случае данное виде будет интересно как начинающим пользователям, так и тем, кто с этим функционалом работает. Я покажу не просто как установить на одной лицензии второй сайт, а покажу принципы работы данного механизма, постараюсь объяснить все понятным и доступным языком.

Многосайтовая конфигурация 1С Битрикс

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

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

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


Ко всему этому можно добавить следующий плюс, при установленных модулей из маркеплейс, будь они платные или бесплатные, все это привязываются к одной лицензии, это дает возможность приобретенным модулем пользоваться на всех остальных сайтах при многосайтовой системе .

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

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

Детальный разбор многосайтовости на 1С Битрикс

По сути это один сайт, один экземпляр продукта, одна общая база данных и это все дает ряд преимуществ:

  • Мы можем управлять контентом, правами доступа пользователей, у нас единые права на управления модулями, мы можем управлять всеми сайтами и все это из одной административной панели;
  • Сама система авторизации едина, зарегистрировавшись, пользователь на одном проекте он автоматом имеет доступ к остальным в соответствии с его правами;
  • Сбор статистики можно собирать как по одному из проектов, так и в их сумме.



Многосайтовость можно реализовать двумя основными способами:

  • можно ее сделать на одном домене,
  • или создать на разных.


Каждый способ по своему хорош, имеет свои плюсы и минусы, и вам выбирать какой использовать. В данном уроке разберем первый вариант, реализуем многосайтовость на одном домене.

Многосайтовость на одном домене

Первый вариант это наиболее простой и не требует конфигурации веб-сервера, сайты размещаются по разным директориям на одном домене.

Как из данного примера видим второй сайт лежит в директории DWS что довольно легко реализуется:


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

Данный способ подойдет:

  • для создания сайтов на разных языках, где основной язык будет в первоначальной категории, а второстепенные в подкотегориях;
  • далее можем реализовать региональные сайтов одной компании;
  • если в дальнейшем планируете использовать одно доменное имя;
  • если нет возможности на виртуальном хостинге создать общий доступ к файлам.


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


Давайте на примере яндекса рассмотрим, как они применяют данный функционал.

Зайдя к ним на основной сайт - https://www.yandex.ru , они предлагают ряд сайтов. Сервис по картинкам нажимаем и открывается второй сайт https://yandex.ru/images/ вложенный в другой директории, тоже самое наблюдаем когда переходим в видео https://yandex.ru/video/ , или пользуемся дополнительными сервисами "каталог", его картинкам и так далее.

Я думаю вы поняли суть как можно это задействовать в своем бизнесе.

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

Создание и настройка сайта на одном домене

В первую очередь необходимо создать второй сайт.

Переходим в административную панель, (Настройки-> настройки продукта-> Сайты-> Список сайтов-> ), нажимаем, добавить сайт.

Перед нами появилась форма, которая принимает следующие поля:

  • ID – идентификатор сайта, он является обязательным, состоит из двухсимвольной комбинация, ru, en, s1, s2, и т.п.
  • Активация – включаем или отключаем данный сайт;
  • Название – обязательный параметр, в данное поле вписываем произвольное название сайта, оно используется системой для привязки к тому или иному сайту;
  • По умолчанию – полет по умолчанию, задействуется когда сайт использует несколько доменных имен, скажем так одинаковых, похожих между собой;
  • Доменное имя – каждое вписанное доменное имя, будет является маской. В данное поле вписываем доменное имя сайта, если их несколько, то каждое в новой строке. Данный функционал нам понадобится для реализации многосайтовости на разных доменах;
  • Папка сайта – поле обязательное для заполнения, указываемое значение используется как опорный уровень для построения логической и физической структуры в самом модуле и тут мы пропишем путь к второму сайту (/dws/);
  • Сортировка – задаем числовой параметр, приоритетности сайта в списке;
  • Путь к корневой папке веб сервера для этого сайта – указываем полный путь к папке, на которую настроена переменная DOCUMENT_ROT для данного сайта, используется это когда мы задействуем многосайтовость на разных доменах;
  • В секции параметры – задаем для сайта параметры под почтовые шаблоны;
  • Название сайта – прописываем название сайта, которое может быть использовано в почтовых шаблонах. Если значение не задать тогда оно будет браться из настроек главного модуля;
  • Url сервиса – текущий адрес будет использован для формирования почтовых сообщений. Адрес прописывается без http://. Если его не задать берется данный адрес из настроек главного модуля, данный функционал используется при многосайтовости на разных доменах;
  • E-mail адрес по умолчанию – тут можно задать почтовый адрес который будет использован в качестве значения макроса DEFAUL_EMAIL_FROM при формирование почтовых шаблонов. Если его не задать эти данные возьмутся из настроек главного модуля;
  • Региональные настройки – настройки по текущим языкам, формату даты, кодировки, направлению тексты;
  • Почтовые шаблоны – при помощи данной секции можем создать и привязать почтовые шаблоны к имеющимся сайтам или скопировать его;
  • Шаблон сайта – поможет запустить мастера установки готового решения, мы оставляем галочку по умолчанию и устанавливаем.

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

Но, а если перейдем в основную директорию, то перед нами откроется старый корпоративный сайт, в котором тоже своя структура и она не изменилась.

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

Изменения в системе после установки

Давайте сразу разберем, что у нас появилось, и какие изменения произошли в административной части.

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

Добавились под второй сайт дополнительных инфоблоки (каталог, новости, торговые предложения). Если перейти в сам инфоблок, видим что он, привязан к определенному сайту. Так же при необходимости можем привязать его к двум сайтам одновременно.

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


В списке сайтов, теперь отображаются два сайта, и у каждого, если перейти в него привязаны свои шаблоны.


Все это реализуется стандартным функционалом битрикса, без каких то либо предварительных настроек сервера.

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

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

Урок подготовил Горелов Денис

  • Разработка сайта с несколькими языковыми версиями
  • Разработка мобильного сайта
  • Разработка дополнительных сайтов подразделений и филиалов компании
  • Разработка сайта интернет магазина и его представительства

Особенности

  • Одно ядро продукта
  • Одна БД
  • Единый администратор на все сайты
  • Технология переноса авторизации

Перенос авторизации

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

Многосайтовость на одном домене

Особенности

  • Одно доменное имя
  • Отдельный каталог для дополнительного сайта

Пример: www.mycompany.com/s1/ , www.mycompany.com/s2/ или www.mycompany.com , www.mycompany.com/s2/ .

Принцип

Создается папка, например s2, туда закидывается контент, назначается шаблон сайта, настраивается многосайтовость

Настройка

В настройках сайта (настройки продукта -> сайты -> список сайтов) установить следующие параметры для сайтов s1 и s2:

  • название
  • папка сайта (для s1 "/" или "/s1/")
  • название веб сайта
  • url сервера (одинаковые)

Многосайтовость на разных доменах

Принцип

  • Отдельное доменное имя для дополнительного сайта
  • Отдельный веб-сервер для дополнительного сайта

Серверные настройки

  • настройка веб сервера
  • делегирование доменов

Виртуальная машина Bitrix

В BitrixVM добавляются два сайта.

Делегирование доменов

В примере курса был отредактирован файл hosts .

Настройка сайтов

В папку первого сайта установить битрикс. Затем в папке второго сайта делаются симлинки на папку bitrix и upload первого сайта.

ln -s /home/bitrix/ext_www/site_one/bitrix /home/bitrix/ext_www/site_two
ln -s /home/bitrix/ext_www/site_one/upload /home/bitrix/ext_www/site_two

Скопировать на второй сайт файлы:

  • access.php
  • .htaccess
  • 404.php
  • index.php

У сайтов указываются следующие настройки:

  • название
  • доменное имя
  • папка сайта
  • название веб сайта
  • url сервера
  • путь к корневой папке веб сервера

Вынесение раздела сайта в поддомен на примере форума

  1. Создаем папку forum
  2. разместим в ней комплексный компонент forum
  3. в настройках сайта добавляем доменное имя mysite.ru и forum.mysite.ru
  4. в папке forum создаем символические ссылки на папки bitrix и upload
  5. для подключения шаблона используем php условие $SERVER["HTTP_HOST"] == "forum.mysite.ru"

При данном варианте меню на вынесенном поддомене не будет работать, т.к. для этого необходимы абсолютные пути в меню.

Псевдомногосайтовость

  1. Создается поддомен.
  2. В настройках сайта указывается данное доменное имя.
  3. На индексной странице размещается код:
// подключим файл с классом CMainPage
require ($_SERVER [ "DOCUMENT_ROOT" ] . "/bitrix/modules/main/include/mainpage.php" ) ;
// получим идентификатор текущего сайта по доменному имени
$site_id = CMainPage: : GetSiteByHost () ;
// получим абсолютный путь к индексной странице папки сайта
$page = CMainPage: : GetIncludeSitePage ($site_id ) ;
// если сайт определен и определена индексная страница то
if (strlen ($site_id ) > 0 && strlen ($page ) > 0 ) {
// подключим страницу
require_once ($page ) ;
} else { // иначе если сайт не определен то
require ($_SERVER [ "DOCUMENT_ROOT" ] . "/bitrix/header.php" ) ;
// далее можно разместить код который будет отображаться если
// сайт ранее не был определен
require ($_SERVER [ "DOCUMENT_ROOT" ] . "/bitrix/footer.php" ) ;
}

Много сайтов

Решение бизнес-задачи по общему принципу «на каждый веб-ресурс своя система управления» является неэффективным; и особенно неэффективным, когда каждый раз система управления разная. Возникающие при таком подходе проблемы следующие:

  1. Излишние финансовые затраты, требуемые на покупку или разработку систем управления сайтами.
  2. Различные точки входа в управление сайтами, различный интерфейс управления.
  3. Разные системы авторизации и базы данных пользователей сайтов.
  4. Различное рекламное пространство.
В итоге компания имеет децентрализацию в управлении своими веб-проектами. Тратятся излишние ресурсы на создание веб-решений, а решение бизнес-задач в сети Интернет затягивается. Посетители веб-проектов компании также могут испытывать неудобства при работе с ними.

«1С-Битрикс» предлагает изменить данную ситуацию. На каждом экземпляре продукта можно создать множество сайтов в соответствии с применяемой схемой лицензирования.

Почему возникла необходимость создания многосайтовых систем и что это вообще означает? Чтобы ответить на этот вопрос я приведу вам красноречивый пример нашего разговора с клиентом.

К нам за консультациями по выбору оптимального решения обратилась компания, занимающаяся издательской деятельностью. Руководитель интернет-направления рассказал, что у них одновременно функционируют 18 самых разных сайтов. И на каждом сайте есть какая-то своя система управления контентом, какой-то механизм управления рекламой, где-то есть интернет-магазин со своими пользователями. У большинства проектов есть отдельные форумы со своими аккаунтами пользователей, где-то есть статистика, блоги…

«И вот теперь представьте, говорит он, мою табличку в Excel, где у меня хранятся все мои пароли на доступ к этому заповеднику! Ну ладно мы своих сотрудников смогли заставить помнить пароли и работать с этим, но я же не могу клиентов заставить так работать?! Мы, фактически, уже потеряли контроль над процессом разработки, обновления проектов, мы не можем открывать новые проекты…
Мне нужна система, которая будет не только для одного сайта объединять нужный мне функционал, но и позволит все сайты объединить в единой системе управления, с единой системой авторизации и безопасности, когда клиенту достаточно будет зарегистрироваться на любом из сайтов, и он сможет работать со всеми другими сайтами. Мы его будем узнавать и предлагать ему дополнительные сервисы».

Понимая данную проблематику, мы и реализовывали МНОГОСАЙТОВОСТЬ во всех редакциях программного продукта «1С-Битрикс: Управление сайтом», начиная еще с версии 4.0. Более того, каждая редакция нашего продукта (кроме "Первый сайт" и "Старт" включает лицензию на неограниченное количество сайтов. Т.е. на базе редакции «Бизнес» вы можете создать несколько проектов, объединенных системой управления , и один проект может быть большим порталом , а второй - масштабным интернет-магазином и тп. .

Любопытно, но по мере роста присутствия вашей компании в Интернете, число проектов у вас будет неуклонно расти. И если на одном или двух проектах вы еще не очень остро почувствуете проблемы несогласованности, каждый новый проект будет удваивать сложности и расходы, и замедлять ваше движение, если изначально ваши проекты не будут объединены в многосайтовую систему .

Артем Рябинков, ведущий аналитик, координатор проектов компании «1С-Битрикс»


Технология

Сайты и экземпляры

Под экземпляром продукта понимается приобретенная клиентом копия «1С-Битрикс: управление сайтом», использующая одну базу данных из списка поддерживаемых продуктом СУБД.

Под сайтом понимается совокупность следующих понятий:

  • Учетная запись в общей базе данных;
  • Публичная часть сайта (файлы и папки);
  • Настройки сайта.
Другими словами, сайт – это созданная в системе сущность, обладающая определенным набором данных (контента) и параметров (язык, шаблон дизайна, форматы даты и времени). Данные могут быть уникальными в рамках этого сайта (публичная часть, индивидуальные инфоблоки, веб-формы, опросы, форумы и т.п.) или разделяемыми между несколькими сайтами.

Технология многосайтовости

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

Таким образом, все сайты реализуются на базе одного экземпляра продукта и используют одну общую базу данных . Это имеет следующие неоспоримые преимущества:

  1. Единый интерфейс управления продукта позволяет унифицировано, из одной точки управлять всеми веб-проектами: изменять структуру, добавлять контент, управлять правами доступа и т.п.
  2. Единая система авторизации и единая база данных пользователей позволяет пользователю зарегистрироваться на одном веб-проекте, и в дальнейшем воспользоваться веб-сервисами и информацией на всех остальных ресурсах, в соответствии с его правами.
  3. Единая система сбора статистики как по каждому проекту по отдельности, так и с получением суммарных аналитических данных по всем проектам. Кроме того, благодаря технологи UserMultiSiteTransfer, выполняется распознавание посетителей, которые приходят на разные сайты в рамках многосайтовой конфигурации.
  4. Единое рекламное пространство, позволяющее компании или привлекаемому рекламодателю управлять размещением и показами баннеров из одной точки. А за счет технологии UserMultiSiteTransfer - распознавать посетителей и эффективно использовать баннерные показы.

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

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

Многосайтовость можно реализовать двумя основными способами.

В первом и наиболее простом даже не потребуется конфигурирование веб-сервера ! Каждый сайт в корневой папке веб-сервера будет размещаться в отдельной директории, например /site1/ и /site2/. В настройках каждого сайта указываются доменные имена, по которым они должны визуализироваться, и соответствующая директория с публичной частью сайта. В результате Битрикс автоматически будет подключать соответствующие скрипты в этих директориях, которые осуществят визуализацию контента.

Дистрибутив программного продукта поставляется сконфигурированным для работы по первому способу.

Второй прием позволяет максимально разделить публичные части сайтов. Для этого на веб-сервере (Apache, IIS) нужно сконфигурировать несколько виртуальных хостов (веб-серверов). Каждый сайт в системе получает собственную корневую директорию (Document Root), в которой располагается его публичная часть. Иногда каждый сайт может даже иметь собственный IP адрес. При этом, если в первом способе, сам продукт определяет - какой сайт подключать по заданным доменным именам, то здесь эта операция будет выполняться веб-сервером. Ядро системы при такой реализации физически расположено в одном месте, скажем, на основном сайте (папки /bitrix/ и /upload/), а на остальных сайтах делаются символические ссылки на данные папки.

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

Каждый вариант реализации абсолютно прозрачен как для посетителей сайтов, так и для поисковых машин Интернета. Не выполняется никаких редиректов, что не мешает корректному индексированию каждого ресурса поисковым роботом.

Лицензирование

В стандартную поставку продукта включена лицензия на неограниченное количество сайтов (кроме лицензий "Первый сайт" и "Старт") . Приобретая экземпляр «1С-Битрикс: Управление сайтом», вы бесплатно можете создать, например, русскоязычный и англоязычный ресурс, либо корпоративный сайт и интернет-магазин.

Все сайты, работающие на одной лицензии, должны размещаться на одном хостинге, и использовать одну копию программного продукта «1С-Битрикс: Управления сайтом».

Лучшая, на мой взгляд, статья, на тему организации многосайтовости в "1С-Битрикс". Очень доступно все описано.

Ну начнём с того, что на одной установке Битрикса можно сделать много сайтов (без покупки дополнительных лицензий можно сделать два сайта), а значит закроем первый вопрос: для настройки многосайтовости надо установить Битрикс только один раз .
Есть довольно подробный учебный курс, где описывается два способа настройки многосайтовости.


Какой способ выбрать?

Существует мнение, что пользователь выбирает для себя сам удобный способ многосайтовости, однако в действительности выбор способа зависит от настроек системы.

Первый способ предполагает (на папках), что сайты находятся в одном домене, но в разных папках. Он годится для создания сайтов на разных языках или, например, региональных сайтов одной компании.
Адреса сайтов будут иметь вид:

http://example.com/ru
http://example.com/en

или

http://example.com/
http://example.com/KGD
http://example.com/SPB

Если тематика сайтов разная, видимо, не обойтись без настройки второго способа, когда разные сайты находятся в разных доменах, пример:

http://www.bitrixsoft.ru/
http://www.bitrixsoft.com/

Оба сайта работают на одной копии продукта, но внешне это никак не проявляется. Это выглядит привлекательнее, но требует чуть больше усилий для настройки.
Особо хочу обратить внимание, что далее речь идёт о работе на хостинге, когда все настройки сервера делает администратор. Если вы настраиваете многосайтовость локально, необходимо предварительно настроить виртуальные веб сервера. Можно посмотреть об этом на официальном сайте Apache (и в русской части Интернета море статей на эту тему).

Теперь несколько слов о том, как система определяет текущий сайт.
Откроем настройки сайта (Настройки - Настройки продукта - Сайты - Список сайтов):

Здесь можно указать доменное имя и папку сайта - это основные параметры настройки многосайтовости, остальные определяют приоритеты.
Сначала система проверяет текущий домен: из настроек всех сайтов выбираются домены и сопоставляются с доменом на котором находится пользователь. При этом сравнивается только правая часть до точки (т.е. все поддомены автоматически относятся к этому домену). Например, в настройках указано
example.com
а пользователь открыл
www.example.com
будет считаться условие выполненным. Но если он откроет my-example.com - это уже другой домен, его надо отдельно указывать в списке доменных имён.
Если доменные имена не указаны или на разных сайтах указаны одинаковые домены, то определение происходит по папке сайта. Обратите внимание, что здесь указывается папка относительно корня сайта (т.е. путь в URL), а не путь в файловой системе на сервере.
В дальнейшем идентификатор сайта используется для подключения шаблона, выбора новостей, определения языка и т.д.

Пример:
В настройках одного сайта указана папка / , другого /ru .
При открытии example.com/forum/messages/ попадаем на первый сайт, при открытии example.com/ru/forum/messages/ - на второй.
При этом папка bitrix (содержащая ядро продукта) лежит в корне, никуда не копируется и никакие другие настройки на сервере не делаются. Это всё понятно и просто.
Гораздо больше вопросов и проблем возникает с настройкой многосайтовости по второму способу, когда нам необходимо обслуживать одной установкой Битрикс несколько сайтов в разных доменах. Остановимся на этом подробнее.

Многосайтовость по второму способу (мини HOWTO)

Сначала нужно определиться, что мы хотим получить. Будем считать, что имеем два домена:

example.com
example.net

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

При этом хочу обратить внимание на следующие моменты:


  • все домены должны указывать на один сервер, вариант, когда разные домены настроены на разных хостеров, неприемлем;
  • в нашем случае (когда корневые папки доменов разные) не имеет значения, имеем мы разные домены второго уровня или поддомены одного домена (например, games.example.com и example.com ). А если быть вернее, то это вообще не имеет значения. То что нас действительно должно интересовать: общая ли у них корневая папка или нет;
  • вариант, когда настраивается большое число поддоменов, которые формируются динамически (например, vasya.example.com , kolya.example.com и т.д.) вообще не является многсайтовостью в контексте нашего продукта, и соответственно руководства многосайтовости сюда не применимы. Рассмотрим этот вариант ниже. Если говорить грубо, то многосайтовость Битрикса - когда настроено несколько сайтов в списке сайтов в настройках продукта.
Задача: настроить многосайтовость по второму способу на UNIX-хостинге.

Шаг за шагом.

1. Устанавливаем Битрикс на один из доменов (не важно, на какой). Для ясности считаем, что установили продукт на example.com . Пока никакие дополнительные настройки не делаем.

2. Теперь необходимо заставить работать ту же копию на втором домене.
Считаем, что публичная часть у сайтов разная (иначе зачем нужны разные сайты?), поэтому для второго сайта потребуется только ядро продукта (папка bitrix , ну и upload ). Теоретически, если их просто скопировать из первого сайта, то будет работать, но нас это не устроит (приходилось сталкиваться с такой "многосайтовостью").
Получим две копии ядра, которые работают с одной базой данных, после обновления одного из них обновится база данных, и второй сайт перестанет работать (ну и кроме того, копирование ядра противоречит лицензии).
Проблема решается использованием символических ссылок . Если говорить образно, ссылка выполняет задачу ярлыка на рабочем столе, который открывает программу, но сам программой не является.
Руководство по многосайтовости рекомендует выносить ядро в общую папку shared , затем делать символические ссылки в каждом сайте. Здесь для простоты изложения я упрощу этот шаг и сделаю ссылку с одного сайта на другой (с функциональной точки зрения разницы нет).
Набросал небольшой скрипт, который поможет создать символические ссылки при использовании только ftp доступа к серверу:

Код


Создание ссылок на папки bitrix и upload

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"]."/".$p ath);

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["DOCUM ENT_ROOT"]."/bitrix"))
{
if(symlink($path."/uploa d",$_SERVER["DOCUMENT_ROOT"]."/upload"))
echo "Символические ссылки удачно созданы";
else
$strError = "Не удалось создать ссылку на папку upload, обратитесь к администратору сервера";
}
else
$strError = "Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера";

}
else
$strError = "Указанный путь не содержит папку bitrix";
}
else
$strError = "Неверно указан путь или ошибка прав доступа";

If ($strError)
echo "".$strError."
Исходн ый путь: ".$full_path;
}
?>


Путь к папке, содержащей папки bitrix и upload:

Скрипт необходимо закачать в корневую папку второго сайта (в нашем случае, example.net ), затем после запуска указать путь к корневой папке первого сайта (или папке shared , если ядро находится в ней).
Предположим, первый сайт находится в папке:

второй:

Записываем скрипт в папку /var/www/denis/example.net/www , в поле путь пишем "../../example.com/www " или "/var/www/denis/example.com/www ". Если всё будет нормально, в папке /var/www/denis/example.net/www появятся нужные символические ссылки.
На этом этапе могут возникнуть проблемы:


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

В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру .
После того как ссылки созданы должно происходить следующее: набираем example.net/bitrix/admin , открывается панель авторизации, вводим данные администратора, которые указывали при установке продукта на example.com и попадаем в административную панель Битрикса.
Поскольку ядро одно и база одна - административная панель для обоих сайтов будет одинаковая (т.е. одна и та же).

Теперь надо скопировать с первого сайта .access.php (чтобы был доступ на чтение корневого раздела, при необходимости можно вручную отредактировать его, удалив всё кроме $PERM["/"]["*"]="R"; ) и index.php (который потом будет редактироваться).

3. Настройка сайтов.

Открываем настройки каждого сайта (Настройки - Настройки продукта - Сайты - Список сайтов ), указываем в поле "Доменное имя:" example.com и example.net соответственно для первого и второго сайта.
Последнее, что надо здесь сделать - указать путь на сервере к корневой папке каждого сайта (поле "Путь к корневой папке веб-сервера для этого сайта:") для того чтобы модуль управления структурой построил дерево файлов каждого сайта (меню "Контент"):
указываем /var/www/denis/example.com/www и /var/www/denis/example.net/www соответственно.

4. Проверка публичной части.

Если всё было сделано правильно, сейчас на разных доменах должны открываться разные сайты. Для этого воспользуемся простейшим скриптом:

Код





Сохраним в корне обоих сайтов, при обращении к скрипту в домене example.com должен отобразиться идентификатор (двухбуквенное отображение) первого, в домене example.net - идентификатор второго сайта.

Всё. Задача решена.

А если общая корневая папка?

Это не удобно в первую очередь потому что публичная часть сайтов будет общая . Но если другого варианта нет, можно настроить многосайтовость и здесь. Только для разделения публичной части в корне сайта придётся создать папки для каждого сайта и фактически получится многосайтовость по первому способу .

Теперь коротко по шагам. Условия задачи прежние, но будем считать что домены example.com и example.net имеют одну корневую папку /var/www/denis/example

1. Ставим продукт в любом домене один раз .

2. Для разделения публичной части создаём в папке /var/www/denis/example папки com и net . Здесь ядро имеет путь /var/www/denis/example/bitrix для обоих сайтов, и символические ссылки создавать не требуется.

3. В настройках сайтов теперь помимо домена нужно указать папку сайта: /com и /net для первого и второго сайта.

4. Создаём индексную страницу сайта по примеру из учебного курса. Эта страница по домену будет определять текущий сайт и подключать соответствующую публичную часть. Только для этого надо было указать домены в настройках сайтов. Привожу здесь код скрипта:

Код

Настройка завершена.

Много поддоменов на одном сайте

К примеру, на сайте пользователи после регистрации получают свой домен вида user.example.com . При обращении к такому домену хотим открывать блог пользователя.

1. Лучше всего в такой ситуации для всех поддоменов использовать отдельную от основной корневую папку сайта. Договариваемся с хостером, что для example.com открывается /var/www/denis/example.com , а для всех поддоменов (за исключением www.example.com ) корневой папкой является /var/www/denis/blogs . Ставим Битрикс на example.com .

3. Создаём индексную страницу в папке /var/www/denis/blogs , размещаем на ней компонент bitrix:blog.blog . Обратите внимание, это не комплексный компонент блогов, а компонент, отображающий содержимое конкретного блога.

4. На этой же странице перед подключением компонента вставляем код, который будет определять текущий идентификатор блога на примере следующего:

Заключение

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