Багатосайтовість бітрікс на пальцях. А якщо спільна коренева папка

Дуже багато інформації на нашому сайті з налаштування багатосайтовості, але ця тема чомусь завжди викликає багато запитань. Хоча, на мій погляд, тут все досить просто.
Ну почнемо з того, що на одній установці Бітріксу можна зробити багато сайтів (без покупки додаткових ліцензій можна зробити два сайти), а значить закриємо перше запитання: для налаштування багатосайтовості треба встановити Бітрікс тільки один раз.
Є досить докладний навчальний курс, де описується два способи налаштування багатосайтовості.


Який спосіб вибрати?

Існує думка, що користувач вибирає для себе сам зручний спосіббагатосайтовості, проте насправді вибір способу залежить від налаштувань системи.
Перший спосіб передбачає (на папках), що сайти знаходяться в одному домені, але у різних папках. Він підходить для створення сайтів різними мовами або, наприклад, регіональних сайтів однієї компанії.
Адреси сайтів матимуть вигляд:

http://example.com/ru
http://example.com/en

або

http://example.com/
http://example.com/KGD
http://example.com/SPB

Якщо тематика сайтів різна, мабуть, не обійтися без налаштування другого способу, коли різні сайти знаходяться в різних доменах, наприклад:

http://www.bitrixsoft.ru/
http://www.bitrixsoft.com/

Обидва сайти працюють на одній копії продукту, але зовні це не виявляється. Це виглядає привабливіше, але вимагає трохи більше зусиль для налаштування.
Особливо хочу звернути увагу, що далі йдеться про роботу на хостингу, коли всі налаштування сервера робить адміністратор. Якщо ви налаштовуєте багатосайтовість локально, необхідно попередньо налаштувати віртуальні веб-сервери. Можна подивитися про це на офіційному сайті Apache (і в російській частині Інтернету море статей на цю тему).

Тепер кілька слів, як система визначає поточний сайт.
Відкриємо налаштування сайту (Налаштування - Налаштування продукту - Сайти - Список сайтів):

Тут можна вказати доменне ім'я та папку сайту – це основні параметри налаштування багатосайтовості, інші визначають пріоритети.
Спочатку система перевіряє поточний домен: з налаштувань всіх сайтів вибираються домени та зіставляються з доменом, на якому знаходиться користувач. При цьому порівнюється лише права частина до точки (тобто всі піддомени автоматично належать до цього домену). Наприклад, у налаштуваннях вказано
example.com
а користувач відкрив
www.example.com
буде вважатися умовою виконаною. Але якщо він відкриє my-example.com- це вже інший домен, його треба окремо вказувати у списку доменних імен.
Якщо доменні іменане вказано або на різних сайтах вказано однакові домени, то визначення відбувається за папкою сайту. Зверніть увагу, що тут вказується папка щодо кореня сайту (тобто шлях в URL), а не шлях файловій системіна сервері.
Надалі ідентифікатор сайту використовується для підключення шаблону, вибору новин, визначення мови та ін.

Приклад:
У налаштуваннях одного сайту вказана папка / , іншого /uk.
При відкритті example.com/forum/messages/потрапляємо на перший сайт при відкритті example.com/ua/forum/messages/- на другий.
При цьому папка bitrix (яка містить продукт) лежить докорінно, нікуди не копіюється і ніякі інші налаштування на сервері не робляться. Це все зрозуміло та просто.
Набагато більше питань та проблем виникає з налаштуванням багатосайтовості за другим способом, коли нам необхідно обслуговувати однією установкою Бітрікс кілька сайтів у різних доменах. Зупинимося на цьому детальніше.

Багатосайтовість за другим способом (міні HOWTO)

Спочатку потрібно визначитись, що ми хочемо отримати. Вважатимемо, що маємо два домени:

example.com
example.net

Вони мають різні кореневі папки (тобто при зверненні до кожного з них відкриваються файли різних фізичних папок на сервері). Існує варіант, коли при зверненні до будь-якого домену відкривається та сама папка на сервері (нижче розглянемо такий варіант), але саме перший варіант є кращим.

При цьому хочу звернути увагу на такі моменти:

  • всі домени повинні вказувати на один сервер, варіант, коли різні домени налаштовані на різних хостерів, є неприйнятним;
  • у нашому випадку (коли кореневі папки доменів різні) не має значення, маємо різні домени другого рівня або піддомени одного домену (наприклад, games.example.comі example.com). А якщо бути вірніше, то це взагалі не має значення. Те, що нас дійсно має цікавити: чи спільна у них коренева папка чи ні;
  • варіант, коли налаштовується велике числопіддоменів, які формуються динамічно (наприклад, vasya.example.com, kolya.example.comі т.д.) взагалі не є багатосайтовістюу контексті нашого продукту, і відповідно керівництва багатосайтовості сюди не застосовні. Розглянемо цей варіант нижче. Якщо говорити грубо, то багатосайтовість Бітрікса – коли налаштовано декілька сайтів у списку сайтів у налаштуваннях продукту.
Завдання: налаштувати багатосайтовість за другим способом на UNIX-хостингу.

Крок за кроком.

1. Встановлюємо Бітрікс на один із доменів (не важливо, на який). Для ясності вважаємо, що встановили продукт на example.com. Поки що ніяких додаткових налаштувань не робимо.

