Дата последнего изменения: 20.08.2024
Для работы многосайтовости на разных доменах нам потребуется произвести настройку программного продукта. Настройку веб-сервера Apache, как и в случае с многосайтовостью на одном домене, должна произвести хостинговая компания.
Будем использовать для примера конфигурацию из двух сайтов:
Каждый сайт надо разместить в соответствующем каталоге, например:
/home/www/site1/
/home/www/site2/
Продукт устанавливается в один из сайтов. Чтобы ядро могло работать для обоих сайтов, необходимо создать символьные ссылки для сайта, в котором нет установленного ядра. Ссылки потребуются для папок /bitrix
, /local
и /upload
. Эти папки являются общими для обоих сайтов, такова особенность архитектуры.
Ссылки можно создать двумя способами. Первый - классический, который рекомендовался компанией с самого начала. Второй - более поздний, считается более "красивым и изящным". В нем отсутствует шаг создания отдельной папки и переноса в нее ядра системы.
Первый вариант (зеленым цветом приведены примеры для установки на UNIX системы):
/home/www/site1/
/home/www/shared/
, в котором будут располагаться общие для всех сайтов файлы:
/home/www/site1/bitrix/
в /home/www/shared/bitrix/
:
/home/www/site1/upload/
в /home/www/shared/upload/
:
/home/www/site1/local/
в /home/www/shared/local/
:
/bitrix/
в каждом из сайтов:
/home/www/shared/
(это необходимо будет для работы системы обновлений и загрузки графических файлов) /home/www/site2/
При настройке многосайтовой конфигурации на UNIX, можно воспользоваться программным методом создания символьных ссылок:
<? symlink("/virt/homes/forinsured/bitrix", "/virt/homes/forinsured/htdocs/bitrix"); symlink("/virt/homes/forinsured/upload", "/virt/homes/forinsured/htdocs/upload"); symlink("/virt/homes/forinsured/local", "/virt/homes/forinsured/htdocs/local"); ?>
В ряде случаев, например если web сервер работает в chroot, необходимо делать относительные ссылки.
Пример:
/var/www/s1
- первый сайт
/var/www/s2
- второй сайт
/var/www/shared
- папка с ядром системы
Заходим в /var/www/s1
и создаём ссылки:
ln -s ../shared/bitrix bitrix ln -s ../shared/upload upload ln -s ../shared/local localПереходим в
/var/www/s2
и выполняем те же команды.В этом варианте символьные ссылки создаются непосредственно в папке второго сайта.
/home/www/site1/
/home/www/site2/
) скрипт, например, под именем symlink.php:<html> <head><title>Создание ссылок на папки bitrix, local и upload</title></head> <body> <? error_reporting(E_ALL & ~E_NOTICE); @ini_set("display_errors",1); if ($_POST['path']) $path = rtrim($_POST['path'],"/\\"); else $path = '../site1/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")) { if (symlink($path."/local",$_SERVER['DOCUMENT_ROOT']."/local")) echo "Символические ссылки удачно созданы"; else $strError = 'Не удалось создать ссылку на папку local, обратитесь к администратору сервера'; } else $strError = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера'; } else $strError = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера'; } else $strError = 'Указанный путь не содержит папку bitrix'; } else $strError = 'Неверно указан путь или ошибка прав доступа'; if ($strError) echo ''.$strError.'
Исходный путь: '.$full_path; } ?> <form method=post> Путь к папке, содержащей папки bitrix, local и upload: <input name=path value="<?=htmlspecialchars($path)?>"><br> <input type=submit value='Создать' name=create> </form> </body> </html>
/home/www/site1/
.site1/bitrix/admin
. Откроется панель авторизации.После завершения работы скрипта наличие символических ссылок на папки /bitrix
, /local
и /upload
в папке второго сайта можно проверить по появлению одноименных папок.
На этапе создания могут возникнуть проблемы:
В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру.
Настройка сайтов выполняется в административном разделе системы на странице Настройки > Настройки продукта > Сайты > Список сайтов.
В строке первого сайта (www.site1.com), в колонке действий выбираем команду Изменить и указываем в них:
Если DNS настроен таким образом, что ваш сайт отвечает на адрес http://site1.com, то в поле Доменное имя желательно указывать без www. Можно перечислить в этом поле с новой строки любое число доменных имен, по которым вы хотите, чтобы отвечал сайт (или уже отвечает).
Важно иметь в виду, что значения, указанные в поле Доменное имя, используются продуктом для распространения в указанные домены информации о посетителях по технологии переноса посетителей. Поэтому крайне желательно указывать полный список доменов, по которым может ответить сайт.
Очень важно не указывать в списке доменов сайты, которые не работают на данном экземпляре продукта. Указанный неправильно или несуществующий домен может не только замедлить работу пользователей, но и фактически не позволит перенести данные в сайты, работающие не на общем экземпляре продукта.
Аналогично настроим параметры второго сайта (www.site2.com/):
Обратите внимание, что для двух сайтов в параметре Папка сайта указано одинаковое значение: "/". Это связано с тем, что сайты обслуживаются разными "виртуальными серверами" (в терминологии Apache) у которых для размещения файлов использован разный каталог.
Также необходимо обратить внимание на параметр Путь к корневой папке веб-сервера для этого сайта. Для разных сайтов у него свое значение, взятое из параметра DocumentRoot
настроек соответствующего "виртуального сервера" (см. ниже пример части файла httpd.conf настроек Apache).
Необходимо иметь в виду, что при организации многосайтовости по данному способу, вы можете использовать как виртуальные сервера одной установки Apache, так и просто разные установки Apache. Это справедливо для других веб-серверов: IIS, EServ и т.д.
/.htaccess
и /404.php
.При включенной Проактивной защите второй сайт должен быть обязательно добавлен в список разрешённых доменов.
Создайте файл .access.php c таким содержанием в корне второго сайта:
<? $PERM["/"]["*"]="R"; ?>
Для данного способа организации многосайтовости не требуется настраивать на индексной странице алгоритм выбора сайтов, как это делается при Псевдомногосайтовости, т.к. сайт будет однозначно определяться по полю Доменное имя.
Конфигурация готова к работе.
Поскольку ядро одно и база одна - административная панель для обоих сайтов будет одинаковая.
Технически, система допускает создание произвольного числа сайтов, работающих по этой схеме. В каждом из вновь создаваемых сайтов необходимо настроить веб-сервер и создать символическую ссылку.
Есть особенность в установке значений в поле Сортировка сайтов в списке. Если второй сайт работает на
поддомене
Пример:
site1.com - первый сайт
site2.site1.com - второй сайт (на поддомене первого сайта)
домена первого сайта, то он в списке сайтов должен иметь
меньшее значение.
Например, сортировка у первого сайта - 500, сортировка у второго сайта (работающего на поддомене первого) - 400.
В противном случае, или при равенстве значения в поле Сортировка, система будет открывать первый сайт при обращении ко второму.
Для случаев, когда сайты находятся на
разных доменах
Пример разных доменов:
site1.com
site2.com
или
разных поддоменах,
Пример разных поддоменов:
bus.site.com
b24.site.com
сортировка может быть любой.