Продвинутый мультисайтинг
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Обзор таблиц базы данных <ul><li>Таблицы, которые  можно смело делать общими </li></ul><ul><li>Таблицы, которые  можно дел...
Таблицы, которые можно смело делать общими <ul><li>filters и filter_formats   — форматы ввода.  </li></ul><ul><li>locales_...
Таблицы, которые можно делать общими при необходимости <ul><li>access  — блокировка по IP, имени пользователя, e-mail. </l...
Таблицы, которые делать общими опасно <ul><li>comments  — комментарии. </li></ul><ul><li>files и file_revisions  — файлы. ...
Таблицы, которые НЕЛЬЗЯ делать общими (1) <ul><li>blocks  — таблица блоков сайта. </li></ul><ul><li>blocks_roles  — доступ...
Таблицы, которые НЕЛЬЗЯ делать общими (2) <ul><li>sequences  — внутренний счетчик нод, комментариев, пользователей. </li><...
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Методы объединения таблиц сайтов <ul><li>Использовать  префиксы таблиц </li></ul><ul><li>Использовать  разные базы данных ...
Использование  префиксов таблиц (1) <ul><li>Для таблиц отдельного сайта задаётся свой префикс таблиц: </li></ul><ul><li>Дл...
Использование  префиксов таблиц (2) <ul><li>Префикс задаётся в файле settings.php: </li></ul>$db_prefix = array( 'default'...
Использование разных  баз данных (1) <ul><li>Подключение к базе обычно задаётся в файле settings.php так: </li></ul>$db_ur...
Использование разных  баз данных (2) <ul><li>Вместо префикса указываем имя базы данных: </li></ul>$db_url = 'mysqli://user...
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Мультисайтинг с общими пользователями (1) <ul><li>Нужно сделать общими таблицы: </li></ul><ul><li>users </li></ul><ul><li>...
Мультисайтинг с общими пользователями (2) <ul><li>Общие пользователи, роли и права доступа: </li></ul><ul><li>users </li><...
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Общий логин (аутентификация) <ul><li>Модуль Shared Sign-On (http://drupal.org/project/singlesignon) </li></ul><ul><li>В  s...
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Мультисайтинг с общим контентом <ul><li>Делаем общими таблицы: </li></ul><ul><li>comments </li></ul><ul><li>files </li></u...
План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультис...
Полезные ссылки (1) <ul><li>http://www.razgonka.ru/multisiting «Мультисайтинг — это просто» </li></ul><ul><li>http://drupa...
Полезные ссылки (2) <ul><li>http://drupal.org/node/132361#comment-222070  «Pretty much what you had» </li></ul><ul><li>htt...
Спасибо за внимание. <ul><li>Докладчик </li></ul><ul><li>Влад Савицкий </li></ul><ul><li>[email_address] </li></ul>
Upcoming SlideShare
Loading in …5
×

Продвинутый мультисайтинг

3,730 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,730
On SlideShare
0
From Embeds
0
Number of Embeds
523
Actions
Shares
0
Downloads
36
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Что такое мультисайтинг и зачем он нужен. Друпал не проектировался для мультисайтинга с общими пользователями и/или контентом — причины и последствия использования мультисайтинга.
  • filters и filter_formats — форматы ввода. Можно делать общими. Если на одном из сайтов будет использоваться специфичный формат ввода, которого не должно быть на других сайтах - не делать общими. locales_* — переводы. Таблицы обычно имеют большой размер. Делать общими можно при условии, что для всех сайтов используется одинаковый перевод. role — роли на сайте (анонимный, зарегистрированный, модератор, админ). Можно делать общими. permission — права ролей на хуки, предоставляемые модулями. Можно делать общими. users — пользователи сайта. users_roles — роли пользователей сайта.
  • access — блокировка по IP, имени пользователя, e-mail. Если блокировка не используется, то можно смело делать общей. Для крупных сайтов можно разделить. authmap — таблица для внешних аутентификаций (LDAP, OpenID). Если не используется внешняя аутентификация — можно смело делать общей (пустая таблица). Если же используется, то делать общими если нужно сделать объединение пользователей. flood — таблица используется для ограничения количества запусков определеных участков кода в основном для предотврацения спама - N запусков в час. Используется для этих целей многими модулями, которые, например, которые делают рассылку (email, feedback, ass_contact, forward), а также модулем Contact. system — инфа о установленных модулях и темах. Объединяю, предварительно закинув нужные файлы в /sites/all/modules и /sites/all/themes. sessions — сеансы пользователей.Делать общими нужно, чтобы пользователи могли быть залогинеными на нескольких сайтах одновременно. См. Общая база пользователей в мультисайтинге In my opinion, the &apos;sessions&apos; table should not be shared! Otherwise users logged in at one site are shown at all sites as logged in. Moreover, a certain user logged in at two sites is shown twice at all sites. Keeping the sessions table individual prevents this. Are there other arguments to share the table?
  • comments — комментарии. files и file_revisions — файлы. node и node_* — контент сайта. term_* — термины таксономии. view_* — виды. vocabulary и vocabulary_node_types — словари таксономии.
  • blocks — таблица блоков у сайта. Название блока, где отображается, вес, и т.п. blocks_roles — доступ ролей к блокам. boxes — текст (код) самого блока. cache и cache_* — кэши. history — используется для форумов, последние непрочитанные сообщения. Если на сайтах не будет форумов — можно объединить. См. Общий контент в мультисайтинге. menu — меню сайта. sequences — информация о количестве нод, комментариев, пользователей. В Drupal 6 отсутствует, так как в таблицах введен автоинкремент для id. См. Общий контент в мультисайтинге и Общая база пользователей в мультисайтинге. Лучше разделить. url_alias и url_alias_extra — алиасы, ЧПУ, чистые ссылки. См. Общий контент в мультисайтинге и Общая база пользователей в мультисайтинге. Для себя выбрал вариант — не совмещать. variable — переменные сайта. Из-за присутствия специфичных переменных, вроде site_name (имя сайта), site_slogan, theme_default, pathauto_* совместить не получится. watchdog — журнал ошибок сайта. Совместить можно, но крайне нежелательно, ибо при большом количестве сайтов в админке сложно смотреть такие журналы — всё валится в одну кучу. В PhpMyAdmin можно будет задать фильтр по столбцу location, но это не удобно.
  • blocks — таблица блоков у сайта. Название блока, где отображается, вес, и т.п. blocks_roles — доступ ролей к блокам. boxes — текст (код) самого блока. cache и cache_* — кэши. history — используется для форумов, последние непрочитанные сообщения. Если на сайтах не будет форумов — можно объединить. См. Общий контент в мультисайтинге. menu — меню сайта. sequences — информация о количестве нод, комментариев, пользователей. В Drupal 6 отсутствует, так как в таблицах введен автоинкремент для id. См. Общий контент в мультисайтинге и Общая база пользователей в мультисайтинге. Лучше разделить. url_alias и url_alias_extra — алиасы, ЧПУ, чистые ссылки. См. Общий контент в мультисайтинге и Общая база пользователей в мультисайтинге. Для себя выбрал вариант — не совмещать. variable — переменные сайта. Из-за присутствия специфичных переменных, вроде site_name (имя сайта), site_slogan, theme_default, pathauto_* совместить не получится. watchdog — журнал ошибок сайта. Совместить можно, но крайне нежелательно, ибо при большом количестве сайтов в админке сложно смотреть такие журналы — всё валится в одну кучу. В PhpMyAdmin можно будет задать фильтр по столбцу location, но это не удобно.
  • При объединении пользователей и сеансов блок &amp;quot;Сейчас на сайте&amp;quot; будет показывать одного и того же пользователя на всех сайтах мультисайтинга, поэтому использовать его будет нельзя.
  • При объединении пользователей и сеансов блок &amp;quot;Сейчас на сайте&amp;quot; будет показывать одного и того же пользователя на всех сайтах мультисайтинга, поэтому использовать его будет нельзя.
  • Модуль Shared Sign-On не обновлялся уже почти год и в данный момент считается заброшенным: http://drupal.org/node/463408 «Mark singlesignon as abandoned».
  • Обратите внимание: если делать контент общим и показывать его на всех сайтах, то будет дублированный контент на разных сайтах. Это не любят ни люди, ни поисковики. Решение проблемы дублированного контента при общем контенте в мультисайтинге: Разделить контент по типам материалов и на каждом сайте выводить определенный тип материала модулем Views или сниппетом.
  • http://drupal.org/node/132361#comment-222070 «Pretty much what you had» - комментарий Cloudy о том, какие таблицы нужно делать общими для общей базы пользователей.
  • Продвинутый мультисайтинг

    1. 1. Продвинутый мультисайтинг
    2. 2. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul>
    3. 3. Обзор таблиц базы данных <ul><li>Таблицы, которые можно смело делать общими </li></ul><ul><li>Таблицы, которые можно делать общими при необходимости и осторожно </li></ul><ul><li>Таблицы, которые делать общими опасно </li></ul><ul><li>Таблицы, которые НЕЛЬЗЯ делать общими </li></ul>
    4. 4. Таблицы, которые можно смело делать общими <ul><li>filters и filter_formats — форматы ввода. </li></ul><ul><li>locales_* — строки переводов. </li></ul><ul><li>role — роли на сайте. </li></ul><ul><li>permission — права ролей на хуки, предоставляемые модулями. </li></ul><ul><li>users — пользователи сайта. </li></ul><ul><li>users_roles — роли пользователей сайта. </li></ul>
    5. 5. Таблицы, которые можно делать общими при необходимости <ul><li>access — блокировка по IP, имени пользователя, e-mail. </li></ul><ul><li>authmap — таблица для внешних аутентификаций (LDAP, OpenID). </li></ul><ul><li>flood — ограничение количества запусков определеных участков кода. </li></ul><ul><li>system — данные про установленные модули и темы. </li></ul><ul><li>sessions — сеансы пользователей. </li></ul>
    6. 6. Таблицы, которые делать общими опасно <ul><li>comments — комментарии. </li></ul><ul><li>files и file_revisions — файлы. </li></ul><ul><li>node и node_* — контент сайта. </li></ul><ul><li>term_* — термины таксономии. </li></ul><ul><li>view_* — виды. </li></ul><ul><li>vocabulary и vocabulary_node_types — словари таксономии. </li></ul>
    7. 7. Таблицы, которые НЕЛЬЗЯ делать общими (1) <ul><li>blocks — таблица блоков сайта. </li></ul><ul><li>blocks_roles — доступ ролей к блокам. </li></ul><ul><li>boxes — текст (код) блоков. </li></ul><ul><li>cache и cache_* — кэши. </li></ul><ul><li>history — последние непрочитанные сообщения (Drupal 5). </li></ul><ul><li>menu — меню сайта (Drupal 5). </li></ul>
    8. 8. Таблицы, которые НЕЛЬЗЯ делать общими (2) <ul><li>sequences — внутренний счетчик нод, комментариев, пользователей. </li></ul><ul><li>url_alias и url_alias_extra — алиасы, ЧПУ, чистые ссылки. </li></ul><ul><li>variable — переменные сайта. </li></ul><ul><li>watchdog — журнал ошибок сайта. </li></ul>
    9. 9. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul>
    10. 10. Методы объединения таблиц сайтов <ul><li>Использовать префиксы таблиц </li></ul><ul><li>Использовать разные базы данных </li></ul>
    11. 11. Использование префиксов таблиц (1) <ul><li>Для таблиц отдельного сайта задаётся свой префикс таблиц: </li></ul><ul><li>Для общих таблиц используется общий префикс: </li></ul>site1_system shared_users
    12. 12. Использование префиксов таблиц (2) <ul><li>Префикс задаётся в файле settings.php: </li></ul>$db_prefix = array( 'default' => 'site1_', 'users' => 'shared_', 'sessions' => 'shared_', // Перечислить все общие таблицы... 'role' => 'shared_', );
    13. 13. Использование разных баз данных (1) <ul><li>Подключение к базе обычно задаётся в файле settings.php так: </li></ul>$db_url = 'mysqli://user:password@localhost/site1'; $db_prefix = '';
    14. 14. Использование разных баз данных (2) <ul><li>Вместо префикса указываем имя базы данных: </li></ul>$db_url = 'mysqli://user:password@localhost/site1'; $db_prefix = array( 'default' => '', 'authmap' => 'shared.', // Перечислить все общие таблицы... 'users' => 'shared.', );
    15. 15. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul>
    16. 16. Мультисайтинг с общими пользователями (1) <ul><li>Нужно сделать общими таблицы: </li></ul><ul><li>users </li></ul><ul><li>sessions </li></ul><ul><li>authmap </li></ul><ul><li>Если используется модуль profile - нужно сделать общими: </li></ul><ul><li>profile_fields </li></ul><ul><li>profile_values </li></ul>
    17. 17. Мультисайтинг с общими пользователями (2) <ul><li>Общие пользователи, роли и права доступа: </li></ul><ul><li>users </li></ul><ul><li>users_roles </li></ul><ul><li>role </li></ul><ul><li>permission </li></ul><ul><li>sessions </li></ul><ul><li>url_alias </li></ul><ul><li>url_alias_extra </li></ul>
    18. 18. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul>
    19. 19. Общий логин (аутентификация) <ul><li>Модуль Shared Sign-On (http://drupal.org/project/singlesignon) </li></ul><ul><li>В settings.php указать: </li></ul>ini_set('session.name', 'mysite_PHPSESSID');
    20. 20. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul>
    21. 21. Мультисайтинг с общим контентом <ul><li>Делаем общими таблицы: </li></ul><ul><li>comments </li></ul><ul><li>files </li></ul><ul><li>file_revisions </li></ul><ul><li>history </li></ul><ul><li>node </li></ul><ul><li>node_* </li></ul><ul><li>term_* </li></ul><ul><li>view_* </li></ul><ul><li>vocabulary </li></ul><ul><li>vocabulary_node_types </li></ul>
    22. 22. План доклада <ul><li>Обзор таблиц базы данных </li></ul><ul><li>Методы объединения таблиц сайтов </li></ul><ul><li>Мультисайтинг с общими пользователями </li></ul><ul><li>Общий логин (аутентификация) </li></ul><ul><li>Мультисайтинг с общим контентом </li></ul><ul><li>Спасибо за внимание! </li></ul>
    23. 23. Полезные ссылки (1) <ul><li>http://www.razgonka.ru/multisiting «Мультисайтинг — это просто» </li></ul><ul><li>http://drupal.ru/node/6226 «Мультисайтинг на Друпале — это круто!» </li></ul><ul><li>http://drupalcookbook.ru/node/335 «Установка мультисайтинга с общими таблицами» </li></ul><ul><li>http://webdevgeeks.com/schemaspy/index.html «Схема БД Drupal 5» </li></ul>
    24. 24. Полезные ссылки (2) <ul><li>http://drupal.org/node/132361#comment-222070 «Pretty much what you had» </li></ul><ul><li>http://groups.drupal.org/node/11795 «D5 Shared database - sharing all but theming/layout/navigation» </li></ul><ul><li>http://devbee.com/user_sequence_gotcha «user sequence gotcha» </li></ul><ul><li>http://drupal.org/node/291373 «Multi-site with single codebase, different content databases, shared user database, shared sign-on» </li></ul>
    25. 25. Спасибо за внимание. <ul><li>Докладчик </li></ul><ul><li>Влад Савицкий </li></ul><ul><li>[email_address] </li></ul>

    ×