2. Тепер необхідно змусити працювати ту ж саму копію на другому домені.
Вважаємо, що публічна частина у сайтів різна (інакше навіщо потрібні різні сайти?), тому для другого сайту потрібно лише ядро ​​продукту (папка bitrix, Ну і upload). Теоретично, якщо їх просто скопіювати з першого сайту, то буде працювати, але нас це не влаштує (доводилося стикатися з такою "багатосайтовістю").
Отримаємо дві копії ядра, які працюють з однією базою даних, після оновлення одного з них оновиться база даних, і другий сайт перестане працювати (а також, копіювання ядра суперечить ліцензії).
Проблема вирішується використанням символічних посилань. Якщо говорити образно, посилання виконує завдання ярлика на робочому столі, який відкриває програму, але сам програмою не є.
Посібник з багатосайтовості рекомендує виносити ядро ​​в спільну папку sharedпотім робити символічні посилання в кожному сайті. Тут для простоти викладу я полегшу цей крок і зроблю посилання з одного сайту на інший (з функціональної точки зору різниці немає).
Написав невеликий скрипт, який допоможе створити символічні посилання при використанні тільки ftp доступу до сервера:

Створення посилань на папки bitrix та upload 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"; ."/bitrix")) ( if (symlink($path."/bitrix",$_SERVER["DOCUMENT_ROOT"]."/bitrix")) ( if(symlink($path."/upload",$_SERVER[ "DOCUMENT_ROOT"]."/upload")) echo " Символічні посилання вдало створені"; else $strError = "Не вдалося створити посилання на папку upload, зверніться до адміністратора сервера"; ) else $strError = "Не вдалося створити посилання на папку bitrix, зверніться до адміністратора сервера"; ) else $strError = "Вказаний шлях не містить папку bitrix"; ) else $strError = "Неправильно вказано шлях або помилка прав доступу"; if ($strError) echo " ".$strError."
Початковий шлях: ".$full_path; ) ?>

Скрипт необхідно завантажити до кореневої папки другого сайту (у нашому випадку, example.net), потім після запуску вказати шлях до кореневої папки першого сайту (або папки sharedякщо ядро ​​знаходиться в ній).
Припустимо, перший сайт знаходиться в папці:

другий:

Записуємо скрипт у папку /var/www/denis/example.net/www, у полі шлях пишемо " ../../example.com/www" або " /var/www/denis/example.com/www". Якщо все буде нормально, у папці /var/www/denis/example.net/wwwз'являться необхідні символічні посилання.
На цьому етапі можуть виникнути проблеми:

  • немає прав на запис до поточної папки;
  • діє обмеження безпеки (open_basedir), яке не дозволяє користувачам хостингу, що розділяється, звертатися до інших сайтів.
У разі виникнення проблем із цим скриптом слід звернутися за допомогою до хостера.
Після того, як посилання створені має відбуватися наступне: набираємо example.net/bitrix/admin, відкривається панель авторизації, вводимо дані адміністратора, які вказували при встановленні продукту на example.comі потрапляємо до адміністративної панелі Бітрікса.
Оскільки ядро ​​одне і база одна - адміністративна панель для обох сайтів буде однакова(Тобто одна і та ж).

Тепер треба скопіювати з першого сайту .access.php(щоб був доступ на читання кореневого розділу, при необхідності можна вручну відредагувати його, видаливши все окрім $PERM["/"]["*"]="R";) та index.php(який потім редагуватиметься).

3. Налаштування сайтів.

Відкриваємо налаштування кожного сайту ( Налаштування - Налаштування продукту - Сайти - Список сайтів), вказуємо у полі "Доменне ім'я:" example.comі example.netвідповідно для першого та другого сайту.
Останнє, що треба тут зробити - вказати шлях на сервері до кореневої папки кожного сайту (поле "Шлях до кореневої папки веб-сервера для цього сайту:") для того, щоб модуль управління структурою побудував дерево файлів кожного сайту (меню "Контент"):
вказуємо /var/www/denis/example.com/wwwі /var/www/denis/example.net/wwwвідповідно.

4. Перевірка громадської частини.

Якщо все було зроблено правильно, на різних доменах повинні відкриватися різні сайти. Для цього скористаємося найпростішим скриптом:

echo "SITE_ID = ".SITE_ID; ?>

Збережемо в корені обох сайтів при зверненні до скрипту в домені example.comповинен відобразитися ідентифікатор (дволітерне відображення) першого, в домені example.net- Ідентифікатор другого сайту.

Всі. Завдання вирішено.

А якщо загальна коренева папка?

Це не зручно насамперед тому що публічна частина сайтів буде спільна. Але якщо іншого варіанта немає, можна налаштувати багатосайтовість і тут. Тільки для розділення публічної частини в корені сайту доведеться створити папки для кожного сайту і фактично вийде багатосайтовість за першим способом.

Тепер коротко кроками. Умови завдання колишні, але вважатимемо що домени example.comі example.netмають одну кореневу папку /var/www/denis/example

1. Ставимо продукт у будь-якому домені один раз.

2. Для поділу публічної частини створюємо у папці /var/www/denis/exampleпапки comі net. Тут ядро ​​має шлях /var/www/denis/example/bitrixдля обох сайтів і символічні посилання створювати не потрібно.

3. У налаштуваннях сайтів тепер крім домену потрібно вказати папку сайту: /comі /netдля першого та другого сайту.

4. Створюємо індексну сторінку сайту за прикладом навчального курсу. Ця сторінка домену визначатиме поточний сайт і підключатиме відповідну публічну частину. Тільки для цього треба було вказати домени у налаштуваннях сайтів. Наводжу тут код скрипту:

