Общая папка мультимедиа Umbraco в облачных экземплярах Azure

Я только что реализовал Umbraco в облачном экземпляре Azure. Мне удалось перенести мою существующую базу данных SQL для работы в SQL Azure, и все работает нормально, за исключением изображений и документов в папке мультимедиа.

По умолчанию папка мультимедиа находится в [siteroot]/Media.

Есть ли способ сопоставить эту папку с лазурным хранилищем? Если нет, я не думаю, что смогу масштабировать свои облачные экземпляры, поскольку образы зависят от локального хранилища виртуального сервера.

Редактировать: вознаграждение запущено

Что у меня есть до сих пор это:

  • Определите отдельную веб-роль, которая будет содержать каталог мультимедиа и все файлы.
  • Сопоставьте эту папку со службой хранилища BLOB-объектов Azure с помощью Cloud Drive, чтобы свести к минимуму риск потери данных и полагаться на единую точку хранения.
  • Каким-то образом (и это та часть, которую я не знаю, как выполнить) синхронизировать всю папку [siteRoot]/media с этим общим диском на всех запущенных экземплярах.

Я видел аналогичный подход, примененный в проекте Azure Accelerator от Umbraco, здесь: http://azureaccelerators.codeplex.com/releases

Но они не обновляли выпуск с 2011 года, и я не уверен, что он будет работать с текущей версией Azure.

Редактировать 2:

У Umbraco есть собственный ускоритель, но они отказались от него в пользу использования веб-сайтов вместо веб-ролей: https://github.com/Microsoft-DPE/wa-accelerator-umbraco

Этот выпуск работает с SDK 1.6. Текущая версия 1.8, я думаю...


person amhed    schedule 19.02.2013    source источник


Ответы (4)


Я не уверен в способе сопоставления пути к хранилищу, но в зависимости от версии Umbraco, которую вы используете, я думаю, что начиная с 4.9 (возможно, 4.10) они представили конфигурацию FileSystemProviders, которая может помочь решить вашу проблему.

Насколько я понимаю, это позволяет вам заменить Umbraco FileSystemProvider по умолчанию, Umbraco.Core.IO.PhysicalFileSystem, вашей собственной реализацией. Я почти уверен, что вы могли бы реализовать поставщика на основе Azure, который записывает и читает из хранилища BLOB-объектов. В исходном коде это выглядит довольно просто, вопрос реализации их IFileSystem.

person Digbyswift    schedule 26.02.2013

В итоге мы использовали решение Matt Brailsford Universal Media Picker: http://our.umbraco.org/projects/backoffice-extensions/universal-media-picker

Окончательное решение фактически обходит папку мультимедиа Umbraco и считывает данные непосредственно из хранилища BLOB-объектов, поэтому мне пришлось переписать все макросы и шаблоны, которые раньше отображали изображения, и указать их непосредственно на учетную запись хранилища BLOB-объектов.

person amhed    schedule 08.03.2013
comment
Как насчет изображений, вставленных из RichTextEditor (TinyMCE)? - person Riga; 08.09.2014

К сожалению, нет способа напрямую сопоставить каталог NTFS с BlobStorage.

Взгляните на CloudDrive класс Windows Azure SDK. Эта функция позволяет загрузить файл виртуального жесткого диска (VHD-файл) в хранилище BLOB-объектов и подключить его как локальный диск в экземплярах Windows Azure.

Вы должны знать, что (если вы используете несколько экземпляров) только один облачный экземпляр может смонтировать виртуальный жесткий диск в режиме чтения/записи. Остальные имеют доступ только для чтения к диску. Если в папке «Медиа» хранится статический контент, который вы обновляете вручную всего несколько раз, это нормально. Но если туда же помещается пользовательский контент, может потребоваться, чтобы только один экземпляр монтировал виртуальный жесткий диск и предоставлял другим экземплярам доступ к нему через общий сетевой ресурс.

person Nico    schedule 19.02.2013

Этот пакет, предоставленный Али Шейхом Тахери, решает проблему папки мультимедиа http://our.umbraco.org/projects/backoffice-extensions/ast-azure-media-sync

person Riga    schedule 11.09.2014