УрокМультисайтинг

Недавно на мыло пришло письмо с просьбой рассказать про мультисайтинг. С удовольствием расскажу.

Кстати, речь в этой статье пойдёт не о стандартном мультисайтинге для Друпала. Это скорее хитрый способ хранения файлов на сервере, экономящий кучу времени и памяти (физической). Если спросить во сколько раз он экономит это самое время и место - то ответ будет таким: примерно во столько раз, сколько сайтов хранится на данном сервере. Если на сервере сто сайтов - то в 90-100 раз будет экономия места, в зависимости от сложности и индивидуальности. И время на инсталяцию друпала со всеми модулями сокращается от нескольких часов до пары минут. Удобно, ё-моё.

Итак, сейчас я расскажу в чём же смысл мультисайтинга. А смысл прост - куда-нибудь в корень заливается друпал со всеми модулями. После чего при установке нового сайта, в папку с сайтом не надо будет копировать заново друпал. Просто вместо файлов (папок) ставить ссылки на эти файлы, находящиеся в папке с друпалом на сервере. А если учесть, что размер ссылки - около 33кб, то получается очень даже неплохая экономия места на сервере. И ссылки создать - это дело секунд 10ти.

Теперь к практике. О том, как Я делаю мультисайтинговую структуру. Есть такая замечательная программа - WinSCP. Качаем, устанавливаем. Удобная в использовании, широко не распространённая. В общем, то что надо :) После инсталяции открываем ехе-шник, вводим сервер/логин/пароль (как обычно при входе на сервер, ничего нового). Далее в корень заливаем папку с чистым друпалом. Рядом обычно лежит папка с доменами. У меня на большинстве серверов это выглядит вот так:

123.PNG

Папка внутри друпала выглядит так (я сразу исключил файлы, которые нам не нужны):

mult.PNG

Теперь заходим в каталог с любым нашим доменом (пока каталог чист, не считая папок, созданных сервером), жмём правую кнопку мыши -> new -> link. Указываем имя файла или папки, и ссылку на эту папку (файл) на сервере. Например:

mult_0.PNG