Налаштування завершено.

Багато піддоменів на одному сайті

Наприклад, на сайті користувачі після реєстрації отримують свій домен виду user.example.com. При зверненні до такого домену хочемо відкривати блог користувача.

1. Найкраще в такій ситуації для всіх піддоменів використовувати окрему від основної кореневу папку сайту. Домовляємося з хостером, що для example.comвідкривається /var/www/denis/example.com, а для всіх піддоменів (за винятком www.example.com) кореневою папкою є /var/www/denis/blogs. Ставимо Бітрікс на example.com.

3. Створюємо індексну сторінку в папці /var/www/denis/blogs, розміщуємо на ній компонент bitrix:blog.blog. Зверніть увагу, що це не комплексний компонент блогів, а компонент, що відображає вміст конкретного блогу.

4. На цій же сторінці перед підключенням компонента вставляємо код, який визначатиме поточний ідентифікатор блогу на прикладі наступного:

Висновок

Вийшло багато тексту, насправді дій щось небагато. Спробував висвітлити основні питання, які виникають у клієнтів з питань багатосайтовості під час звернення до техпідтримки. Сподіваюся, виклад допоможе трохи краще зрозуміти питання та вирішувати проблеми, використовуючи ці знання.

Багато власників ліцензії 1С бітрікс знають про багатосайтовість на цій платформі, як вона будується і функціонує. Можливо, хтось використовує цей функціонал у повному обсязі, а хтось має намір впровадити його у свій сайт. У тому чи іншому випадку цей вид буде цікавим як початківцям, так і тим, хто з цим функціоналом працює. Я покажу не просто як встановити на одній ліцензії другий сайт, а покажу принципи роботи даного механізму, постараюся пояснити все зрозумілою та доступною мовою.

Багатосайтова конфігурація 1С Бітрікс

Купуючи будь-яку ліцензію 1С бітрікс, ми фактично купуємо два сайти, але не кожен про це знає, що до стандартного постачання продукту включено ліцензію на їх використання.

Ви можете створити на одній ліцензії як російську, так і англійську версію веб ресурсу, а можете встановити протилежні сайти, один буде ваш інтернет-магазин, на іншому знаходиться блок або корпоративний сайт, а можна поставити два інтернет-магазини, які торгуватимуть різними товарами.

При необхідності встановлення третього сайту на багатосайтовості та наступних, нам достатньо докупити додатковий сайт, сплативши за це не повну його вартість, а лише трохи менше його половини, що досить суттєво економить бюджет при реалізації другого сайту.


До всього цього можна додати наступний плюс, при встановлених модулівз маркеплейс, будь вони платні чи безкоштовні, все це прив'язуються до однієї ліцензії, це дає можливість придбаним модулем користуватися на всіх інших сайтах при багатосайтовій системі.

Сумно те, що не кожен це розуміє, тому я вирішив створити дане відео, показати вам як це все влаштовано в бітріксі, і на практиці продемонструвати реалізацію багатосайтовості.

Та й взагалі мені подобається ця система управління, її простота та зручність використання, все зроблено для простих користувачівне мають знання програмування. Достатньо бажання та небагато часу на перегляд навчальних відео і ви повноцінно можете адмініструвати свій проект.

Детальний аналіз багатосайтовості на 1С Бітрікс

По суті, це один сайт, один екземпляр продукту, одна загальна база даних і це все дає ряд переваг:

  • Ми можемо керувати контентом, правами доступу користувачів, ми маємо єдині права на управління модулями, ми можемо керувати всіма сайтами і все це з однієї адміністративної панелі;
  • Сама система авторизації єдина, зареєструвавшись, користувач одному проекті він автоматично має доступом до іншим відповідно до його правами;
  • Збір статистики можна збирати як у одному з проектів, і у їх сумі.



Багатосайтовість можна реалізувати двома основними способами:

  • можна її зробити на одному домені,
  • або створити на різних.


Кожен спосіб по-своєму хороший, має свої плюси та мінуси, і вам вибирати який використовувати. У цьому уроці розберемо перший варіант, реалізуємо багатосайтовість на одному домені.

Багатосайтовість на одному домені

Перший варіант - це найпростіший і не вимагає конфігурації веб-сервера, сайти розміщуються по різних директоріях на одному домені.

Як із даного прикладубачимо другий сайт лежить у директорії DWS, що досить легко реалізується:


Також можемо комбінувати види під різні мови або використовувати для інших цілей:

Цей спосіб підійде:

  • для створення сайтів різними мовами, де основна мова буде в початковій категорії, а другорядні в підкатегоріях;
  • далі можемо реалізувати регіональні сайти однієї компанії;
  • якщо надалі плануєте використати одне доменне ім'я;
  • якщо немає можливості на віртуальному хостингу створити спільний доступ до файлів.


І реалізується це досить просто, нам потрібно в налаштуваннях сайтів вказати під категорію, де вони відображатимуться, прописуємо параметри для поштових повідомлень і далі можна проводити встановлення.


Давайте на прикладі яндекса розглянемо, як вони застосовують цей функціонал.

Зайшовши до них на основний сайт - https://www.yandex.ru, вони пропонують низку сайтів. Сервіс за картинками натискаємо і відкривається другий сайт https://yandex.ru/images/ вкладений в іншій директорії, теж спостерігаємо коли переходимо у відео https://yandex.ru/video/, або користуємося додатковими сервісами "каталог", його картинок і так далі.

