Многие новые пользователи Bitrix задумывались почему при покупке лицензии указано что на одной лицензии можно запустить 2 проекта, это может быть полностью 2 различных сайта, либо 2 сайта на разных языках, к примеру если вы ведете свой бизнес в России и в Украине, либо 2 региональных сайта, к примеру если вы ведете свой бизнес в Москве и Новосибирске. Расширять количество сайтов на одной лицензии естественно можно, т.е. если к примеру вы открываете филиал в Волгограде, то просто докупаете лицензию на дополнительный сайт в разы меньше если б вы покупали отдельную лицензию битрикс. к слову, стоимость дополнительного сайта на 70% дешевле отдельной CMS.
Многосайтовость — это только сложное слово, на самом деле, запустить 2 проекта на одной лицензии 1C-bitrix проще простого, достаточно владеть некоторыми азами в php и в администрировании сервера. Итак, в данной статье я расскажу вам как использовать функционал многосайтовость на битрикс.
Решение запуска проекта и бизнес-задачи по общему принципу «на каждый веб-ресурс своя система управления от битрикс» является не особо неэффективным; и особенно неэффективным, когда каждый раз CMS (система управления) разная.
- Возникающие при таком подходе проблемы таковы:
- Излишние финансовые затраты на покупку двух CMS, ну или разработку собственных самописных движков (систем управления) сайтами.
- Несколько параметров доступа в back-end CMS, ну и разный интерфейс управления.
- Разные системы авторизации и базы данных пользователей сайтов.
- Различное рекламное пространство.
В итоге компания имеет децентрализацию в управлении своими сайтами, тратятся излишние ресурсы на создание веб-проектов, а решение бизнес-задач в сети Интернет затягивается.
Использование многосатовости на битрикс позволяет на одной базе CMS иметь единый интерфейсс управления проэтами, общая авторизация на оба проекта, единая база пользователей которые прошли регистрацию, ну и единое рекламное пространство, позволяющее компании или привлекаемому рекламодателю управлять размещением и показами баннеров из одной точки.
Итак приступим к настройки многосатовости на битрикс. Первым делом определяемся со способом. Их два, это когда сайты находятся в одном домене, но в разных папках. На нем пока и остановимся.
Адреса сайтов будут выглядеть так:
site.ru/ru
site.ru/en
или
site.ru/
site.ru/MSK
site.ru/NSK
Если же направление вашего бизнеса различные и тематика сайтов разная, используется второго способ, это когда разные сайты находятся в разных доменах, пример:
site.ru и site.com
1. В настройках сайта (Администрирование: Настройки — Настройки продукта — Сайты — Список сайтов):
Здесь можно указать доменное имя и папку сайта — это основные параметры настройки многосайтовости на битрикс, остальные определяют приоритеты.
Сначала CMS проверит текущий домен: из настроек всех сайтов выбираются домены и сопоставляются с доменом на котором находится пользователь. При этом сравнивается только правая часть до точки (т.е. все поддомены автоматически относятся к этому домену). Например, в настройках указано site.com, а пользователь открыл www.site.com будет считаться условие выполненным. Но если он откроет my-site.com — это же уже другой домен, его надо отдельно указывать в списке доменов.
Если домены не указаны или на разных сайтах указаны одинаковые доменные имена, то определение происходит по папке сайта. Обратите внимание, что здесь указывается папка относительно корня сайта (т.е. путь в URL), а не путь в файловой системе на сервере.
В дальнейшем идентификатор сайта используется для подключения шаблона, выбора новостей, определения языка и т.д. (пример s1 или s2)
Пример:
В настройках одного сайта указана папка, другого /ru.
При открытии site.com/catalog/tovar/ попадаем на первый сайт, при открытии site.com/ru/catalog/tovar/ — на второй.
При этом папка bitrix (содержащая ядро продукта) лежит в корне, никуда не копируется и никакие другие настройки на сервере не делаются. Это всё довольно понятно и просто.
Гораздо больше вопросов и проблем возникает с настройкой многосайтовости на разных доменах, т.е. по второму способу.
Зачастую это самый используемый мной способ.
Итак допустим у нас есть 2 сайта с доменами site1.ru и site2.ru. У них разные серверные пути (коневые папки) вида /var/www/site/site1.ru/www и /var/www/site/site2.ru/www.
Хочу обратить внимание на следующий момент оба сайта должны находиться на одном сервере иначе ничего не выйдет
Итак чек-лист:
1. Устанавливаем Битрикс (Управление сайтом) на один из доменов к примеру на site1.ru;
Закачиваем скрипт создания симлинков на тот сайт который цепляем к лицензии. Заметьте грубо также можно просто скопировать ядро (папка bitrix) и папку /upload/ на второй сайт и также все будет работать, но при обновлении продукта обновится и база данных и второй сайт перестанет работать, к тому же копировать ядра запрещено лицензионным соглашением которое вы подписываете при покупке CMS. В Интернет я нашел скрипт который позволяет создавать симлинки (символические ссылки), т.е. по сути скрипт создает ссылку на папку ядра и /upload/ с одного сайта на другой, по факту же это просто как ярлык в windows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<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> |
2. Запускаем вышеуказанный скрипт, предварительна закачав его по ftp на сервер в корневую папку сайта site2.ru;
3. Прописываем в окне скрипта северный путь к сайту site1.ru вида /var/www/site/site1.ru/www, узнать который можно поместив в index.php строку
1 2 3 |
<?require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");?> <?echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';?> <?require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");?> |
4. После создания симлинков в настройках сайтов /bitrix/admin/site_edit.php?lang=ru&LID=22&tabControl_active_tab=edit1 необходимо прописать серверные пути к папкам на сервере;
5. Копируем с первого сайта файл .access.php (доступ на чтение корневого раздела) и index.php (который потом будет редактироваться).
6. Также в настройках сайтов необходимо указать наименование доменных имен сайтов в ДВУХ МЕСТАХ
7. Проверяем работоспособность обоих сайтов, для проверки можно указать в файле index.php в корне сайта:
1 |
<? echo "SITE_ID = ".SITE_ID; ?> |
Узнав ID сайта и сверив его с ID в админке bitrix можно понять правильно ли всё настроено.
8. Если все верно, удаляем закаченный ранее скрипт с сервера;
Всё готово! Был рад помочь.