Web sitesi içeriğini depolamak için önerilen dizin nedir?


21

Web için programlamaya ilk başladığımda ve yeni bir proje oluşturmak istediğimde, her zaman bir dizin oluşturmam öğretildi /var/www/. Ancak ben öğretici bir çok insanda bir dizin oluşturmak eğilimindedir okudum /home/username/.

Onu içine koyma fikrini sevmiyorum /home/username/.

Doğru bir yer var mı yoksa yoksa dosya sistemindeki belirli alanlara yerleştirmenin avantajları / dezavantajları nelerdir?


Bu tercih ("en iyi", çoğunlukla geliştirme için bunu belki en güvenli olacak şekilde değiştirmelisiniz) anlamına gelir. Onlara oradan da hizmet veriyorsanız, muhtemelen kişisel dosyalarınız ve web paylaşımı öğeleri arasında bir tür mesafe tutmak için tenha bir şey istersiniz. Ancak bir milyon konfigürasyon var. Ben sopa /var/wwwve genellikle başka bir sürücüde var (sadece tercih).
nerdwaller

"En iyi" dizin yoktur. Onun tamamen sizin tercihiniz çünkü dosyaların phyiscal yeri önemli değil.
Ramhound

Yanıtlar:


36

"En iyi" dizin yoktur. İnsanlar bu sorunun sübjektif olduğunu ya da dosyaların asıl yerleştirilmesinin önemli olmadığını ve ikincisi hakkında haklı olduklarını iddia edebilirken , Unix benzeri sistemlere neyin yerleştirileceği konusunda standartlaştırılmış öneriler vardır .

Dosya Sistemi Hiyerarşi Standardı bu ve teklifler size aşağıdaki tanımlar:

  • /var- günlükler vb. Gibi normal işlem sırasında değişen verileri koyabileceğiniz bir yer, /var/wwwApache için web içeriğini yerleştirmek için varsayılan dizindir, ancak kullanımı hiç standart değildir ve yalnızca insanlar için koyduğunuz "olağan" yerdir. varsayılan ayarları çok sık değiştirmeyin.

  • /srv- bu dizin sistem tarafından sunulan verileri içermelidir. Bu genellikle istediğiniz yerdir. FHS açıklıyor:

    Bunu belirtmenin bu temel amacı, kullanıcıların belirli bir hizmet için veri dosyalarının yerini bulabilmesi ve salt okunur veriler, yazılabilir veriler ve komut dosyaları (cgi komut dosyaları gibi) için tek bir ağaç gerektiren hizmetlerin makul şekilde yerleştirilebilmesidir. Yalnızca belirli bir kullanıcının ilgisini çeken veriler, o kullanıcının ana dizinine girmelidir. (...)

    Altında veri yapılandırmak için bir yöntem /srvprotokol örnektir. ftp, rsync, wwwVecvs

    Yani, bir /srv/wwwdizin oluşturun ve bunu kullanın. Makinenizle sunmak isteyebileceğiniz her sanal ana bilgisayar için alt klasörler oluşturabilirsiniz.

  • /homeyalnızca bir kullanıcıya ait olması gereken dosyalar içeriyor. Örneğin Apache , kullanıcı dizinlerine izin verir , böylece bir kullanıcının web dosyalarına üzerinden erişebilirsiniz http://example.com/~usernameve bunlar kullanıcının evindeki dizinden sunulur public_html.

    Birden fazla kişi arasında paylaşılan bir sunucu kullanıyorsanız ve herkesin kendi komut dosyalarını barındırmasına izin vermek istiyorsanız, burası gitmeleri gereken yerdir. Dizinleri yalnızca ait oldukları kullanıcı tarafından yazılabilir hale getirmeyi unutmayın.

Özünde /srv/wwwve /var/wwwdizinleri barındırmak isteyebilirsiniz herhangi bir web projesi için alt dizinleri oluşturmak gerekir. Daha sonra, bu dizinlerde belirli kullanıcıların veya kullanıcı gruplarının bunlara yazmasına izin vermek için farklı izinler tanımlayabilirsiniz. Aynı anda bir kullanıcı için projeniz varsa kullanın /home.