Я думаю ви зрозуміли суть, як можна це задіяти у своєму бізнесі.

У бітріксі такий функціонал поставляється в стандартній коробці і його можна задіяти на будь-якому сайті без необхідності додаткового настроювання сервера і додаткових вкладень, а як це дивіться далі…

Створення та налаштування сайту на одному домені

Насамперед необхідно створити другий сайт.

Переходимо в адміністративну панель, ( Налаштування-> налаштування продукту-> Сайти-> Список сайтів->), натискаємо, додати сайт.

Перед нами постала форма, яка приймає такі поля:

  • ID– ідентифікатор сайту, він є обов'язковим, складається з двосимвольної комбінації, ru, en, s1, s2 тощо.
  • Активація- Включаємо або відключаємо даний сайт;
  • Назва– обов'язковий параметр, у дане поле вписуємо довільну назву сайту, воно використовується системою для прив'язки до того чи іншого сайту;
  • За замовчуванням– політ за замовчуванням, задіюється коли сайт використовує кілька доменних імен, скажімо так однакових, схожих між собою;
  • Доменне ім'я– кожне вписане доменне ім'я буде маскою. У це поле вписуємо доменне ім'я сайту, якщо їх кілька, то кожне в новому рядку. Цей функціонал нам знадобиться для реалізації багатосайтовості на різних доменах;
  • Папка сайту– поле обов'язкове для заповнення, вказане значення використовується як опорний рівень для побудови логічної та фізичної структури в самому модулі, і тут ми пропишемо шлях до другого сайту (/dws/);
  • Сортування– задаємо числовий параметр, пріоритетність сайту у списку;
  • Шлях до кореневої папкивеб-сервера для цього сайту – вказуємо повний шлях до папки, на яку налаштована змінна DOCUMENT_ROT для даного сайту, використовується це коли ми використовуємо багатосайтовість на різних доменах;
  • У секції параметри- Задаємо для сайту параметри під поштові шаблони;
  • Назва сайту– прописуємо назву сайту, яка може бути використана у поштових шаблонах. Якщо значення не встановити тоді воно буде братися з налаштувань головного модуля;
  • Url сервісу– поточна адреса буде використана для формування поштових повідомлень. Адреса прописується без http://. Якщо його не задати береться ця адреса з налаштувань головного модуля, цей функціонал використовується при багатосайтовості на різних доменах;
  • E-mail адресаза замовчуванням- Тут можна поставити Поштова адресаякий буде використаний як значення макросу DEFAUL_EMAIL_FROM для формування поштових шаблонів. Якщо його не задати ці дані візьмуться із налаштувань головного модуля;
  • Регіональні налаштування– налаштування за поточними мовами, форматом дати, кодування, направлення тексти;
  • Поштові шаблони– за допомогою цієї секції можемо створити та прив'язати поштові шаблони до наявних сайтів або скопіювати його;
  • Шаблон сайту– допоможе запустити майстри установки готового рішення, ми залишаємо галочку за умовчанням та встановлюємо.

Після цього ми одразу потрапляємо у візуальну частину створеного нами сайту, у якого вказано шлях в URL, який ми задавали. Переходячи по його розділах, ми бачимо його повноцінну структуру, з каталогом товарів, з його інформаційним змістом, який відрізняється кардинально від попереднього сайту.

Але якщо перейдемо в основну директорію, то перед нами відкриється старий корпоративний сайт, в якому теж своя структура і вона не змінилася.

І цей спосіб досить зручний, тому що простий у реалізації і не вимагає додаткових налаштуваньвеб-сервера, ми можемо стандартним функціоналом на одній ліцензії зробити собі другий сайт, зовсім в іншому дизайні та з іншим функціоналом.

Зміни в системі після встановлення

Давайте одразу розберемо, що в нас з'явилося, і які зміни сталися в адміністративній частині.

З'явилася нова директорія, створилася папка, в якій лежить повна структура другого сайту. У «структурі сайту» ми бачимо назву нового сайту з його фізичною та логічною структурою.

Додалися під другий сайт додаткові інфоблоки (каталог, новини, торгові пропозиції). Якщо перейти в сам інфоблок, бачимо, що він прив'язаний до певного сайту. Також при необхідності можемо прив'язати його до двох сайтів одночасно.

Тепер у налаштуваннях системи буде прив'язка до того чи іншого функціоналу до певного сайту, як на прикладі ми бачили інфоблоки, так і поштові повідомленняу нас також розділилися на два сайти.


У списку сайтів тепер відображаються два сайти, і у кожного, якщо перейти в нього прив'язані свої шаблони.


Усе це реалізується стандартним функціоналом бітрикса, без будь-яких попередніх налаштуваньсервера.

У пару кліків ми створили новий сайт, який може координально відрізнятися від попереднього, мати свій дизайн і контент, можна поставити новий інтернетмагазином або зробити блок чи візитку, все лише обмежується вашими фантазіями.

А на це позитивній ноті ми закінчуємо огляд багатосайтовості на одному домені, і в наступному випуску розповім, як конфігурувати веб-сервер і встановити сайт на різних доменах.

Урок підготував Горєлов Денис

Багато нових користувачів Bitrix замислювалися чому при покупці ліцензії зазначено що на одній ліцензії можна запустити 2 проекти, це може бути повністю 2 різних сайту, або 2 сайти різними мовами, наприклад якщо ви ведете свій бізнес в Росії та в Україні, або 2 регіональних сайту, наприклад якщо ви ведете свій бізнес у Москві та Новосибірську. Розширювати кількість сайтів однією ліцензії природно можна, тобто. Якщо наприклад ви відкриваєте філію у Волгограді, то просто докупаєте ліцензію на додатковий сайт в рази менше, якщо б ви купували окрему ліцензію бітрікс. До речі, вартість додаткового сайту на 70% дешевша за окрему CMS.

