Système de fichiers insensible à la casse pour le serveur de production?

10

La situation initiale ressemble à ceci:

  • Le logiciel d'entreprise est basé sur PHP.
  • Il est fourni par Apache 2 sur un serveur Windows 2003.
  • C'est grand .
  • Il s'agit d'un héritage de développeurs peu professionnels qui ne se soucient pas de la sensibilité à la casse ou des séparateurs de répertoires.

La situation souhaitée ressemble à ça:

  • Tout a migré vers Apache 2 sous une distribution Linux de saveur encore indécise.

Problème:

  • Des tonnes de code sans fin sans se soucier de la casse ou du caractère séparateur de répertoire.

J'ai déjà fait quelques recherches, mais malheureusement je n'ai rien trouvé qui conviendrait également à un environnement de production. CIOPFSsemble agréable mais est explicitement destiné à ne pas être utilisé sur les systèmes de production. Pensez-vous mod_spellingqu'Apache serait une option? La question encore non résolue pour moi est de savoir si PHP accède aux fichiers à l'aide de ce module ou directement (ce qui le rendrait inutile).

Faut-il avaler la pilule amère et parcourir tout le code? Nous aimerions éviter cela, car nous allons remplacer l'environnement logiciel actuel morceau par morceau par de nouveaux éléments de construction (à long terme).

Peter
la source
Une autre possibilité pourrait être de créer une sorte de proxy ( mod_rewrite) pour l'application héritée (résidant dans l'ancienne configuration) via le nouveau serveur, en remplaçant les parties de cette façon ... peut-être.
sr_
Hébergez-le sous OS X au lieu de Linux ... vous obtenez toujours votre environnement Unix, mais vous obtenez également un système de fichiers insensible à la casse.
larsks
@sr_ Cela pourrait faire l'affaire. Mais comme nous gérons un grand système de boutique en ligne qui génère déjà suffisamment de trafic, il le doublerait au moins (peu importe si le réseau est interne ou externe). Pour autant que je comprends.
Peter
@larsks Même si j'encourage OS X pour les entreprises, je ne pense plus qu'il ait de l'avenir en tant que serveur web à grande échelle. Notre entreprise encourage également l'utilisation de logiciels open source et s'efforce de rester aussi indépendante que possible de la plate-forme.
Peter
Juste une mise à jour: les modules apache ne font malheureusement pas le travail car ils ne sont invoqués qu'en cas de requêtes HTTP, la fonction include de PHP par exemple accède directement aux fichiers. Je vais essayer l'approche samba mentionnée ci-dessous maintenant.
Peter

Réponses:

3

Consultez mon article ici sur ubuntuforums:

http://ubuntuforums.org/showthread.php?t=1497253

Créer un disque virtuel

dd if=/dev/zero of=virtual.dsk bs=1048576 count=150

Formatez-le

mkfs.vfat virtual.dsk

Montez-le

sudo mkdir -p /mnt/vfat
sudo mount virtual.dsk /mnt/vfat -t vfat -o loop

PS: montage permanent:

/path/to/virtual.dsk /mnt/vfat vfat loop,owner,group,umask=000 0 0

Avec des informations supplémentaires ici: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html

Dilemme
la source
3

ZFS et JFS peuvent être configurés pour être insensibles à la casse:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Edit (7 ans plus tard):

Comme l'a commenté @JorgeYanesDiez, le noyau Linux a finalement ajouté ext4 par répertoire insensibilité à la casse à partir de la version 5.2 et efsprogs 1.45.

Notez que Linus Torvalds était fortement contre la fonctionnalité .

jlliagre
la source
1
Pour ceux qui envisagent cela en 2020, ext4 vient d'ajouter le support caseFold. Vous avez besoin du noyau Linux 5.2 et e2fsprogs 1.45 ou version ultérieure. Recherchez chattr + F
Jorge Yanes Diez
2

Vous pouvez utiliser Samba pour partager un système de fichiers local sans tenir compte de la casse ... cet article contient quelques détails.

larsks
la source
2
C'est complètement fou, mais l'OMI est la moins folle de toutes les autres options.
jgoldschrafe
@larsks Merci, je vais y jeter un œil plus approfondi et essayer comment cela fonctionne.
Peter
@larsks Même si j'ai suivi l'article et essayé quelques variantes, cela n'a malheureusement pas fonctionné pour nous. Merci quand même. Nous avons fini par décider de réécrire tout ce qui n'est pas sensible au système de fichiers car les autres alternatives semblent prendre trop de temps.
Peter
1

Écrivez votre propre enveloppe de fusible qui ne respecte pas la casse par rapport à tout autre fs? Avec du code python, cela pourrait être fait rapidement.

Léon
la source