Tuxfiles mengatakan yang berikut tentang struktur direktori Linux:
/var
:Direktori ini berisi data variabel yang berubah secara konstan saat sistem berjalan.
FHS on/var
mengatakan sebagai berikut:
/var
berisi file data variabel. Ini termasuk direktori spool dan file, data administratif dan logging, dan file sementara dan sementara.
Mereka kemudian melanjutkan dengan mengatakan bahwa hal-hal seperti log, mail, dan spooler diletakkan di folder itu.
Secara tradisional, instalasi stok Apache atau Nginx di Ubuntu Linux akan menempatkan direktori di /var/www/
.
Menurut saya itu bukan tempat yang ideal untuk meletakkan direktori dengan file atau konten yang seharusnya hampir permanen.
Mengapa begitu sering dimasukkan /var
?
Lebih subyektif, apakah ini tempat idealnya, menurut struktur direktori?
sumber
/var/lib/www
akan lebih cocok .../srv
/var
adalah untuk data non-konfigurasi yang tidak dapat dieksekusi yang tidak dimiliki oleh pengguna nyata yang dapat diedit atau diubah (mis. harus hidup dengan volume yang dapat ditulis ulang)./var/lib
khusus untuk tipe data yang harus selamat dari reboot dan tidak dihapus oleh proses pemeliharaan,isc-dhcp-server
digunakan/var/lib
untuk menyimpan catatan penyewaan DHCP misalnya. Jadi itu akan menjadi tempat yang logis untuk file server web.Jawaban:
Ini sebenarnya bukan lokasi "tradisional" sama sekali. Secara tradisional, apa pun yang Anda instal setelah OS masuk
/usr/local
, dan memang itulah "Tata letak jalur Apache Klasik" (kata-kata mereka) hingga hari ini. Untuk waktu yang lama/home/httpd
.Apa yang Anda lihat adalah bahwa Apache yang telah dikonfigurasi untuk OS tertentu - apakah itu Red Hat Linux, Mac OS X, GNU, dll - akan menyesuaikan lokasi. Sumber Apache dirancang dengan baik untuk ini, sebenarnya jika Anda melacak nilai untuk ServerRoot dalam file sumber, Anda akan melihat bahwa itu dimulai dalam file ini,
config.layout
:Beberapa kutipan dari file itu akan menunjukkan kepada Anda bahwa ada banyak variasi di lokasi docroot.
IIRC,
/var/www
datang ke dalam hidup saya dengan rilis 2000-2001 Red Hat Linux 7.x (bukan Red Hat Enterprise Linux). Untuk semua alasan yang Anda sebutkan di atas, saya pikir itu tidak masuk akal - tetapi kenyataannya adalah bahwa di era modern begitu banyak alat dan teknologi yang terlibat, lokasi tetap bergerak.sumber
Penggunaan
/var/www
membingungkan hanya pada pandangan pertama.Menurut FHS, data server web harus pergi ke
/srv
. Itu adalah aturan utama.Namun, ia juga mengatakan bahwa memutuskan tentang struktur
/srv
adalah satu-satunya tanggung jawab administrator lokal! Oleh karena itu paket tidak boleh memasukkan apa pun ke dalamnya/srv
, dan root dokumen default tidak boleh/srv
, karena paket (apache) tidak tahu apa yang ada di dalam/srv
dan di bawahnya. Mungkin repositori subversi dengan kata sandi teks yang jelas dan hal-hal lain juga. Jadi harus ada default di luar/srv
. Default itu menjadi/var/www
./var/www
sebagian besar adalah penampung. Paket digunakan/usr/share
untuk konten HTML statis, atau/var/lib
untuk konten variabel dinamis. Banyak orang secara keliru berpikir bahwa mereka harus memasukkan HTML/var/www
. Itu masalah, karena paket terkadang menggunakannya juga. Jadi baru-baru ini mereka menemukan/var/www/html
paket. Mudah-mudahan orang tidak akan mulai menggunakannya karena sekali lagi mereka harus menemukan direktori baru ... dan seterusnya.Ringkasan: Anda harus menggunakan
/srv
dan mengkonfigurasi host virtual Apache Anda sesuai.sumber
Sementara saya setuju dengan jawaban akond, saya pikir ada aspek yang lebih penting untuk itu. Sebagian besar lokasi lain (seperti
/usr/local
) biasanya dikelola oleh sistem (manajer paket)./var
biasanya tempat file yang tidak dikelola oleh manajer paket ('data' sistem lebar).Saya juga berpikir definisi dari FHS sedikit lebih akurat (data tidak harus "terus berubah"):
Namun FHS juga menyebutkan bahwa data www harus dimasukkan
/srv
sumber
/usr/local
adalah bahwa hal itu tidak dikelola oleh manajer paket./srv/www
juga merupakan jalur klasik pada sistem SuSE (hingga SLES10), juga.Alasannya sebagian besar historis, seperti yang dikatakan orang lain.
/var
telah digunakan untuk data sistem yang berubah sepanjang waktu, misalnya file cache, log, data runtime (file kunci, misalnya), penyimpanan server mail, spooling printer, dll. Pada dasarnya untuk semua hal yang tidak dapat dimasukkan ke dalam/usr
( karena ini berisi data lokal), bukan program pihak ketiga yang masuk/opt
, dan tidak dapat dibuang serta mudah berubah karena masuk/tmp
.Ketika Unix / Linux berkembang, ia menjadi tempat yang berantakan dengan kumpulan direktori berbeda yang disatukan. Ada kecenderungan dalam beberapa tahun terakhir untuk memindahkan beberapa hal keluar dari sana, terutama konten yang dilayani oleh mesin (yang sekarang sesuai [ Filesystem Hierarchy Standard 2.3, hal.15 ] harus masuk
/srv
, bukan masuk/var/www
).Hal serupa terjadi pada
/var/run
beberapa tahun yang lalu - dengan upaya terkonsentrasi dari beberapa distribusi, itu dipindahkan dari/var/run
dalam/run
yang menyatu bersama-sama fungsi yang digunakan sebelumnya/var/lock
,/var/run
dan/dev/shm
.sumber
Dari pengalaman saya (saya adalah pengembang web) konten situs web jauh dari stabil. Bahkan dalam kasus file html (konten Nevermind dihasilkan secara dinamis) mereka dapat mengalami perubahan konstan (amandemen, kelalaian, dll).
Jadi dari sudut pandang saya, mereka adalah variabel. Dengan demikian, mereka sangat cocok di direktori / var dan tidak ada yang salah dengan itu.
sumber
/var
. Tapi saya pikir ini masalah opini dan debat daripada fakta sulit.IIRC, di masa lalu, kami selalu dipasang
/var
sebagai sistem file sendiri (disk terpisah atau potongan disk).Salah satu alasan untuk ini, seperti yang telah dinyatakan orang lain, adalah bahwa ada banyak pembacaan / penulisan ke sistem file itu (log / et al). Memiliki disk / slice yang terpisah berarti dapat lebih baik disetel untuk jenis I / O (versus sebagian besar membaca
/
,/usr
, dll ...).Alasan lainnya adalah bahwa pada masa itu, jika sistem Anda macet selama operasi penulisan, ada kemungkinan sangat besar bahwa sistem file root Anda bisa rusak meninggalkannya dalam keadaan sulit untuk diperbaiki. Dengan demikian perlunya pemisahan dari
/
.Filesystem & teknologi disk telah sangat meningkat dari waktu ke waktu, jadi ini adalah kejadian yang sangat kecil kemungkinannya.
sumber
/var
adalah pilihan yang layak untuk lokasi "basis" netral pengguna untuk akses multi-pengguna, jika Anda memiliki situs web dengan beberapa host virtual yang menjalankan FTP atau unggahan lainnya, yaitu jika Anda hosting atau serupa./home
ini mungkin tidak optimal karena hal-hal buruk bisa terjadi pada account shell pengguna lain jika membabi buta atau berbahaya upload pengguna ke/home
batas partisi (dengan asumsi pengaturan tradisional/var
,/home
, dll berada di partisi terpisah) dapat mempengaruhi user yang lain.Tentu saja saya pikir
/srv
lebih baik untuk ini tetapi/var
sudah ada lebih lama dalam tradisi UNIX.sumber
/home/http
?Yang ingin saya tambahkan di sini adalah bahwa meletakkan "root" web di / usr bertentangan dengan bagian FHS yang mengindikasikan / usr sebagai hanya dapat dibagikan dan hanya dibaca, karena server web berbeda, bahkan pada "cluster" yang sama dapat memiliki file berbeda yang berisi konfigurasi berbeda, dan ini tidak membuatnya ideal untuk / usr.
Selain itu, beberapa aplikasi web (MediaWiki dan PhpBB untuk memberi nama yang di atas kepala saya) mengharapkan lokasi yang dapat ditulisi di bawah pohon direktori web untuk lampiran / upload file media. Jadi meletakkan pohon web di bawah / usr akan bertentangan jika Anda ingin mematuhi definisi read-only / usr.
sumber
Server web Apache memiliki situs web standar di bawah / var / www / tetapi menyarankan untuk menempatkan situs web lain di bawah / srv /
Saya perhatikan ini di Ubuntu Server 14.04 LTS. File apache2.conf default-nya berisi blok komentar:
sumber