Багатосайтовість - це тільки складне слово, насправді, запустити 2 проекти на одній ліцензії 1C-bitrix простіше простого, достатньо володіти деякими азами в php і в адмініструванні сервера. Отже, в цій статті я розповім вам, як використовувати функціонал багатосайтовості на бітрікс.

Рішення запуску проекту та бізнес-завдання з загальному принципу"на кожен веб-ресурс своя система управління від бітрікс" є не особливо неефективним; і особливо неефективним, коли щоразу CMS (система управління) різна.

    Проблеми, що виникають при такому підході, такі:
  • Зайві фінансові витрати на покупку двох CMS, ну або розробку власних самописних движків (систем керування) сайтами.
  • Декілька параметрів доступу в back-end CMS, та й різний інтерфейс управління.
  • Різні системи авторизації та бази даних користувачів сайтів.
  • Різний рекламний простір.

У результаті компанія має децентралізацію в управлінні своїми сайтами, витрачаються зайві ресурси створення веб-проектів, а рішення бізнес-задач у мережі Інтернет затягується.

Використання багатосатовості на бітрікс дозволяє на одній базі CMS мати єдиний інтерфейс з управління проектами, загальна авторизація на обидва проекти, єдина базакористувачів які пройшли реєстрацію, та й єдиний рекламний простір, що дозволяє компанії або рекламодавцю, що залучається, керувати розміщенням і показами банерів з однієї точки.

Отже приступимо до налаштування багатосатовості на бітрікс. Насамперед визначаємося зі способом. Їх два, коли сайти знаходяться в одному домені, але в різних папках. На ньому поки що і зупинимося.

Адреси сайтів виглядатимуть так:
site.ru/ua

Якщо напрямок вашого бізнесу різні і тематика сайтів різна, використовується другий спосіб, це коли різні сайти знаходяться в різних доменах, приклад:

site.ru та site.com

1. У налаштуваннях сайту (Адміністрація: Налаштування - Налаштування продукту - Сайти - Список сайтів):

Тут можна вказати доменне ім'я та папку сайту – це основні параметри налаштування багатосайтовості на бітрікс, Інші визначають пріоритети.

Спочатку CMS перевірить поточний домен: з налаштувань всіх сайтів вибираються домени та зіставляються з доменом, на якому знаходиться користувач. При цьому порівнюється лише права частина до точки (тобто всі піддомени автоматично належать до цього домену). Наприклад, у налаштуваннях вказано site.com,а користувач відкрив www.site.comбуде вважатися умовою виконаною. Але якщо він відкриє my-site.com— це вже інший домен, його треба окремо вказувати у списку доменів.

Якщо домени не вказані або на різних сайтах вказані однакові доменні імена, то визначення відбувається за папкою сайту. Зверніть увагу, що тут вказується папка щодо кореня сайту (тобто шлях URL), а не шлях у файловій системі на сервері.

Надалі ідентифікатор сайту використовується для підключення шаблону, вибору новин, визначення мови та ін. (Приклад s1 або s2)

У налаштуваннях одного сайту вказана папка, іншого /uk.

При відкритті 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.

Створення посилань на папки bitrix та upload "; else $strError = "Не вдалося створити посилання на папку upload, зверніться до адміністратора сервера"; ) else $strError = "Не вдалося створити посилання на папку bitrix, зверніться до адміністратора сервера"; ) else $strError = "Вказаний шлях не містить папку bitrix"; ) else $strError = "Неправильно вказано шлях або помилка прав доступу"; if ($strError) echo " ".$strError."
Початковий шлях: ".$full_path; ) ?>

Шлях до папки, що містить папки bitrix та upload:

< 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 "Символічні посилання вдало створені" ;

else

$strError = "Не вдалося створити посилання на папку upload, зверніться до адміністратора сервера";

else

$strError = "Не вдалося створити посилання на папку bitrix, зверніться до адміністратора сервера";

else

$strError = "Вказаний шлях не містить папку bitrix";

else

$strError = "Неправильно вказано шлях або помилка прав доступу";

if ($strError )

echo " " . $strError . "
Вихідний шлях: ". $full_path;

< form method = post >

Шляхпапці, що міститьпапкиbitrix іupload :< input name = path value = "" > < br >

< input type = submit value = "Створити" name = create >

Багато сайтів

Рішення бізнес-завдання за загальним принципом "на кожен веб-ресурс своя система управління" є неефективним; і особливо неефективним, коли щоразу система управління різна. Проблеми, що виникають при такому підході такі:

  1. Зайві фінансові витрати, необхідні на купівлю або розробку систем керування сайтами.
  2. Різні точки входу в керування сайтами, різний інтерфейс керування.
  3. Різні системи авторизації та бази даних користувачів сайтів.
  4. Різний рекламний простір.
У результаті компанія має децентралізацію в управлінні своїми веб-проектами. Витрачаються зайві ресурси створення веб-рішень, а вирішення бізнес-задач у мережі Інтернет затягується. Відвідувачі веб-проектів компанії також можуть відчувати незручності під час роботи з ними.

