Мультисайтінг
Смерека добре озброєна для підтримки кількох сайтів, але для цього треба прийняти певні рішення щодо конфігурації системи і провести їх в життя.
Мультисайтінгом ми будемо називати систему, в якій функціонує кілька [віртуальних] хостів і всі вони обслуговуються одним примірником базового коду Смереки.
Розглянемо деякі варіанти конфігурацій.
Один сайт – один каталог – одна база даних
Ця система є найпростішою в розгортанні : для кожного нового віртуального хоста створюється свій персональний кореневий каталог веб-документів, в нього копіюються інсталяційні файли Смереки, створюється нова БД, виконується її початкове завантаження і у файл customsettings.php записуються параметри БД.
Перевагою такої конфігурації є повна незалежність сайта від інших сайтів системи. Це може бути дуже істотним, коли треба надати замовнику сайта права глобального адміністратора (ці права діють в межах однієї БД Смереки).
Недоліки такої конфігурації – у складності підтримки : 1), оновлення програмного коду Смереки часто передбачає й оновлення метаінформації в БД; це оновлення треба виконувати для кожної БД в системі; 2), персональний інсталяційний каталог Смереки займає біля 1 Мб, і ці файли треба копіювати в кожен персональний каталог сайта (до речі, ці набори файлів теж можуть інколи оновлюватись); 3), персональні каталоги і особливо бази даних є цінними ресурсами, кількість яких в конкретних умовах хостінга обмежена.
Кілька сайтів – кілька каталогів – одна база даних
При такій конфігурації всі сайти з даної групи використовують одну базу даних і, відповідно, глобальні адміністратори мають до них однаковий доступ.
Перевагою такої конфігурації є один примірник метаінформації і можливість адміністрування кількома сайтами з використанням одного облікового запису глобального адміністратора.
Недоліком такої конфігурації є дублювання персональних каталогів, яке обговорювалось вище.
Кілька сайтів – один каталог – одна база даних
При такій конфігурації всі сайти з даної групи використовують одну базу даних і один персональний каталог, чим досягається максимальна ощадність цих цінних ресурсів. Усувається також дублювання стандартних наборів файлів в кількох персональних каталогах.
Недоліком такої конфігурації є необхідність модифікації файлу customsettings.php, який набуває рис опису віртуального хоста в Apache. Приклад такої модифікації може виглядати так:
switch ($_SERVER['HTTP_HOST']) { case 'example.com' : case 'www.example.com' : $HostName = 'example.com'; $Languages = array('uk', 'ru', 'en'); $PostProcessing = 'custom/postproc.php'; break; case 'shop.biz' : case 'www.shop.biz' : $HostName = 'shop.biz'; $Languages = array('en'); $PostProcessing = ''; break; /* other sites as need… */ }
В цьому прикладі передбачається мультисайтінг сайтів example.com та shop.biz, які мають різні набори мов та різні налаштування пост-обробки. Звичайно, перелік цих персональних налаштувань можна розширювати.
Певним недоліком такої конфігурації є необхідність дотримання дисципліни у використанні каталогу files в персональному каталозі сайтів, де можуть відбуватись конфлікти імен в стандартних каталогах Смереки (таких, як files/css).
Недоліком є також можливість кожному сайту з сімейства звертатись (в HTML коді своїх сторінок) до будь-якого файла, в тому числі «чужого» – це автоматично випливає з використання спільного кореневого каталогу документів сайта.