3
http://example.com/~usernameGenellikle işaret etmiyor /home/username/, bunlarla /home/username/public_html/.
choroba

Evet, teşekkürler, bu netlik için eklenmiş olmalı. Bitti.
slhck

Birkaç yıl kullandıktan sonra /var/wwwdeğişim zamanı!
sitilge

Ayrıca, wwwbana bir alt alan adı gibi geliyor.
sitilge

Sadece eklemek için ... / var / www kullanımı, tek site sunum örnekleri için yaygın bir uygulamadır ve varsayılan Apache konumu dendiği gibi, / home / usr / was / kullanılması bayi sunucuları veya çoklu site için yaygın bir uygulamadır barındırma kullanıcılar == istemciler kavramından çizilmiş. Her ikisi de sadece yaygın uygulamalar ve shlck'in yanıtı dosya sisteminin amaçlanan amaçlarını daha iyi kullanmaktır.
Jools

4

Her şey düzgün bir şekilde erişebildiği sürece dosyaları herhangi bir yere koyabilirsiniz, ancak daha sonra birisi gelirse karmaşık dosya sistemleri bir baş ağrısıdır.

/srv en mantıklı artıdır Dosya Sistemi Hiyerarşi Standardı'nı takip ederseniz buraya gider.

Eğer birden fazla etki alanı /srv/domain1 /srv/domain2vb./ftp /www /tftp /logs /etc.etc.etc

Benim için çok sağlam bir yapı hissetmek ve kolayca kontrol etmek

Ancak yönetici olarak istediğiniz kadar temiz veya dağınık yapabilirsiniz.


1

Tamam kolay hızlı cevap.

Sistemdeki web dosyalarınıza linux sistemindeki ONE kullanıcısı erişecekse. Kullanıcının giriş dizinini ( ~/) kullanın.

Sistemdeki web dosyalarınıza linux sistemindeki MULTIPLE kullanıcıları tarafından erişilecekse. Kullanın /srv/.

Http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM tam olarak bunu belirtir.

İşte alıntı:

/ srv, bu sistem tarafından sunulan siteye özgü verileri içerir.

Bunu belirtmenin bu temel amacı, kullanıcıların belirli bir hizmet için veri dosyalarının konumunu bulabilmeleri ve salt okunur veriler, yazılabilir veriler ve komut dosyaları (cgi komut dosyaları gibi) için tek bir ağaç gerektiren hizmetlerin makul şekilde yerleştirilebilmesidir. Yalnızca belirli bir kullanıcının ilgisini çeken veriler, o kullanıcının ana dizinine girmelidir.

Bonus: www? ftp? Protokol ile düzenlensin mi? Ha?

Burada http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM içinde belirtildiği gibi

  • Web sitenize yalnızca sistemdeki BİR kullanıcı ve SADECE tarayıcı (http protokolü) üzerinden erişiliyorsa: ~/http/your-website-directory/veya (https protokolü) varsa:~/https/your-website-directory/
  • Web sitenize yalnızca sistemdeki BİR kullanıcı tarafından erişilir ve SADECE tarayıcı aracılığıyla DEĞİL, ancak birden çok protokol (ig http AND tcp AND ...) varsa: ~/your-website-directory/
  • Web sitenize sistemdeki MULTIPLE kullanıcıları ve SADECE tarayıcı (http protokolü) üzerinden erişiyorsanız: /srv/http/your-website-directory/veya (https protokolü) varsa:/srv/https/your-website-directory/
  • Web sitenize sistemdeki MULTIPLE kullanıcıları tarafından SADECE tarayıcı üzerinden değil, birden çok protokol (ig http AND ftp AND ...) üzerinden erişilirse: /srv/your-website-directory/

Neden www olmasın? Bu Apache zamanından kalma bir miras. www hangi protokolün kullanıldığını belirtmez. Debian bunu bugün itibariyle kullanmaya devam ederken, örneğin Arch linux / srv / http kullanıyor.


0

Apache web sunucusunun varsayılan web sitesi var, /var/www/ancak diğer web sitelerini/srv/

Bunu Ubuntu Server 14.04 LTS'de fark ettim. Varsayılan apache2.confdosyası açıklamalı blok içerir:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
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.