Сайт коллекции SharePoint, управляемые пути, а можно субдомены?

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

Речь пойдет о ссылках, по которым могут быть размещены сайт коллекции SharePoint.

Без минимума теории было бы тоже неправильно.

Если взглянуть на логическую архитектуру сайтов SharePoint, то мы увидим следующую картину:

Во главе стола - IIS и веб-приложения, в рамках веб-приложений размещаются сайт коллекции, а в них, в свою очередь, набор сайтов.

С точки зрения адресации, веб-приложение определяет Host Header и порт, которые, кстати, легко могут быть переопределены альтернативным доступом (AAM) или расширением веб-приложения.

В рамках примера, пусть у нас будет следующее веб-приложение:

http://sharepoint2013.arvosys.ru

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

При этом сайт коллекция всегда содержит корневой сайт.

У сайтов может быть иерархия подсайтов.

Адреса подсайтов формируются следующим образом:

/subsite1/subsite11/.../subsiteNM/

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

Управляемые пути бывают двух типов:

  • Явные (Explicit)
    • В случае с явными путями сайт коллекция будет располагаться в корне управляемого пути, на таком пути, логично предположить, сможет существовать только одна сайт коллекция.
    • Продолжим пример, допустим у нас создан управляемый путь "spdemo" с типом Explicit.
    • Ссылка созданной сайт коллекции будет следующией: http://sharepoint2013.arvosys.ru/spdemo/
  • Подстановки (Wildcard)
    • Подстановки созданы, чтобы на них можно было располагать множество сайт коллекций, при этом для каждой сайт коллекии добавлется "папка" в пути адреса.
    • По умолчанию создан управляемый путь "sites".
    • При создании сайт коллекции "spdemo" ссылка будет следующией: http://sharepoint2013.arvosys.ru/sites/spdemo/

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

Давайте представим ситуацию, что нам нужно:

  • нашу ферму вывести конечным пользователям с использованием субдоменов, вот такое оно функциональное требование: CRM должен быть по адресу http://crm.company.org, управление проектами - http://epm.company.org, документооборот на http://ecm.company.org и так далее и никак иначе,
  • т.е., все адреса должны быть на 80-м порту,
  • количество субдоменов для разных функциональных случаев не ограничено.

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

Кстати, вопрос: может ли быть несколько веб-приложений на одном порту? Ответ: да, конечно могут, если будут с разными Host Header'ами.

Так что же делать, спросите Вы, если не создавать отдельные веб-приложения? Как быть?

И вот ради этого ответа весь этот пост. Сайт коллекции могут быть и на субдомене, отличном от Host Header веб-приложения.

Создавать такие сайт коллекции можно только через PowerShell.

А вот и он:

Add-PSSnapin Microsoft.SharePoint.PowerShell-ErrorAction SilentlyContinue;

 

New-SPSite "http://spdemo.arvosys.ru" `

      -HostHeaderWebApplication "http://sharepoint2013.arvosys.ru" `

      -Name "SPDemo" ` -OwnerAlias "CIBSPAdmin" `

     -Template "STS#0";

 

New-WebBinding -Name "http://sharepoint2013.arvosys.ru" `

      -IPAddress "*" `

      -Port 80 `

      -HostHeader "spdemo.arvosys.ru";

Add-PSSnapin - добавление снапина объектной модели SharePoint, хороший тон, чтобы он присутствовал.

New-SPSite - командлет создания сайт коллекции.

  • В передаваемом идентификатора надо указать ссылку на субдомене и оно будет работать.
  • В параметр HostHeaderWebApplication указываем наше веб-приложение.
  • Name - наименование сайт коллекции.
  • OwnerAlias - владелец сайт коллекции, второго можно не указывать.
  • Template - идентификатор шаблона сайт коллекции. "STS#0" - идентификатор TeamSite. Параметр можно пропустить, тогда при первой навигации к сайт коллекции можно будет выбрать нужный шаблон в визуальном интерфейсе.

New-WebBinding - одно из составляющих чуда. Непосредственно к SharePoint отношения не имеет. Данный командлет выставляет настройку IIS, а именно прописывает связь с нужным Host Header.

Последнее составляющее "чуда" - добавить запись в DNS.

В итоге в одном веб-приложении, на одном порту, на разных субдоменах, у нас заводятся и работают сайт коллекции SharePoint.


Опубликовано: 27.01.2014
Автор: Андрей Кольтяков