Создание многосайтовости на Bitrix
Настройка симлинков (вариант 1)
Первый вариант (зеленым цветом приведены примеры для установки на UNIX системы):
- установите программный продукт "1С-Битрикс: Управление сайтом" сначала в каталог первого сайта
/home/www/site1/ - создайте каталог
/home/www/shared/, в котором будут располагаться общие для всех сайтов файлы:
mkdir /home/www/shared - перенесите весь каталог
/home/www/site1/bitrix/в/home/www/shared/bitrix/:
mv /home/www/site1/bitrix /home/www/shared/bitrix - перенесите весь каталог
/home/www/site1/upload/в/home/www/shared/upload/:
mv /home/www/site1/upload /home/www/shared/upload - перенесите весь каталог
/home/www/site1/local/в/home/www/shared/local/:
mv /home/www/site1/local /home/www/shared/local - создайте символическую связь для каталога
/bitrix/в каждом из сайтов:
- ln -s /home/www/shared/bitrix /home/www/site1/
- ln -s /home/www/shared/upload /home/www/site1/
- ln -s /home/www/shared/local /home/www/site1/
- ln -s /home/www/shared/bitrix /home/www/site2/
- ln -s /home/www/shared/upload /home/www/site2/
- ln -s /home/www/shared/local /home/www/site2/
- убедитесь, что веб-сервер (Apache, IIS) имеет право на запись в каталог
/home/www/shared/(это необходимо будет для работы системы обновлений и загрузки графических файлов) - разместите публичную часть второго сайта в каталог
/home/www/site2/
Примечание: Для создания и удаления символьных ссылок в Windows (начиная с Vista) есть команда mklink, либо воспользуйтесь дополнительными программами.
Важно! Файловая система FAT32 не поддерживает создание символьных ссылок.
При настройке многосайтовой конфигурации на 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 и выполняем те же команды.
Настройка симлинков (вариант 2)
В этом варианте символьные ссылки создаются непосредственно в папке второго сайта.
- Установите программный продукт «1С-Битрикс: Управление сайтом» сначала в каталог первого сайта
/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. Откроется панель авторизации. - Введите данные администратора, которые указывали при установке продукта на первый сайт, и попадете в административную панель «1С-Битрикс: Управление сайтом».
После завершения работы скрипта наличие символических ссылок на папки /bitrix, /local и /upload в папке второго сайта можно проверить по появлению одноименных папок.
На этапе создания могут возникнуть проблемы:
- отсутствия прав на запись в текущую папку;
- ограничение безопасности (open_basedir), которое не позволяет пользователям разделяемого хостинга обращаться к другим сайтам.
В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру.
Настройка многосайтовости вручную с помощью терминала
Bash скрипт
Так же можно воспользоваться простым готовым bash скриптом из статьи
Открываем терминал либо ssh к хостингу. Открываем в нём директорию сайта public_html
Там скриптом создаём симлинки по синтаксису:
ln -s папка_к_которой_ссылаетесь название_симлинка
Тоесть нам нужны 3 симлинка на bitrix, local и upload
ln -s /home/s/supporad/bereg-nn.ru/public_html/bitrix bitrix
ln -s /home/s/supporad/bereg-nn.ru/public_html/local local
ln -s /home/s/supporad/bereg-nn.ru/public_html/upload upload
Удалить симлинк можно командой:
unlink название_симлинка
Обязательно настраиваем общий доступ к директориям: bitrix, local и upload
После этого, чтобы не получить ошибку доступа на главной странице
Fatal error: Uncaught Error: Failed opening required '/home/s/supporad/resto-bereg.ru/public_html/bitrix/header.php' (include_path='.:/usr/share/php') in /home/s/supporad/resto-bereg.ru/public_html/index.php:1 Stack trace: #0 {main} thrown in /home/s/supporad/resto-bereg.ru/public_html/index.php on line 1
- Заходим в файловый менеджер beget

- Заходим по очереди в три перечисленные выше директории и проставляем там такие права:
