Мультисайтинг как связка не отдельных доменов или субдоменов, а папок основного домена [РЕШЕНО]

Главные вкладки

Аватар пользователя sanita sanita 22 сентября 2010 в 20:52

Мультисайтинг одна из супер-фишек друпала. Это меня к нему и привлекло. Классические, так сказать, связки мультисайтинга следующие:

domain1.com
domain2.com
..... и т.д.

или

subdomain1.domain1.com
subdomain2.domain1.com
....... и т.д.

или сочетание этих двух методов. Базы тоже могут быть общими, частично общими или разными.
С этим я разобралась давно, благо материалов на эту тему хватает.

Но, сейчас столкнулась с ситуацией, когда нужно, чтобы была "вложеность" мультисайтинга. Несколько сайтов с частично общей базой (точнее, одна общая + у каждого сайта своя), расположенных в папках основного сайта:

1-й сайт: доступен по адресу http://domain.com
2-й сайт: доступен по адресу http://domain.com/vlozhensait1
3-й сайт: доступен по адресу http://domain.com/vlozhensait2
..... и т.д.

Цель занятия - разделить базы, темы, файлы и некоторые модули самостоятельных сайтов domain.com, vlozhensait1, vlozhensait2. Самое важное для меня в данном случае, разделить базы - одна база будет очень большой и более уязвимой.

Уважаемые коллеги, подскажите, возможна ли такая связка мультисайтинга? Ума не приложу, как это можно сделать? Если в корне сайта прописать папки vlozhensait1, vlozhensait2 и т.д., то они доступны по соответствующему адресу, но не являются частью мультисайтинга. Их надо как-то связать через папку sites/. Но как? Куда думать?

Комментарии

Аватар пользователя sanita sanita 22 сентября 2010 в 21:00

Спасибо, конечно Smile Я, в общем-то, с мультисайтингом, описанном мной в начале моего поста, справляюсь вполне хорошо. А где, подскажите, в вашем "вкраце" написано о моем вопросе?

Аватар пользователя Stan.Ezersky Stan.Ezersky 22 сентября 2010 в 21:06

"sanita" wrote:
Цель занятия - разделить базы, темы, файлы и некоторые модули самостоятельных сайтов domain.com, vlozhensait1, vlozhensait2.
В чём сложность?
Для каждого сайта — свои модули или темы. Для каждого сайта — своя база. По указанной ссылке выше, это всё описано.

Аватар пользователя sanita sanita 22 сентября 2010 в 21:17

Сложность в том, что у сайтов нет собственных доменов. Они - часть основного домена domain.com.

Если есть собственные домены (или субдомены), то проблем нет - прописываем путь каждого домена из мультисайтинга к основному домену и потом друпал все сам распределяет. В моем случае нет доменов. Куда путь прописывать, чтобы друпал понимал, что vlozhensait1, vlozhensait2 не просто папки основного домена domain.com, а самостоятельные сайты и функционируют как таковые?

(.htaccess BaseUrl - ?, может быть. В физических папках /vlozhensait1 и /vlozhensait2 ?)

Аватар пользователя sanita sanita 22 сентября 2010 в 21:39

Хостинг супер, субдоменов хватает. Просто надо добавить в связку **основной домен + субдомены** и сайты "из папки".