«1С-Бітрікс» пропонує змінити цю ситуацію. На кожному екземплярі продукту можна створити безліч сайтіввідповідно до схеми ліцензування, що застосовується.

Чому виникла необхідність створення багатосайтових системі що це взагалі означає? Щоб відповісти на це запитання, я наведу вам промовистий приклад нашої розмови з клієнтом.

До нас за консультаціями щодо вибору оптимального рішення звернулася компанія, яка займається видавничою діяльністю. Керівник інтернет-напрямку розповів, що в них одночасно функціонують 18 різних сайтів. І на кожному сайті є якась своя система керування контентом, якийсь механізм керування рекламою, десь є інтернет-магазин зі своїми користувачами. Більшість проектів мають окремі форуми зі своїми акаунтами користувачів, десь є статистика, блоги…

«І ось тепер уявіть, каже він, мою табличку в Excel, де в мене зберігаються всі паролі на доступ до цього заповідника! Ну гаразд, ми своїх співробітників змогли змусити пам'ятати паролі і працювати з цим, але я ж не можу клієнтів змусити так працювати?! Ми фактично втратили контроль над процесом розробки, оновлення проектів, ми не можемо відкривати нові проекти…
Мені потрібна система, яка буде не тільки для одного сайту об'єднувати потрібний мені функціонал, але й дозволить усі сайти об'єднати в єдиній системі управління, з єдиною системою авторизації та безпеки, коли клієнту достатньо буде зареєструватися на будь-якому з сайтів, і він зможе працювати з усіма іншими сайтами. Ми його дізнаватимемося і пропонуватимемо йому додаткові сервіси».

