Вторник, 11 Сентябрь 2012 18:05

Простая многосайтовость Битрикса

Оцените материал
(3 голосов)

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

Здесь подразумевается многосайтовость с учетом того, что сайты будут располагаться на разных доменах. То есть, не так: www.first_site.ru и www.first_site.ru/second_site, при таком раскладе ничего настраивать не нужно. Я имею в виду вот такую связку: www.first_site.ru и www.second_site.ru (или second_site.first_site.ru).

Суть метода Шаромова Дениса заключается в создании символических ссылок на системные папки Битрикса. По сути, эти символические ссылки есть ни что иное, как банальные ярлыки (ну, в русскоязычной Винде это так называется, в Макоси — псевдонимы). А теперь внимание: этот способ подходит только для UNIX-хостинга, при чем, физические папки обоих сайтов должны располагаться на одном и том же сервере, доступ не должен быть ограничен. То есть, на примере ftp, вы должны иметь возможность один раз залогинившись в фтп-клиенте, попасть как на первый сайт, так и на второй. Вот пример:

Это структура взята с хостинга NIC. На одном тарифе два сайта. Работает все отлично. Теперь, когда вы осознали все нюансы, перейдем к пошаговой настройки многосайтовости.

1. Установка Битрикса. Вам необходимо установить Битрикс на основной домен. В нашем случае это будет www.first_site.ru.

2. Создание символических ссылок. Вот сама суть метода. Есть php-скрипт, который, судя по статье, и написал Шаромов Денис. Вот его код:

 Код скрипта

Посмотреть код
  1. <html>
  2. <head><title>Создание ссылок на папки bitrix и upload</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. </head>
  5. <body>
  6. <?
  7. error_reporting(E_ALL & ~E_NOTICE);
  8. @ini_set("display_errors",1);
  9.  
  10. if ($_POST['path'])
  11. $path = rtrim($_POST['path'],"/\\");
  12. else
  13. $path = '../../first_site.ru/docs';
  14.  
  15. if ($_POST['create'])
  16. {
  17. if (preg_match("#^/#",$path))
  18. $full_path = $path;
  19. else
  20. $full_path = realpath($_SERVER['DOCUMENT_ROOT'].'/'.$path);
  21.  
  22. if (file_exists($_SERVER['DOCUMENT_ROOT']."/bitrix"))
  23. $strError = "В текущей папке уже существует папка bitrix";
  24. elseif (is_dir($full_path))
  25. {
  26. if (is_dir($full_path."/bitrix"))
  27. {
  28. if (symlink($path."/bitrix",$_SERVER['DOCUMENT_ROOT']."/bitrix"))
  29. {
  30. if(symlink($path."/upload",$_SERVER['DOCUMENT_ROOT']."/upload"))
  31. echo "<font color=green>Символические ссылки удачно созданы</font>";
  32. else
  33. $strError = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера';
  34. }
  35. else
  36. $strError = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера';
  37.  
  38. }
  39. else
  40. $strError = 'Указанный путь не содержит папку bitrix';
  41. }
  42. else
  43. $strError = 'Неверно указан путь или ошибка прав доступа';
  44.  
  45. if ($strError)
  46. echo '<font color=red>'.$strError.'</font><br>Исходный путь: '.$full_path;
  47. }
  48. ?>
  49. <form method=post>
  50. Путь к папке, содержащей папки bitrix и upload: <input name=path value="<?=htmlspecialchars($path)?>"><br>
  51. <input type=submit value='Создать' name=create>
  52. </form>
  53. </body>
  54. </html>

Сделайте из этого кода файл, назовите его как-нибудь. Например, siteconfig.php, а так же не забудьте поменять путь в строке №13 — ../../first_site.ru/docs на свой.

Логика здесь очень простая — вам нужно скомандовать серверу переместиться из папки docs второго сайта в папку docs первого сайта, найти там папки bitrix и upload и проставить на них ярлыки. Изображу это графически:

Для этого мы пишем ../ чтобы переместиться из docs в second_site.ru, после чего пишем еще раз ../ чтобы попасть в корневую папку аккаунта (или домашнюю папку сервака), в которой находятся папки первого и второго сайтов, а потом пишем путь к корневой папке первого сайта, то бишь first_site.ru/docs

Когда по аналогии с примером, вы пропишете данный путь, сохраните файл, загрузите его на сервер и откройте http://second_site.ru/siteconfig.php, где вы увидите это:

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

Словом, когда ссылки успешно создадутся, скопируйте из корня первого сайта файлы .htaccess и .access.php и вставьте их в корень второго сайта. У вас должна получиться такая картина:

Если все так, поздравляю! Этот шаг завершен.

3. Создаем и настраиваем второй сайт. Заходим в http://second_site.ru/bitrix/admin/, логинимся админским паролем от первого сайта, переходим в Настройки -> Настройки продукта -> Сайты -> Список сайтов и жмем на кнопку «Добавить сайт» и заполняем появившуюся форму:

То, что необходимо изменить я выделил серым цветом. Ориентируйтесь на этот скрин — там должно быть все понятно. Единственный момент — если не знаете абсолютный путь к корневой папке второго сайта, жмите на [вставить текущий], у вас пропишется путь типа /home/account/first_site.ru/docs. Просто замените название папки первого сайта на папку второго и сохраняйте.

Что же касается шаблона — либо устанавливаете готовое решение в этот сайт, либо выбираете подготовленный и установленный шаблон, ваше право выбора ущемлять не буду.

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

Прочитано 20411 раз
Твитнуть

Добавить комментарий

Защитный код
Обновить

joomla 1.7

Не получаются доработки?

Становитесь партнером студии Millor! Быстро и недорого эти ребята помогут решить практически любую проблему.

Хотите подзаработать?

Если да, то вам сюда! Партнерская программа студии MyWebSite. Получи 20% за каждого клиента! Работаем по всей России и СНГ!

Рекламное место свободно.