2016-10-16 1 views
0

Récemment, je viens de commencer à gérer un site wiki (pukiwiki) sur Azure Web App, qui exécute également une autre application MVC. Voici la structure conceptuelle.Réduction de l'utilisation de l'espace disque du site Wiki PHP exécuté sur Azure Web App

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

Il fonctionne bien, cependant, mon wiki est conçu pour contenir de nombreuses images et des articles de sorte que ce sera un problème que le stockage du wiki affectera à l'espace disque total de mon application web. Puis j'ai pensé que ce serait un moyen de déplacer les dossiers listés ci-dessus vers Azure Blob Storage.
index.php et wiki.ini ont certaines exigences de codes php qui se trouvent dans lib, attach et d'autres dossiers et il y a aussi des définitions qui déterminent l'emplacement des dossiers. J'ai déplacé les dossiers dans le blob et édité ces références pour y référer l'emplacement. Cependant, en raison de la restriction sur la référence à un autre domaine, cela ne fonctionne pas. Autoriser les accès au domaine en éditant .user.ini serait une solution mais elle ne semblait pas recommandée en termes de sécurité comme je l'ai vu.

Y a-t-il une bonne idée de réduire l'espace disque pour le contenu du wiki?

Répondre

3

En ce qui concerne "est-il une bonne idée de réduire l'espace disque" - c'est subjectif et large. Cependant, d'un point de vue objectif, ce que vous faites est incorrect.

Vous essayez de traiter un conteneur BLOB comme un répertoire de fichiers, et cela ne fonctionne pas de cette façon. Blobs sont accessibles via une API REST (ou l'un des SDK spécifiques à la langue).

Si vous avez besoin d'avoir une zone de stockage distincte, plus grande pour le Web Apps (sans modifier votre code pour fonctionner spécifiquement avec le stockage blob), vous auriez à faire une des opérations suivantes:

  • Créer un Azure le volume de stockage de fichiers (se trouve au sommet de stockage de blob, mais implémente SMB et vous permet d'accéder au volume, comme vous devez accéder à tout autre chemin UNC)
  • Mise à niveau vers un plan Web App plus grand (avec plus d'espace disque)
  • Mettre en place un VM avec disque de stockage connecté, pour servir de serveur de fichiers à votre application Web (vous devez également gérer les scénarios dans lesquels la machine virtuelle peut aller hors connexion et rendant votre serveur de fichiers indisponible pour votre application Web)

Vous avez toujours la possibilité de stocker du contenu en dehors de votre application Web (par ex. base de données, accès direct au blob, etc.). Mais ce sera spécifique à votre logiciel wiki dans la façon dont vous l'établissez.

+0

J'ai mis en place un stockage de fichiers Azure et laissé le code pour lire les fichiers, mais il n'a toujours pas lu. Enfin, j'ai décidé de mettre en place une nouvelle machine virtuelle qui a un disque attaché pour exécuter le code php là-dessus. Merci. –

1

Pour simplement répondre à vos besoins, vous pouvez essayer de modifier directement le code source de . Modifier la sentence de get_source() fonction dans /lib/file.php script:

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

Il obtiendra le contenu du fichier dans votre compte de stockage.En outre, vous pouvez créer un travail Web pour mettre automatiquement à jour vos fichiers dans le dossier des applications Web vers Azure Storage.

+0

Il n'a pas fonctionné (n'a pas réussi à lire le fichier sur le chemin d'accès, donc il n'y avait pas de texte du corps est apparu). J'ai décidé d'utiliser VM pour exécuter un serveur pour le wiki. Merci. –