Переношу порядочно большой сайт на друпал, есть папки, в которых сейчас находятся самостоятельные сайты, что очень удобно. Не хочется выносить папки в субдомены (переадресации, падение тяжести основного сайта и т.д. и т.п. - не хочется плодить сущности), а оставить их в составе основного домена значит очень утяжелить базу + уязвимость :(.

Возможно ли вообще такое сделать?

Аватар пользователя sanita sanita 22 сентября 2010 в 22:05

Не хочется флудить собственную тему, но отвечу. На друпал будет переведен весь старый сайт (ну, кроме форума и еще парочки прибамбасов). Цель - постоить удобную систему управления содержанием и работу с юзерами, редакторами, модераторами и т.д. Мне нужно максимально сохранить существующую структуру сайта, которая удобна.

Ой, я кажется поняла, что вы меня спрашиваете. Слово "папки" употребляю как физическое место и как путь http:// . Ну, например, мне надо, чтобы самостоятельный сайт из мультисайтинга (имеющий свои настройки и базу) находился не по адресу, например, http://catalog.domain.com , а по адресу http://domain.com/catalog Это я и называю папкой, хотя по сути это отдельный сайт (поэтому говорю про мультисайтинг), который должен брать свои настройки из sites/catalog.

Аватар пользователя sanita sanita 23 сентября 2010 в 2:31

"Stan.Ezersky" wrote:
Вам сюда

Это я уже видела. Но, доступа к апаче у меня нет (иначе и проблем бы не было). Может попробовать сделать, чтобы на основной домен показывала папка, так как это для субдоменов делается? Ну, типа

sudomain1.domain.com --> domain.com
domain.com/vlozhensait1 --> domain.com
domain.com/vlozhensait2 --> domain.com

Чиорт, несколько дней голову ломаю.

Аватар пользователя sanita sanita 30 сентября 2010 в 6:59

"riyuzakki" wrote:
Учитесь внимательному чтению.

Smile Именно до этого места мне все было ясно. Проблема была добраться до апаче и прочих виртуальных хостингов.

Кароче. После долгих дней я наконец решила проблему. Наверное то, что я ее озвучила помогло мне мыслить логически. Все очень просто оказалось.

1. Делаем физические папки
sites/domain.com.vlozhensait1
sites/domain.com.vlozhensait2

2. Заливаем в них все, что нужно для связки в мультисайтинг -
settings.php
/files
/modules и т.д.

3. Делаем файл symlink.php (или с любым другим названием)
Содержание файла:
<?php
symlink(".", "vlozhensait1");
symlink(".", "vlozhensait2");
print "Done";
?>

4. Заливаем файл в корневую директорию (там, где находится друпал) и запускаем его только один раз. Очищаем кэш и получаем то, что надо!

Теперь по адресу http://domain.com/vlozhensait1 и http://domain.com/vlozhensait2 показываются самостоятельные сайты из мультисайтинга.

Проблема решена.

Аватар пользователя chel chel 24 сентября 2010 в 23:32

PS: не знал, что symlink - аналог ln -s (unix/linux комманды)

не смог прикрутить модуль domains к подпапкам
site.ru/site1
site.ru/site2
site.ru/super_site

только привязывается к
site1.site.ru
site2.site.ru

Аватар пользователя sanita sanita 30 сентября 2010 в 7:00

"chel" wrote:
PS: не знал, что symlink - аналог ln -s (unix/linux комманды

Я тоже не знала, что аналог. Даже думаю, что совсем не аналог (для справки - в линуксе не понимаю абсолютно ничего и просто повтаряю готовые решения как попугай, твердо веря авторитетам Smile ).

Я использовала симлинк потому, что у меня нет С-панели и у меня нет возможности прописать путь напрямую.

"chel" wrote:
не смог прикрутить модуль domains к подпапкам

Мне очень нравится этот модуль (если вы имеете в виду модуль Domain Access). Но, он работает с одной базой. "Нахождение" привязанных сайтов в этом модуле происходит не стандартным путем друпала, а собственным скриптом - в своей панели, где прописывается адрес связанных сайтов. Вы там правильно прописали путь к папке?
(P.S. Но это уже другая тема.)

Аватар пользователя chel chel 30 сентября 2010 в 1:13

там есть понятие создать домен.
вот aa.aa.aa.aaaa.aaaa - это домен для модуля, а aaa/aaa/aaa - это уже подпаки одного домена aaa. Я просто хотел попытаться заставить подпапки воспринимать как домены для модуля domain access.
как доменты для сайтов получается, но как домены для модуля - нет

Аватар пользователя sanita sanita 30 сентября 2010 в 6:57

chel, а вы не пробовали создать алиас (alias)? Может вам попробовать создать сайт с любым именем (в модуле), а потом ему присвоить алиас domain.com/papkapodsait ?

Аватар пользователя Dias Dias 25 января 2012 в 16:30

Создал папку в www\sites с названием drupal6.ru.region
Закинул в нее settings.php и папки themes, modules.
Но по адресу drupal6.ru/region ничего не находит.
При запуске symlink.php выдает ошибку Fatal error: Call to undefined function symlink()

Возможно из-за нее не работает. Подскажите как исправить это и все ли я правильно сделал? Спасибо.

Аватар пользователя chel chel 31 января 2012 в 17:38

"Dias" wrote:
А если не через локальный, а на хостинге можно обойтись без него?

ln -s [директория_откуда] [куда]
например ln -s site.ru domen2.site.ru
(domen2.site.ru - симлинк site.ru)

Аватар пользователя Dias Dias 2 февраля 2012 в 14:15

Это где надо будет прописать?И мне надо чтоб они как подпапки были(site.ru/site1), а не как субдомены(site.ru.site1). Сори если вопросы тупые, не сталкивался просто с этим.Заранее спасибо.

Аватар пользователя chel chel 3 февраля 2012 в 1:34

это в консоли ssh(сервера): ln -s откуда(реальная папка) куда(сим-линк)
symlink.php - это чере веб браузер (если у вас только ftp доступ)

Аватар пользователя Dias Dias 8 февраля 2012 в 18:51

Блин я незнаю, все перепробовал... Как поддомен sub.site.ru работает и с 1 бд и со многими, а как папка не хочет никак. Создал папку в sites/site.ru.region Закинул в нее settings.php и папку files. Сделал симлинк
<?php
symlink(".", "region");
print "Done";
?>

Захожу по ссылке site.ru/region пишет страница не найдена. В чем то проблема?

Аватар пользователя sanita sanita 24 февраля 2012 в 3:37

Dias, вы симлинки пишете на локальной машине? Зачем так сложно? Сделайте на локале подсайт так, как можете, а уже на хостинге пропишите симлинком путь к папке.

Содержание файла, которое вы написали, выглядит нормальным и все должно работать на хостинге, если файл находится в корне друпала.