最近我刚刚开始在 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 的存储会影响我的网络应用程序的总磁盘空间,这将是一个问题。
然后我认为这是将上面列出的文件夹移动到 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 内容的磁盘空间吗?
最佳答案
关于“有没有减少磁盘空间的好主意”——这是主观且广泛的。但是,从客观的角度来看,您所做的事情是不正确的。
您尝试将 Blob 容器视为文件目录,但事实并非如此。 Blob 可通过 REST API(或特定于语言的 SDK 之一)进行访问。
如果您需要为 Web 应用程序提供一个单独的、更大的存储区域(无需修改代码以专门用于 Blob 存储),则必须执行以下操作之一:
- 创建 Azure 文件存储卷(位于 Blob 存储之上,但实现 SMB,并允许您像访问任何其他 UNC 路径一样访问该卷)
- 升级到更大的网络应用套餐(具有更多磁盘空间)
- 设置一个带有附加存储磁盘的虚拟机,作为您的 Web 应用程序的文件服务器(您还需要处理虚拟机可能离线并导致您的文件服务器对您的 Web 应用程序不可用的情况)里>
始终可以选择在 Web 应用程序之外存储内容(例如数据库、直接 Blob 访问等)。但这将取决于您的 wiki 软件的设置方式。
关于php - 减少在 Azure Web App 上运行的 PHP Wiki 站点的磁盘空间使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069896/