УрокМультисайтинг
Недавно на мыло пришло письмо с просьбой рассказать про мультисайтинг. С удовольствием расскажу.
Кстати, речь в этой статье пойдёт не о стандартном мультисайтинге для Друпала. Это скорее хитрый способ хранения файлов на сервере, экономящий кучу времени и памяти (физической). Если спросить во сколько раз он экономит это самое время и место - то ответ будет таким: примерно во столько раз, сколько сайтов хранится на данном сервере. Если на сервере сто сайтов - то в 90-100 раз будет экономия места, в зависимости от сложности и индивидуальности. И время на инсталяцию друпала со всеми модулями сокращается от нескольких часов до пары минут. Удобно, ё-моё.
Итак, сейчас я расскажу в чём же смысл мультисайтинга. А смысл прост - куда-нибудь в корень заливается друпал со всеми модулями. После чего при установке нового сайта, в папку с сайтом не надо будет копировать заново друпал. Просто вместо файлов (папок) ставить ссылки на эти файлы, находящиеся в папке с друпалом на сервере. А если учесть, что размер ссылки - около 33кб, то получается очень даже неплохая экономия места на сервере. И ссылки создать - это дело секунд 10ти.
Теперь к практике. О том, как Я делаю мультисайтинговую структуру. Есть такая замечательная программа - . Качаем, устанавливаем. Удобная в использовании, широко не распространённая. В общем, то что надо :) После инсталяции открываем ехе-шник, вводим сервер/логин/пароль (как обычно при входе на сервер, ничего нового). Далее в корень заливаем папку с чистым друпалом. Рядом обычно лежит папка с доменами. У меня на большинстве серверов это выглядит вот так:
Папка внутри друпала выглядит так (я сразу исключил файлы, которые нам не нужны):
Теперь заходим в каталог с любым нашим доменом (пока каталог чист, не считая папок, созданных сервером), жмём правую кнопку мыши -> new -> link. Указываем имя файла или папки, и ссылку на эту папку (файл) на сервере. Например:
таким же образом линкуем следующие файлы (для друпал 6):
- includes
- misc
- modules
- profiles
- scripts
- themes
- cron.php
- index.php
- install.php
- update.php
- xmlrpc.php
Остальные файлы пока линковать НЕ НАДО.
Далее в эту же папку забрасываем (без линковки) файлы .htaccess и robots.txt (т.к. для каждого сайта они свои). Теперь создаём пустую папку sites. Заходим в неё и создаём ссылку на папку all из ../drupal/sites/all. Далее из стандартного друпала в папку /sites закидываем всё содержимое папки default (а это - папки files и tmp и файл settings.php). Переименовываем папку default в папку с названием сайта (по идее не обязательно, но я всегда так делаю).
В итоге в корневом каталоге домена у нас получится:
А в папке /sites:
Далее остальные домены создаются ещё проще - выбираются все линки из готового домена -> правая кнопка мыши -> duplicate -> вводите адресс куда копировать ссылки -> готово:
Теперь все темы, модули и прочее надо закидывать только в ../drupal/sites/all. И все ваши сайты, созданные подобным образом, будут видеть эти модули и темы. Таким образом, если у вас на сервере сто сайтов, и вам вдруг захотелось поставить/проапдейтить/удалить модуль, то сделать это придётся только один раз, а не сто.
Приятного создания сайтов, друзья!
- SplasH
- 11.10.2010
- 4553
Комментарии
Токлько что проверил с Drupal 7 (Beta 1) - тож прокатывает.
Оно работать будет для всех версий друпала. Просто надо копировать файлы для конкретной версии ядра друпала и всё. Принцип-то работы не меняется
Эта статья не про мультисайтинг, так, как он понимается в Друпале.
Серьёзно?
Открываем файл INSTALL.txt в папке с друпалом и читаем:
читаем ещё столько раз, что бы достичь просветления. и не городить огород с линками. (кстати без рута ссылки на директории тебе сделать не дадут)
* facepalm
Ваш парсер каментов пожрал ссылку, которую я публиковал в своём первом посте на страницу с официальным мануалом на эту тему.
он не пожрал - вы написали так:
Между тэгом не было текста ;)
почему бы не воспользоваться стандартным встроенным средством друпала? просто создавая сайты в /sites ?
решение, конечно, оригинальное, но в корне неправильное!
хм... я сейчас понял вашу идею. Надо попробовать, подумать :)
И все таки как лучше сделать????
Подскажите, если один сайт и несколько поддоменов, и 2 вариант, если несколько доменов на один сайт???
если на сайте несколько поддоменов, то лучше создать несколько папок типа:
/sites/poddomen1.site.ru
/sites/poddomen2.site.ru
/sites/site.ru
и в них хранить настройки баз данных и файлы каждого поддомена.
если несколько доменов на один сайт, то лучше пролинковать все домены в один (сделать их синонимами) и там будет обычная структура:
/sites/default
где и будет храниться общая бд и файлы
все-таки тут идет обсуждение какого-то кусторного способа мультисайтинга. А у друпала есть модуль, который, как я понял, избавляет от ручное работы перелинковки. Но я сам не смотрел.
Да, это не самый популярный метод мультисайтинга, но есть одно НО - когда много сайтов, как мне настроить, например, robots.txt для каждого из сайтов по потдельности, используя друпаловский мультисайтинг?
Кстати, что за модуль? Буду очень благодарен если вспомнишь название.
Doljno vam pomo4i.
а у меня почему-то при нажатий правой кнопкой у меня не нажимается на link, почему?
такая же тема.. :( нельзя выбрать new -> link
А вы уверены что делаете это на сервере?
Так точно. Серверней некуда :( получилось сделать только через Alt+F6.
Теперь вопрос в следующем: почему не работает? ;)
Делаю так, как у вас в инструкции (кстати, большое спасибо за этот сайт! очень полезно, всегда читаю с удобольствием!).. но видимо всё равно что-то не так.
Задача: есть хостинг, на котором 3 домена. Хочу сделать единый респозиторий (если можно так сказать) для всех них, т.к. все модули и темы будут одинаковые, будет разница только в БД (но это я знаю где указывать). Друпал 7.7 залит прямо в корень хоста, который теперь имеет вид:
..
/drupal
- /includes
- /misc
..
- /index.php
/site1.ru
- /tmp
- /www
/site2.ru
- /tmp
- /www
/site3.ru
- /tmp
- /www
В папке домена /site1.ru/www созданы линки на содержимое папки /drupal. Эффект: Forbidden - You don't have permission to access / on this server.
В чём тут дело-то может быть?
Первым делом проверьте слэши при копировании. Присутствуют ли, в какую сторону смотрят и т.п. Возможно, вы просто ссылаетесь в никуда. Далее убедитесь, что вы заходите под рутом. Далее, если вы всё делаете правильно, я бы посоветовал обратиться к хостерам с этой проблемой, т.к. больше причин я незнаю :) Как справитесь - обязательно напишите в чём была проблема!
Грабли и ныне там ;) вообщем, не понимаю я как это "под рутом" заходить.. где и как это? Проблема в том, что скорее всего ссылки идут не туда. Хотя у меня .MasterHost - может быть в нём проблема? о_О
Кстати, очень странно: мне приходилось в окошке моего компа (в WinSCP) делать ссылки путём Alt+F6, и только после этого заливать на хост.. кстати, а какой путь указывать, если чистый друпал лежит в корне хоста, а место линков аж на третьем уровне от корня?? что-то в виде: ../../drupal ???
вообщем, запутался уже окончательно..
Что-то мне подсказывает, что не симлинки вы создаёте. Я посмотрел - в WinSCP на их создание горячих клавиш нет. Кстати, вы конектитесь по sftp надеюсь ?)
Евгений, ничего себе я так тупанул конкретно! :))
Вообщем, залогинился через SSH (естессно SFTP), проделал все те же операции - вуаля :) все три сайта как братья близнецы, только с разными лицами ;) спасибо большое за наставления!
p.s. я бы дописал в основную тему про то, что надо заходить через SSH и только по SFTP ;)
Кстати, дубликаты так делать нельзя, т.к. он тупо копирует все файлы от родителя в указанную папку, вместо ссылок на них.. может быть опять что-то не так делаю? :(
чОрт.. очень странная фигня случилась.. вообщем, создавал ещё один домен - всё отлично, сделал линков - захожу на mydomain.ru и получаю error 500.. причём друпал явно видет все файлы, т.к. перенаправил меня с index.php на install.php, на котором и случилась ошибка.. для проверки снова по новой сделал все свои 3 домена по этой аналогии - такая же 500-ка вылезает!! что теперь не так? :( в хостинге говорят, что у них всё хорошо..
Так, я рад что хоть с чем-то мы разобрались :)
Дублируете вы, надеюсь, уже симлинки? Т.к. изначально первые симлинки надо было делать вручную, а уже потом дублировать.
P.s. я только один хостинг знаю, где честно признаются, когда ошибка на их стороне - it-patrol. Остальные обычно говорят со смыслом "сами вы пидорас". Попробуй погуглить, я не думаю что у тебя первого такого ошибка.
Собственно, всё ;) проблема решилась переходом на IT-PATROL :)
Комментировать