2016-10-16 5 views
0

最近、別のMVCアプリケーションを実行するAzure Web Appでwiki(pukiwiki)サイトを管理し始めました。以下は概念的な構造です。Azure Web Appで実行中のPHP Wikiサイトのディスク容量を減らす

--site/ 
    --wwwroot/ 
    --<main app> 
    --wiki/ 
     --attach/ //attached files 
     --lib/  //php codes 
     --image/ //images 
     --<other folders> 
     --index.php 
     --pukiwiki.ini 
     --.htaccess 
     --<other files> 

それがうまく機能は、しかし、私のwikiは、それがウィキのストレージが私のWebアプリの総ディスク容量に影響する問題になりますので、多くの画像や記事を含むように設計されています。

次に、上記のフォルダをAzure Blob Storageに移動する方法だと思いました。
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コンテンツのディスク容量を減らすための良い考えはありますか?

答えて

3

「ディスクスペースを節約するための良いアイデアはありますか?それは主観的で幅広いものです。しかし、の目的の視点から、あなたがしていることは間違っています。

ブロブのコンテナをファイルディレクトリのように扱おうとしていますが、そのようには動作しません。ブロブは、REST API(または言語固有のSDKの1つ)を介してアクセスされます。

あなたは(BLOBストレージと特異的に動作するようにコードを変更せずに)Webアプリケーション用に別の、より大きな記憶領域を持つ必要がある場合は、次のいずれかを実行する必要があると思います:

  • アズールを作成します。ファイルストレージボリューム(BLOBストレージ上にありますが、SMBを実装し、他のUNCパスにアクセスするようにボリュームにアクセスできます)
  • 大きなWeb Appプランにアップグレードします(ディスク容量を増やす)
  • VMが接続されているVMをウェブアプリケーションのファイルサーバーとして機能させることができます(VMが動く可能性のあるシナリオにも対処する必要があります)オフラインにしてファイルサーバーをWebアプリケーションで使用できなくする)

Webアプリケーションの外部にコンテンツを保存するオプションは常にあります。データベース、ダイレクトブロブアクセスなど)。しかし、それはあなたのwikiソフトウェアに特有のものになるでしょう。

+0

私はAzureファイルストレージを設定し、そこにファイルを読み込ませても読み込みに失敗させました。最後に、PHPコードを実行するためのディスクが接続された新しいVMをセットアップすることにしました。ありがとう。 –

1

単純に要件に近づけるには、ソースコードを直接変更することができます。それはあなたのストレージアカウント内のファイルの内容を取得します

$path = 'https://<torage_account>.blob.core.windows.net/'.get_filename($page);

:に/lib/file.phpスクリプト内sentenceget_source()の機能を変更します。

さらに、Webアプリケーションフォルダ内のファイルをAzure Storageに自動的に更新するWebジョブを作成することができます。

+0

これは動作しませんでした(パスでファイルを読み込めなかったため、本文が表示されませんでした)。これは、私はVMを使用してwiki用のサーバーを稼働させることにしました。ありがとう。 –

関連する問題