减少 Azure Web App 上 PHP Wiki 站点 运行 的磁盘 Space 使用率
Reducing Disk Space Usage of PHP Wiki Site running on Azure Web App
最近我刚开始在 Azure Web App 上管理一个 wiki (pukiwiki) 站点,该站点还运行另一个 MVC 应用程序。下面是概念结构。
--site/
--wwwroot/
--<main app>
--wiki/
--attach/ //attached files
--lib/ //php codes
--image/ //images
--<other folders>
--index.php
--pukiwiki.ini
--.htaccess
--<other files>
它运行良好,但是,我的 wiki 被设计为包含许多图像和文章,因此 wiki 的存储会影响我的网络应用程序的总磁盘 space 将是一个问题。
然后我认为这是一种将上面列出的文件夹移动到 Azure Blob 存储的方法。
index.php 和 wiki.ini 对位于 lib、attach 和其他文件夹中的 php 代码有一些要求,并且还有确定文件夹位置的定义。
//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 访问域将是一个解决方案,但正如我所见,从安全角度来看,它看起来并不推荐。
有没有减少 wiki 内容的磁盘 space 的好主意?
关于 "is there any good idea to reduce disk space" - 这是主观和宽泛的。但是,从objective的角度来看,你的做法是不正确的。
您正试图将 blob 容器视为文件目录,但这种方式行不通。通过 REST API(或特定语言的 SDK 之一)访问 Blob。
如果您需要为 Web 应用程序提供一个单独的、更大的存储区域(无需修改您的代码以专门用于 blob 存储),您必须执行以下操作之一:
- 创建一个 Azure 文件存储卷(位于 blob 存储之上,但实施 SMB 并允许您像访问任何其他 UNC 路径一样访问该卷)
- 升级到更大的 Web 应用程序计划(具有更多磁盘 space)
- 设置一个带有附加存储磁盘的 VM,作为您的 Web 应用程序的文件服务器(您还需要处理 VM 可能离线并使您的文件服务器对您的 Web 应用程序不可用的情况)
始终可以选择在 Web 应用程序之外存储内容(例如数据库、直接 blob 访问等)。但这将特定于您的 wiki 软件的设置方式。
为了简单的接近你的要求,你可以尝试直接修改pukiwiki
的源代码。修改/lib/file.php
脚本中get_source()
函数的sentence为:
$path = 'https://<torage_account>.blob.core.windows.net/'.get_filename($page);
它将获取您存储帐户中的文件内容。
此外,您还可以创建一个网络作业,自动将网络应用文件夹中的文件更新到 Azure 存储。
最近我刚开始在 Azure Web App 上管理一个 wiki (pukiwiki) 站点,该站点还运行另一个 MVC 应用程序。下面是概念结构。
--site/
--wwwroot/
--<main app>
--wiki/
--attach/ //attached files
--lib/ //php codes
--image/ //images
--<other folders>
--index.php
--pukiwiki.ini
--.htaccess
--<other files>
它运行良好,但是,我的 wiki 被设计为包含许多图像和文章,因此 wiki 的存储会影响我的网络应用程序的总磁盘 space 将是一个问题。
然后我认为这是一种将上面列出的文件夹移动到 Azure Blob 存储的方法。
index.php 和 wiki.ini 对位于 lib、attach 和其他文件夹中的 php 代码有一些要求,并且还有确定文件夹位置的定义。
//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 访问域将是一个解决方案,但正如我所见,从安全角度来看,它看起来并不推荐。
有没有减少 wiki 内容的磁盘 space 的好主意?
关于 "is there any good idea to reduce disk space" - 这是主观和宽泛的。但是,从objective的角度来看,你的做法是不正确的。
您正试图将 blob 容器视为文件目录,但这种方式行不通。通过 REST API(或特定语言的 SDK 之一)访问 Blob。
如果您需要为 Web 应用程序提供一个单独的、更大的存储区域(无需修改您的代码以专门用于 blob 存储),您必须执行以下操作之一:
- 创建一个 Azure 文件存储卷(位于 blob 存储之上,但实施 SMB 并允许您像访问任何其他 UNC 路径一样访问该卷)
- 升级到更大的 Web 应用程序计划(具有更多磁盘 space)
- 设置一个带有附加存储磁盘的 VM,作为您的 Web 应用程序的文件服务器(您还需要处理 VM 可能离线并使您的文件服务器对您的 Web 应用程序不可用的情况)
始终可以选择在 Web 应用程序之外存储内容(例如数据库、直接 blob 访问等)。但这将特定于您的 wiki 软件的设置方式。
为了简单的接近你的要求,你可以尝试直接修改pukiwiki
的源代码。修改/lib/file.php
脚本中get_source()
函数的sentence为:
$path = 'https://<torage_account>.blob.core.windows.net/'.get_filename($page);
它将获取您存储帐户中的文件内容。
此外,您还可以创建一个网络作业,自动将网络应用文件夹中的文件更新到 Azure 存储。