Üretim sunucusu için büyük / küçük harfe duyarlı olmayan dosya sistemi?


10

İlk durum şöyle görünür:

  • Kurumsal yazılım PHP tabanlıdır.
  • Windows 2003 Server'da Apache 2 tarafından teslim edilir.
  • Öyle büyük .
  • Büyük / küçük harf duyarlılığı veya dizin ayırıcılar hakkında düşünmeyen profesyonel olmayan geliştiricilerin mirasıdır.

İstenen durum şöyle görünür:

  • Her şey henüz kararsız lezzetin Linux dağıtımı altında Apache 2'ye taşındı.

Sorun:

  • Büyük / küçük harf duyarlılığı veya dizin ayırıcı karakteri ile ilgilenmeden sonsuz tonlarca kod.

Zaten biraz araştırma yaptım, ancak maalesef bir üretim ortamına uygun hiçbir şey bulamadım. CIOPFShoş görünüyor, ancak açıkça üretim sistemlerinde kullanılmaması gerekiyor. mod_spellingApache için bir seçenek olacağını düşünür müsünüz? Benim için henüz çözülmemiş soru, eğer PHP bu modülün yardımıyla veya doğrudan dosyalara erişirse (ki bu işe yaramaz).

Acı hapı yutmalı ve tüm kodu geçmeli miyiz? Mevcut yazılım ortamını parça parça yeni yapı malzemeleriyle (uzun vadede) değiştireceğimiz için bundan kaçınmak istiyoruz.


Başka bir olasılık mod_rewrite, yeni uygulama aracılığıyla eski uygulama için (eski kurulumda bulunan) bir tür proxy ( ) oluşturmak ve parçaları bu şekilde değiştirmek olabilir ... belki.
sr_

Linux yerine OS X altında barındırın ... hala unix ortamınızı elde edersiniz, ancak kutunun dışında büyük / küçük harf duyarsız bir dosya sistemi de elde edersiniz.
larsks

@sr_ Bu işi yapabilir. Ancak, zaten olduğu gibi yeterli trafiğe neden olan büyük bir çevrimiçi mağaza sistemi çalıştırdığımız için, en azından iki katına çıkardı (ağın dahili veya harici olması önemli değildir). Anladığım kadarıyla.
Peter

@larsks OS X'i iş için teşvik etsem de, artık büyük ölçekli bir web sunucusu olarak geleceği olduğunu düşünmüyorum. Ayrıca şirketimiz açık kaynaklı yazılım kullanımını teşvik etmekte ve platformdan mümkün olduğunca bağımsız kalmaya çalışmaktadır.
Peter

Sadece bir güncelleme: apache modülleri maalesef HTTP istekleri durumunda sadece çağrılan gibi iş yapmıyor, PHP'nin include fonksiyonu örneğin dosyalara doğrudan erişiyor. Şimdi aşağıda belirtilen samba yaklaşımını deneyeceğim.
Peter

Yanıtlar:


3

Ubuntuforums'daki yazımı burada görmeniz yeterli:

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

Sanal disk oluşturma

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

Biçimlendir

mkfs.vfat virtual.dsk

Monte et

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

PS: Kalıcı olarak monte edin:

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

Buradaki ek bilgilerle birlikte: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html


3

Hem ZFS hem de JFS büyük / küçük harfe duyarlı olmayacak şekilde yapılandırılabilir:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Düzenle (7 yıl sonra):

@JorgeYanesDiez'in yorumladığı gibi, Linux çekirdeği nihayet sürüm 5.2 ve efsprogs 1.45'ten başlayarak dizin başına isteğe bağlı vaka duyarsızlığı ekledi4.

Linus Torvalds'ın bu özelliğe şiddetle karşı olduğunu unutmayın .


1
2020 yılında buna bakanlar için ext4 caseFold desteği ekledi. Linux Kernel 5.2 ve e2fsprogs 1.45 veya üzerine ihtiyacınız var.
Chattr

2

Sen ... büyüklük duyarsız bir şekilde yerel bir dosya sistemini paylaşmak için Samba kullanabilirsiniz bu makalede bazı detaylar vardır.


2
Bu tamamen çılgınca, ama IMO diğer seçeneklerin en az çılgınlığı.
jgoldschrafe

@larsks Teşekkür ederim, daha derinlemesine bir göz atacağım ve nasıl çalıştığını deneyeceğim.
Peter

@larsks Makaleyi izlememe ve bazı varyasyonları denememe rağmen, maalesef bizim için işe yaramadı. Yine de teşekkürler. Diğer alternatifler çok fazla zaman alıyor gibi hassas dosya sistemi durumunda olmayan her şeyi yeniden yazmaya karar verdik.
Peter

1

Diğer fs'ye göre büyük / küçük harfe duyarsızlık yapan kendi sigorta paketinizi yazın? Bazı python kodlarıyla bu hızlı bir şekilde yapılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.