Розуміючи цю проблематику, ми й реалізовували БАГАТОСАЙТОВІСТЬ у всіх редакціях програмного продукту «1С-Бітрікс: Управління сайтом», починаючи ще з версії 4.0. Більше того, кожна редакція нашого продукту (крім "Перший сайт" та "Старт" включає ліцензію на необмежену кількість сайтів. Тобто на базі редакції «Бізнес» ви можете створити декілька проектів, об'єднаних системою керування, і один проект може бути великим порталом, а другий - масштабним інтернет-магазином тощо..

Цікаво, але зі зростанням присутності вашої компанії в Інтернеті, кількість проектів у вас буде неухильно зростати. І якщо на одному або двох проектах ви ще не дуже гостро відчуєте проблеми неузгодженості, кожен новий проект подвоюватиме складності та витрати, і уповільнюватиме ваш рух, якщо спочатку ваші проекти не будуть об'єднані в багатосайтову систему.

Артем Рябінков, провідний аналітик, координатор проектів компанії «1С-Бітрікс»


Технологія

Сайти та екземпляри

Під екземпляром продуктурозуміється придбана клієнтом копія «1С-Бітрікс: керування сайтом», яка використовує одну базу даних зі списку підтримуваних продуктом СУБД.

Під сайтомрозуміється сукупність наступних понять:

  • Обліковий запис у загальній базі даних;
  • Публічна частина сайту (файли та папки);
  • Налаштування сайту.
Іншими словами, сайт– це створена в системі сутність, що має певний набір даних (контенту) та параметрів (мова, шаблон дизайну, формати дати та часу). Дані можуть бути унікальними в рамках цього сайту (публічна частина, індивідуальні інфоблоки, веб-форми, опитування, форуми і т.п.) або між кількома сайтами, що розділяються.

Технологія багатосайтовості

На кожен із сайтів має вказувати певне доменне ім'я або набір доменних імен. Такі відповідності вказуються у налаштуваннях кожного сайту. За доменними іменами та варіантами адресації обмежень немає. Кожен новий сайт може бути доменом другого або третього рівня.

Таким чином, усі сайти реалізуються на базі одного екземпляра продуктуі використовують одну загальну базу даних. Це має такі незаперечні переваги:

  1. Єдиний інтерфейс керування продукту дозволяє уніфіковано з однієї точки керувати всіма веб-проектами: змінювати структуру, додавати контент, керувати правами доступу тощо.
  2. Єдина система авторизації та єдина база даних користувачів дозволяє користувачеві зареєструватися на одному веб-проекті, і надалі скористатися веб-сервісами та інформацією на всіх інших ресурсах відповідно до його прав.
  3. Єдина система збору статистики як у кожному проекту окремо, і з отриманням сумарних аналітичних даних у всіх проектах. Крім того, завдяки технології UserMultiSiteTransfer,виконується розпізнавання відвідувачів, які надходять на різні сайти в рамках багатосайтової конфігурації.
  4. Єдиний рекламний простір, що дозволяє компанії або рекламодавцю, що залучається, керувати розміщенням і показами банерів з однієї точки. А за рахунок технології UserMultiSiteTransfer – розпізнавати відвідувачів та ефективно використовувати банерні покази .

Якщо в компанії розроблено та налагоджено бізнес-процеси з управління сайтами: створення та публікація матеріалів, управління рекламою, опитуваннями тощо, то створення нового веб-ресурсу не спричинить змін цієї структури.

Сайти мають єдину базу, тому якщо у вас було реалізовано імпорт/експорт із вашими корпоративними чи обліковими системами, то підтримка кількох сайтів буде для цього функціоналу прозорою.

Багатосайтовість можна реалізувати двома основними способами.

У першому і найпростішому навіть не потрібно конфігурувати веб-сервер! Кожен сайт у кореневій папці веб-сервера розміщуватиметься в окремій директорії, наприклад /site1/ та /site2/. У налаштуваннях кожного сайту зазначаються доменні імена, за якими вони мають візуалізуватися, та відповідна директорія з публічною частиною сайту. В результаті Бітрікс автоматично підключатиме відповідні скрипти в цих директоріях, які здійснять візуалізацію контенту.

Дистрибутив програмного продукту поставляється налаштованим для роботи за першим способом.

Другий прийом дозволяє максимально поділити публічні частини сайтів. Для цього на веб-сервері (Apache, IIS) необхідно налаштувати кілька віртуальних хостів (веб-серверів). Кожен сайт в системі отримує власну кореневу директорію (Document Root), в якій знаходиться його публічна частина. Іноді кожен сайт може навіть мати власну IP-адресу. При цьому, якщо в першому способі сам продукт визначає - який сайт підключати за заданими доменними іменами, то ця операція буде виконуватися веб-сервером. Ядро системи при такій реалізації фізично розташоване в одному місці, скажімо, на основному сайті (папки /bitrix/ та /upload/), а на інших сайтах робляться символічні посилання на ці папки.

Таким чином, продукт підтримує безліч способів та параметрів організації багатосайтовості. Перший варіант дуже зручний у разі розміщення проекту на хостингу, коли відсутня можливість доступу до налаштувань сервера, або конфігурування вкрай обмежене. Другий варіант зазвичай застосовується на виділених серверах, і дає максимальну продуктивність та зручність у налаштуванні та конфігуруванні проекту.

Кожен варіант реалізації є абсолютно прозорим як для відвідувачів сайтів, так і для пошукових машин Інтернету. Не виконується жодних редиректів, що не заважає коректному індексуванню кожного ресурсу пошуковим роботом.

Ліцензування

У стандартне постачання продукту включено ліцензія на необмежену кількість сайтів (крім ліцензій "Перший сайт" та "Старт"). Купуючи екземпляр «1С-Бітрікс: Управління сайтом», ви безкоштовно можете створити, наприклад, російськомовний та англомовний ресурс, або корпоративний сайт та інтернет-магазин.

Усі сайти, що працюють на одній ліцензії, повинні розміщуватись на одному хостингу, та використовувати одну копію програмного продукту «1С-Бітрікс: Управління сайтом».

Складність уроку:

4 рівень- складно, потрібно зосередитися, увагу деталей і точного дотримання інструкції.

Для роботи багатосайтовості на різних доменах нам потрібно зробити налаштування програмного продукту. Налаштування веб-сервера Apache, як і у випадку з багатосайтовістю на одному домені, має зробити хостингова компанія.

Для прикладу будемо використовувати конфігурацію з двох сайтів:

  • www.site1.com - корпоративний сайт компанії
  • www.site2.com - інтернет-магазин компанії

Налаштування багатосайтовості на різних доменах

Кожен сайт треба розмістити у відповідному каталозі, наприклад:

  • /home/www/site1/
  • /home/www/site2/

Встановлення продукту та налаштування символьних посилань

Продукт встановлюється на один із сайтів. Щоб ядро ​​могло працювати для обох сайтів, необхідно створити символьні посилання для сайту, де немає встановленого ядра. Посилання потрібні для папок /bitrix, /local та /upload. Ці папки є спільними для обох сайтів, такою є особливість архітектури.

Примітка:Є можливість простого копіювання зазначених папок із першого сайту до другого. При такому копіюванні вийде дві копії ядра, які працюють із однією базою даних. Такий варіант працюватиме, але є два негативні моменти: технічний та юридичний. Технічна проблема полягає в тому, що після оновлення одного з ядер оновиться база даних і другий сайт перестане працювати. Юридична проблема полягає в тому, що копіювання ядра суперечить ліцензії на продукт.

Примітка:Технічно можливе (але не рекомендується) копіювання вказаних папок у деяку зовнішню папку, на яку для всіх сайтів налаштовуються символічні посилання.

Символьне посилання:(також симлінк від англ. Symbolic link, символічне посилання) - спеціальний файл, для якого у файловій системі не зберігається жодної інформації, крім одного текстового рядка. Цей рядок трактується як шлях до файлу, який має бути відкритий при спробі звернутися до цього посилання.

Практично символьні посилання використовуються для зручнішої організації структури файлів на комп'ютері, тому що дозволяють одному файлу або каталогу мати кілька імен і вільні від деяких обмежень, властивих жорстким посиланням (останні діють лише в межах одного розділу і не можуть посилатися на каталоги).

Посилання можна створити двома способами. Перший – класичний, який рекомендувався компанією із самого початку. Другий - пізніший, вважається більш "красивим і витонченим". У ньому немає кроку створення окремої папки та перенесення в неї ядра системи.

Перший варіант(зеленим кольором наведено приклади для встановлення на UNIX системи):

  1. встановіть програмний продукт
  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 або скористайтеся додатковими програмами, наприклад, Far Managerабо Junctionвід Sysinternals.

Важливо!Файлова система FAT32 не підтримує створення символьних посилань.

При налаштуванні багатосайтової конфігурації на UNIX можна скористатися програмним методом створення символьних посилань:

Примітка:

У ряді випадків, наприклад, якщо web сервер працює в chroot, необхідно робити відносні посилання.

Приклад:
/var/www/s1 - перший сайт
/var/www/s2 - другий сайт
/var/www/shared - папка з ядром системи

Ln -s ../shared/bitrix bitrix ln -s ../shared/upload upload ln -s ../shared/local local Переходимо до /var/www/s2 і виконуємо ті ж команди.

Другий варіант. У ньому символьні посилання створюються у папці другого сайту.

  1. Встановіть програмний продукт спочатку до каталогу першого сайту /home/www/site1/
  2. Створіть у кореневій папці другого сайту (/home/www/site2/) скрипт, наприклад, під ім'ям symlink.php:
  3. Створення посилань на папки bitrix, local та upload Символічні посилання вдало створені"; else $strError = "Не вдалося створити посилання на папку upload, зверніться до адміністратора сервера"; ) else $strError = "Не вдалося створити посилання на папку bitrix, зверніться до адміністратора сервера"; ) else $strError = "Вказаний шлях не містить папку bitrix"; ) else $strError = "Неправильно вказано шлях або помилка прав доступу"; if ($strError) echo "".$strError."
    Початковий шлях: ".$full_path; ) ?>
    Шлях до папки, що містить папки bitrix, local та upload:
  4. Запустіть скрипт і вкажіть шлях до кореневої папки першого сайту, у нашому випадку /home/www/site1/.
  5. Після створення символьних посилань наберіть в адресному рядку браузера site1/bitrix/admin . Відкриється панель авторизації.
  6. Введіть дані адміністратора, які вказували при встановленні продукту на перший сайт, і потрапите до адміністративної панелі «1С-Бітрікс: Управління сайтом».

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

На етапі створення можуть виникнути проблеми:

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

У разі виникнення проблем із цим скриптом слід звернутися за допомогою до хостера.

Конфігурування сайтів

Налаштування сайтів виконується в адміністративному розділі системи на сторінці Установки > Установки продукту > Сайти > Список сайтів.

У рядку першого сайту (www.site1.com), у колонці дій вибираємо команду Змінитиі вказуємо в них:

  • Назва: site1
  • Доменне ім'я: site1.com
  • Папка сайту: /
  • Назва сайту:Корпоративний сайт компанії Назва компанії"
  • URL сервера: www.site1.com
  • /home/www/site1/

Якщо DNS налаштований таким чином, що ваш сайт відповідає на адресу http://site1.com, то в полі Доменне ім'ябажано вказувати без www. Можна перерахувати в цьому полі з нового рядка будь-яку кількість доменних імен, за якими ви хочете, щоб відповідав сайт (або вже відповідає).

Важливо мати на увазі, що значення, вказані в полі Доменне ім'я, використовуються продуктом для розповсюдження в зазначені домени інформації про відвідувачів за технологією перенесення відвідувачів. Тому дуже бажано вказувати повний перелік доменів, за якими може відповісти веб-сайт.

Дуже важливо не вказувати у списку доменів сайти, які не працюють на цьому примірнику продукту. Зазначений неправильно або неіснуючий домен може не тільки уповільнити роботу користувачів, але й фактично не дозволить перенести дані до сайтів, які працюють не спільно. екземплярі продукту.

Аналогічно налаштуємо параметри другого сайту (www.site2.com/):

  • Назва: site2
  • Доменне ім'я: site2.com
  • Папка сайту: /
  • Назва сайту:Інтернет-магазин компанії " Назва компанії"
  • URL сервера: www.site2.com
  • Шлях до кореневої папки веб-сервера для цього сайту:/home/www/site2/

Зверніть увагу, що для двох сайтів у параметрі Папка сайтувказано однакове значення: " / Це пов'язано з тим, що сайти обслуговуються різними "віртуальними серверами" (в термінології Apache) у яких для розміщення файлів використаний різний каталог.

Також необхідно звернути увагу на параметр Шлях до кореневої папки веб-сервера для цього сайту. Для різних сайтів має своє значення, взяте з параметра DocumentRoot налаштувань відповідного "віртуального сервера" (див. нижче приклад частини файлу httpd.confналаштувань Apache).

Примітка:

Необхідно мати на увазі, що при організації багатосайтовості за цим способом, ви можете використовувати як віртуальні сервери однієї установки Apache, і просто різні установки Apache. Це справедливо для інших веб-серверів: IIS, EServі т.д.

Важливо: при створенні другого сайту необхідно скопіювати з основного сайту або створити файли /.htaccess і /404.php .

При включеному Проактивному захисті другий сайт повинен бути обов'язково доданий до списку.

Файл.access.php

Створіть файл .access.phpз таким змістом в корені другого сайту:

Примітка:

Для цього методу організації многосайтовости не потрібно налаштовувати на індексній сторінці алгоритм вибору сайтів, як це робиться при , т.к. сайт однозначно визначатиметься по полю Доменне ім'я.

Конфігурація готова до роботи.

Вхід в систему

  • Наберіть в адресному рядку браузера http://site1/bitrix/admin (або http://site2/bitrix/admin). Відкриється панель авторизації.
  • Введіть дані адміністратора, які вказували під час встановлення продукту на перший сайт і потрапите в адміністративну панель "1С-Бітрікс: Управління сайтом".

Оскільки ядро ​​одне та база одна – адміністративна панель для обох сайтів буде однакова.

Технічно система допускає створення довільного числа сайтів, що працюють за цією схемою. У кожному із новостворених сайтів необхідно налаштувати веб-сервер і створити символічне посилання. Юридично для створення кожного нового сайту (крім перших двох) необхідно придбати додатковий купон.

Примітка: HTML кешуванняне підтримується на другий багатосайтовості. Більше того, цей функціонал вважається застарілим. Рекомендується використовувати технологію.

Сортування сайтів у загальному списку

Є особливість у встановленні значень у полі Сортування