Недавно я только начал управлять сайтом вики (pukiwiki) в веб-приложении Azure, которое также запускает другое приложение MVC. Ниже приведена концептуальная структура.
--site/
--wwwroot/
--<main app>
--wiki/
--attach/ //attached files
--lib/ //php codes
--image/ //images
--<other folders>
--index.php
--pukiwiki.ini
--.htaccess
--<other files>
Это работает хорошо, однако, моя вики разработана так, чтобы содержать много изображений и статей, поэтому будет проблемой, что хранение вики повлияет на общее дисковое пространство моего веб-приложения.
Тогда я подумал, что это будет способ переместить перечисленные выше папки в хранилище BLOB-объектов Azure.
У index.php и wiki.ini есть некоторые требования к php-кодам, которые находятся в папках lib, attach и других, а также есть определения, определяющие расположение папок.
//index.php
define('DATA_HOME', '');
define('LIB_DIR', 'lib/');
require(LIB_DIR . 'pukiwiki.php');
//pukiwiki.ini
define('DATA_DIR', DATA_HOME . 'wiki/' );
define('UPLOAD_DIR', DATA_HOME . 'attach/' );
...
Я переместил папки в BLOB-объект и отредактировал эти ссылки, чтобы указать их местоположение.
//index.php
define('DATA_HOME', 'https://<account>.blob.core.windows.net/wiki/<container>/');
define('LIB_DIR', 'lib/');
require(LIB_DIR . 'pukiwiki.php');
//pukiwiki.ini
define('DATA_DIR', DATA_HOME . 'wiki/' );
define('UPLOAD_DIR', DATA_HOME . 'attach/' );
...
Однако из-за ограничения ссылки на другой домен это не работает. Разрешение доступа к домену путем редактирования .user.ini было бы решением, но это не выглядело рекомендуемым с точки зрения безопасности, как я видел.
Есть ли хорошая идея, чтобы уменьшить место на диске для содержимого вики?
Относительно «есть ли хорошая идея по сокращению дискового пространства» — это субъективно и широко. Однако из задача в перспективе то, что вы делаете, неверно.
Вы пытаетесь обработать контейнер BLOB-объектов как каталог файлов, и это не работает таким образом. Доступ к BLOB-объектам осуществляется через REST API (или один из SDK для конкретного языка).
Если вам требуется отдельная большая область хранения для веб-приложений (без изменения кода для работы с хранилищем больших двоичных объектов), вам необходимо выполнить одно из следующих действий:
Всегда есть возможность хранить контент вне вашего веб-приложения (например, база данных, прямой доступ к BLOB-объектам и т. Д.). Но это будет зависеть от вашей вики-программы в том, как вы ее настроили.
Чтобы просто подойти к вашему требованию, вы можете попытаться напрямую изменить исходный код pukiwiki
, Изменить предложение из get_source()
функция в /lib/file.php
скрипт для:
$path = 'https://<torage_account>.blob.core.windows.net/'.get_filename($page);
Он получит содержимое файла в вашей учетной записи хранения.
Кроме того, вы можете создать веб-задание для автоматического обновления файлов в папке веб-приложений в хранилище Azure.