Skip to main content

Создание многосайтовости на Bitrix

 Настройка симлинков (вариант 1)

Первый вариант (зеленым цветом приведены примеры для установки на 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. перенесите весь каталог /home/www/site1/local/ в /home/www/shared/local/:
    mv /home/www/site1/local /home/www/shared/local
  6. создайте символическую связь для каталога /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/local /home/www/site1/
    4. ln -s /home/www/shared/bitrix /home/www/site2/
    5. ln -s /home/www/shared/upload /home/www/site2/
    6. ln -s /home/www/shared/local /home/www/site2/
  7. убедитесь, что веб-сервер (Apache, IIS) имеет право на запись в каталог /home/www/shared/ (это необходимо будет для работы системы обновлений и загрузки графических файлов)
  8. разместите публичную часть второго сайта в каталог /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. Установите программный продукт «1С-Битрикс: Управление сайтом» сначала в каталог первого сайта /home/www/site1/
  2. Создайте в корневой папке второго сайта (/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>
  1. Запустите скрипт и укажите путь к корневой папке первого сайта, в нашем случае /home/www/site1/.
  2. После того как символьные ссылки созданы, наберите в адресной строке браузера site1/bitrix/admin. Откроется панель авторизации.
  3. Введите данные администратора, которые указывали при установке продукта на первый сайт, и попадете в административную панель «1С-Битрикс: Управление сайтом».

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

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

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

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

 

Настройка многосайтовости вручную с помощью терминала

 

Открываем терминал либо 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 
  1. Заходим в файловый менеджер beget

    изображение.png

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

    изображение.png


Настройка многосайтовости, инструкция от Beget

Многосайтовость. официальная инструкция от Bitrix