таким же образом линкуем следующие файлы (для друпал 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 в папку с названием сайта (по идее не обязательно, но я всегда так делаю).

В итоге в корневом каталоге домена у нас получится:

mult_1.PNG

А в папке /sites:

mult_2.PNG

Далее остальные домены создаются ещё проще - выбираются все линки из готового домена -> правая кнопка мыши -> duplicate -> вводите адресс куда копировать ссылки -> готово:

mult_3.PNG

Теперь все темы, модули и прочее надо закидывать только в ../drupal/sites/all. И все ваши сайты, созданные подобным образом, будут видеть эти модули и темы. Таким образом, если у вас на сервере сто сайтов, и вам вдруг захотелось поставить/проапдейтить/удалить модуль, то сделать это придётся только один раз, а не сто.

Приятного создания сайтов, друзья!

Похожие материалы

Комментарии

Аватар пользователя Ioskevich
Ioskevich написал:

Токлько что проверил с Drupal 7 (Beta 1) - тож прокатывает.

15.10.2010 17:42
Аватар пользователя Spleshka
Spleshka написал:

Оно работать будет для всех версий друпала. Просто надо копировать файлы для конкретной версии ядра друпала и всё. Принцип-то работы не меняется

16.10.2010 01:46
Аватар пользователя Бешеный стопицоткрыл
Бешеный стопицоткрыл написал:

Эта статья не про мультисайтинг, так, как он понимается в Друпале.
ссылка

19.10.2010 15:21
Аватар пользователя Spleshka
Spleshka написал:

Серьёзно?
Открываем файл INSTALL.txt в папке с друпалом и читаем:

MULTISITE CONFIGURATION
-----------------------

A single Drupal installation can host several Drupal-powered sites, each with
its own individual configuration.

Additional site configurations are created in subdirectories within the 'sites'
directory. Each subdirectory must have a 'settings.php' file which specifies the
configuration settings. The easiest way to create additional sites is to copy
the 'default' directory and modify the 'settings.php' file as appropriate. The
new directory name is constructed from the site's URL. The configuration for
www.example.com could be in 'sites/example.com/settings.php' (note that 'www.'
should be omitted if users can access your site at http://example.com/).

Sites do not have to have a different domain. You can also use subdomains and
subdirectories for Drupal sites. For example, example.com, sub.example.com,
and sub.example.com/site3 can all be defined as independent Drupal sites. The
setup for a configuration such as this would look like the following:

sites/default/settings.php
sites/example.com/settings.php
sites/sub.example.com/settings.php
sites/sub.example.com.site3/settings.php

When searching for a site configuration (for example www.sub.example.com/site3),
Drupal will search for configuration files in the following order, using the
first configuration it finds:

sites/www.sub.example.com.site3/settings.php
sites/sub.example.com.site3/settings.php
sites/example.com.site3/settings.php
sites/www.sub.example.com/settings.php
sites/sub.example.com/settings.php
sites/example.com/settings.php
sites/default/settings.php

If you are installing on a non-standard port, the port number is treated as the
deepest subdomain. For example: http://www.example.com:8080/ could be loaded
from sites/8080.www.example.com/. The port number will be removed according to
the pattern above if no port-specific configuration is found, just like a real
subdomain.

Each site configuration can have its own site-specific modules and themes in
addition to those installed in the standard 'modules' and 'themes' directories.
To use site-specific modules or themes, simply create a 'modules' or 'themes'
directory within the site configuration directory. For example, if
sub.example.com has a custom theme and a custom module that should not be
accessible to other sites, the setup would look like this:

sites/sub.example.com/:
settings.php
themes/custom_theme
modules/custom_module

NOTE: for more information about multiple virtual hosts or the configuration
settings, consult the Drupal handbook at drupal.org.

For more information on configuring Drupal's file system path in a multi-site
configuration, see step 6 above.

19.10.2010 15:26
Аватар пользователя diamon
diamon написал:

читаем ещё столько раз, что бы достичь просветления. и не городить огород с линками. (кстати без рута ссылки на директории тебе сделать не дадут)

19.10.2010 17:29
Аватар пользователя Бешеный стопицоткрыл
Бешеный стопицоткрыл написал:

* facepalm
Ваш парсер каментов пожрал ссылку, которую я публиковал в своём первом посте на страницу с официальным мануалом на эту тему.

01.12.2010 09:18
Аватар пользователя Spleshka
Spleshka написал:

он не пожрал - вы написали так:

<a href="http://drupal.org/getting-started/6/install/multi-site" title="http://drupal.org/getting-started/6/install/multi-site"></a>

Между тэгом не было текста ;)

01.12.2010 20:25
Аватар пользователя diamon
diamon написал:

почему бы не воспользоваться стандартным встроенным средством друпала? просто создавая сайты в /sites ?
решение, конечно, оригинальное, но в корне неправильное!

19.10.2010 17:26
Аватар пользователя Spleshka
Spleshka написал:

хм... я сейчас понял вашу идею. Надо попробовать, подумать :)

19.10.2010 17:43
Аватар пользователя VVV
VVV написал:

И все таки как лучше сделать????
Подскажите, если один сайт и несколько поддоменов, и 2 вариант, если несколько доменов на один сайт???

08.11.2010 20:41
Аватар пользователя Spleshka
Spleshka написал:

если на сайте несколько поддоменов, то лучше создать несколько папок типа:
/sites/poddomen1.site.ru
/sites/poddomen2.site.ru
/sites/site.ru
и в них хранить настройки баз данных и файлы каждого поддомена.

если несколько доменов на один сайт, то лучше пролинковать все домены в один (сделать их синонимами) и там будет обычная структура:
/sites/default
где и будет храниться общая бд и файлы

08.11.2010 21:57
Аватар пользователя Денис
Денис написал:

все-таки тут идет обсуждение какого-то кусторного способа мультисайтинга. А у друпала есть модуль, который, как я понял, избавляет от ручное работы перелинковки. Но я сам не смотрел.

18.02.2011 19:10
Аватар пользователя Spleshka
Spleshka написал:

