System plików bez rozróżniania wielkości liter dla serwera produkcyjnego?

10

Początkowa sytuacja wygląda następująco:

  • Oprogramowanie korporacyjne jest oparte na PHP.
  • Jest dostarczany przez Apache 2 na Windows 2003 Server.
  • Jest duży .
  • Jest to dziedzictwo raczej nieprofesjonalnych programistów, którzy nie przejmowali się rozróżnianiem wielkości liter lub separatorami katalogów.

Pożądana sytuacja wygląda następująco:

  • Wszystko migrowało do Apache 2 pod dystrybucją Linuksa o jeszcze niezdecydowanym smaku.

Problem:

  • Niekończące się tony kodu bez względu na wielkość liter lub znak separatora katalogu.

Przeprowadziłem już pewne badania, ale niestety nie znalazłem niczego, co byłoby odpowiednie również dla środowiska produkcyjnego. CIOPFSwygląda ładnie, ale wyraźnie nie jest przeznaczony do stosowania w systemach produkcyjnych. Czy uważasz, że mod_spellingdla Apache byłaby opcja? Dla mnie jeszcze nierozwiązanym pytaniem jest, czy PHP uzyskuje dostęp do plików za pomocą tego modułu lub bezpośrednio (co uczyniłoby go bezużytecznym).

Czy powinniśmy połknąć gorzką pigułkę i przejść przez cały kod? Chcielibyśmy tego uniknąć, ponieważ będziemy zamieniać obecne środowisko oprogramowania kawałek po kawałku na nowe kompilacje (w dłuższej perspektywie).

Piotr
źródło
Inną możliwością może być utworzenie pewnego rodzaju proxy ( mod_rewrite) dla starszej aplikacji (rezydującej w starej konfiguracji) za pośrednictwem nowego serwera, zastępując części w ten sposób ... może.
sr_
Hostuj go w systemie OS X zamiast w Linuksie ... nadal otrzymujesz środowisko uniksowe, ale dostajesz także system plików bez rozróżniania wielkości liter.
larsks
@ sr_ To może zrobić zadanie. Ponieważ jednak prowadzimy duży system sklepów internetowych, który już teraz generuje wystarczający ruch, przynajmniej go podwoi (nie ma znaczenia, czy sieć jest wewnętrzna, czy zewnętrzna). O ile rozumiem.
Peter
@larsks Chociaż zachęcam OS X do pracy w biznesie, nie sądzę, aby miał on przyszłość jako serwer sieciowy na dużą skalę. Również nasza firma zachęca do korzystania z oprogramowania typu open source i stara się pozostać możliwie niezależna od platformy.
Peter
Tylko aktualizacja: moduły Apache niestety nie wykonują tego zadania, ponieważ są wywoływane tylko w przypadku żądań HTTP, na przykład funkcja dołączania PHP bezpośrednio uzyskuje dostęp do plików. Wypróbuję teraz podejście samby wymienione poniżej.
Peter

Odpowiedzi:

3

Po prostu zobacz mój post tutaj na ubuntuforums:

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

Utwórz dysk wirtualny

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

Sformatuj to

mkfs.vfat virtual.dsk

Zamontuj to

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

PS: Zamontuj na stałe:

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

Wraz z dodatkowymi informacjami tutaj: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html

Kłopot
źródło
3

Zarówno ZFS, jak i JFS można skonfigurować tak, aby nie rozróżniały wielkości liter:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Edytuj (7 lat później):

Jak skomentował @JorgeYanesDiez, jądro Linuksa w końcu dodało ext4 na katalog opcjonalną niewrażliwość na wielkość liter, począwszy od wersji 5.2 i efsprogs 1.45.

Zauważ, że Linus Torvalds był zdecydowanie przeciwny tej funkcji .

jlliagre
źródło
1
Dla tych, którzy patrzą na to w 2020 roku, ext4 właśnie dodało obsługę caseFold. Potrzebujesz Linux Kernel 5.2 i e2fsprogs 1.45 lub nowszego. Poszukaj chattr + F
Jorge Yanes Diez
2

Możesz użyć Samby do współdzielenia lokalnego systemu plików bez rozróżniania wielkości liter ... ten artykuł zawiera pewne szczegóły.

Larsks
źródło
2
Jest to całkowicie szalone, ale IMO jest najmniej szalone ze wszystkich innych opcji.
jgoldschrafe
@larsks Dziękuję, przyjrzę się temu głębiej i wypróbuję, jak to działa.
Peter
@larsks Mimo, że śledziłem artykuł i wypróbowałem kilka odmian, niestety nie zadziałało to dla nas. Ale dziękuję. Skończyło się na tym, że postanowiliśmy przepisać wszystkie rzeczy, które nie uwzględniają systemu plików wrażliwych na wielkość liter, ponieważ inne alternatywy wydają się trwać zbyt długo.
Peter
1

Napisz własne opakowanie bezpiecznika, które nie rozróżnia wielkości liter w stosunku do innych plików? Z pewnym kodem Pythona można to zrobić szybko.

Leon
źródło