Да, это не самый популярный метод мультисайтинга, но есть одно НО - когда много сайтов, как мне настроить, например, robots.txt для каждого из сайтов по потдельности, используя друпаловский мультисайтинг?
Кстати, что за модуль? Буду очень благодарен если вспомнишь название.

18.02.2011 19:48
Аватар пользователя Alex
Alex написал:
14.04.2011 19:15
Аватар пользователя Hudojnick
Hudojnick написал:

а у меня почему-то при нажатий правой кнопкой у меня не нажимается на link, почему?

22.07.2011 18:55
Аватар пользователя Vikky
Vikky написал:

такая же тема.. :( нельзя выбрать new -> link

29.07.2011 19:51
Аватар пользователя Spleshka
Spleshka написал:

А вы уверены что делаете это на сервере?

29.07.2011 19:53
Аватар пользователя Vikky
Vikky написал:

Так точно. Серверней некуда :( получилось сделать только через 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.

В чём тут дело-то может быть?

29.07.2011 20:04
Аватар пользователя Spleshka
Spleshka написал:

Первым делом проверьте слэши при копировании. Присутствуют ли, в какую сторону смотрят и т.п. Возможно, вы просто ссылаетесь в никуда. Далее убедитесь, что вы заходите под рутом. Далее, если вы всё делаете правильно, я бы посоветовал обратиться к хостерам с этой проблемой, т.к. больше причин я незнаю :) Как справитесь - обязательно напишите в чём была проблема!

29.07.2011 20:24
Аватар пользователя Vikky
Vikky написал:

Грабли и ныне там ;) вообщем, не понимаю я как это "под рутом" заходить.. где и как это? Проблема в том, что скорее всего ссылки идут не туда. Хотя у меня .MasterHost - может быть в нём проблема? о_О

Кстати, очень странно: мне приходилось в окошке моего компа (в WinSCP) делать ссылки путём Alt+F6, и только после этого заливать на хост.. кстати, а какой путь указывать, если чистый друпал лежит в корне хоста, а место линков аж на третьем уровне от корня?? что-то в виде: ../../drupal ???

вообщем, запутался уже окончательно..

29.07.2011 20:53
Аватар пользователя Spleshka
Spleshka написал:

Что-то мне подсказывает, что не симлинки вы создаёте. Я посмотрел - в WinSCP на их создание горячих клавиш нет. Кстати, вы конектитесь по sftp надеюсь ?)

29.07.2011 22:20
Аватар пользователя Vikky
Vikky написал:

Евгений, ничего себе я так тупанул конкретно! :))

Вообщем, залогинился через SSH (естессно SFTP), проделал все те же операции - вуаля :) все три сайта как братья близнецы, только с разными лицами ;) спасибо большое за наставления!

p.s. я бы дописал в основную тему про то, что надо заходить через SSH и только по SFTP ;)

30.07.2011 11:03
Аватар пользователя Vikky
Vikky написал:

Кстати, дубликаты так делать нельзя, т.к. он тупо копирует все файлы от родителя в указанную папку, вместо ссылок на них.. может быть опять что-то не так делаю? :(

чОрт.. очень странная фигня случилась.. вообщем, создавал ещё один домен - всё отлично, сделал линков - захожу на mydomain.ru и получаю error 500.. причём друпал явно видет все файлы, т.к. перенаправил меня с index.php на install.php, на котором и случилась ошибка.. для проверки снова по новой сделал все свои 3 домена по этой аналогии - такая же 500-ка вылезает!! что теперь не так? :( в хостинге говорят, что у них всё хорошо..

30.07.2011 11:24
Аватар пользователя Spleshka
Spleshka написал:

Так, я рад что хоть с чем-то мы разобрались :)
Дублируете вы, надеюсь, уже симлинки? Т.к. изначально первые симлинки надо было делать вручную, а уже потом дублировать.
P.s. я только один хостинг знаю, где честно признаются, когда ошибка на их стороне - it-patrol. Остальные обычно говорят со смыслом "сами вы пидорас". Попробуй погуглить, я не думаю что у тебя первого такого ошибка.

30.07.2011 12:52
Аватар пользователя Vikky
Vikky написал:

Собственно, всё ;) проблема решилась переходом на IT-PATROL :)

05.08.2011 21:11

Комментировать