Haruskah situs web tinggal di / var / atau / usr / sesuai dengan penggunaan yang disarankan?

62

Menurut panduan pada struktur direktori Linux , /usr/adalah untuk file aplikasi, dan /var/untuk file yang berubah (saya menganggap ini berarti "file yang termasuk dalam aplikasi"). Apakah ini benar?

Jika ini masalahnya maka saya agak terpecah antara menggunakan keduanya. Sebuah situs web adalah sebuah aplikasi (jika itu dinamis, jadi untuk berbicara), tetapi dalam kasus lain itu hanya kumpulan file yang digunakan oleh Apache.

Dir default www tinggal di /var/www/, jadi haruskah kita mengikutinya dengan menggunakan /var/websites/(atau sesuatu yang serupa), atau memilih /usr/websites/karena mereka bisa menjadi aplikasi?

Ini adalah pertanyaan yang sangat sepele, tapi tetap saja mengganggu saya. Untuk kasus kami, saya condong ke arah /usr/webatau sesuatu seperti itu, karena situs web kami semua aplikasi.

Memperbarui:

Ini untuk situs web perusahaan kami; itu bukan server hosting bersama, jadi kita tidak perlu khawatir tentang memisahkan mereka /home/atau semacamnya.

Nick Bolton
sumber
10
Saya tidak berpikir pertanyaannya sepele itu; sebenarnya agak bagus. Menarik.
Aron Rotteveel

Jawaban:

63

Menurut FHS , /usradalah untuk shareable, read-only data- bukan tempat Anda ingin meletakkan situs web. Di sinilah Anda harus meletakkan kode Anda (misalnya Fedora melakukan ini untuk Wordpress). Lihat juga panduan pengemasan aset web untuk Fedora.

/varadalah "file data variabel. Ini termasuk direktori dan file spool, data administratif dan logging, dan file sementara dan sementara." - lebih baik, tetapi masih belum sepenuhnya benar - tetapi banyak sistem akan menggunakan /var/www, jadi bahkan jika Anda salah meletakkannya di sana Anda berada di perusahaan yang baik.

/srvadalah untuk "data spesifik situs yang dilayani oleh sistem ini." - yang sepertinya cocok, tetapi jauh lebih jarang /var/www.

Tempat umum lain untuk meletakkan file situs berada di bawah /home- dengan membuat pengguna khusus yang dipanggil websiteatau semacamnya, kemudian menempatkan file di dalam homedir pengguna itu (mis., /home/website).

James Polley
sumber
4
Ah, pekerjaan saya menggunakan /srv- karena saya belum pernah melihat ini sebelumnya, saya pikir itu diciptakan oleh mereka. Apakah ini Redhat / CentOS?
Nick Bolton
12
Standarnya hanya disetel ke /var/wwwkarena distribusi tidak diizinkan untuk disentuh /srv; itu untuk administrator sistem untuk mengkonfigurasi. Jadi, itu sebabnya "jauh lebih jarang" dan juga benar.
Michael Hampton
28

Lihatlah Hierarchy Filesystem Standard ( Wikipedia ). Saya sendiri menggunakan / srv / web / $ domain / {htdocs, log, cgi-bin, ...}.

PTman
sumber
3
Saya melakukannya seperti ini juga, tetapi alih-alih "www" Saya selalu menggunakan nama layanan "httpd". Jadi saya punya / srv / httpd / $ domain ... atau / srv / smbd / sharename ... Seperti ini, lebih mudah untuk melihat layanan mana yang melayani file. Misalnya pada beberapa sistem kami memiliki / srv / nginx / $ domain
Raffael Luthiger
9

Situs web harus hidup di direktori home pengguna. Mereka adalah data pengguna, harus diisolasi oleh satu-pengguna-per-situs, dan konten dinamis harus dijalankan sebagai pengguna yang terpisah lagi, dengan file yang perlu dibaca dan dimodifikasi oleh konten dinamis yang diberikan izin yang sesuai untuk melakukannya.

Memperbarui:

Hanya karena itu bukan server hosting bersama bukan berarti Anda tidak boleh terlibat dalam praktik keamanan yang baik dan memisahkan peran independen ke dalam zona keamanan mereka sendiri.

womble
sumber
7

Panduan definitif adalah Filesystem Hierarchy Standard yang mengatakan itu /srvadalah tempat yang tepat.

Dennis Williamson
sumber
2
Saya tidak membacanya seperti itu - atau setidaknya, saya membacanya sebagai ambigu pada poin ini. Sebagian besar situs web tidak dilayani secara sederhana by this system, tetapi dilayani oleh sekelompok sistem; dan dua kalimat mulai dari This setup will differ from host to host.menyarankan bahwa ini bukan tempat untuk file yang dibagikan di banyak server. Ini adalah tempat yang cukup mungkin - tentu saja lebih tepat daripada /usr, dan bisa dibilang lebih baik daripada/var
James Polley
1
Saya tidak berpikir FHS sama sekali definitif. Re: (Dari Wikipedia): Sebagian besar distribusi Linux mengikuti FHS dan menyatakannya sebagai kebijakan mereka sendiri untuk menjaga kepatuhan FHS. Namun, sebagian besar (per 2009) distribusi, termasuk yang dikembangkan oleh anggota Grup Standar Bebas, tidak mengikuti standar yang diusulkan sepenuhnya.
Michael Graff
6
Itu hal yang menyenangkan tentang standar - ada banyak sekali yang bisa dipilih! :)
James Polley
3

Tempat mereka tinggal di disk memiliki sedikit masalah. Itu tempat Anda menginginkannya.

Saya memiliki symlink dari / www di semua mesin saya ke tempat mereka benar-benar tinggal, jadi saya tidak perlu bertanya-tanya dari mesin ke mesin. Beberapa mesin yang lebih tua memiliki / u0 dan / u1 untuk disk pengguna, dan saya menempatkan hal-hal web di sana. Beberapa memiliki / home mount secara langsung, sehingga mereka pergi ke sana, tetapi / www selalu menunjuk ke tempat yang tepat.

Saya juga tidak menaruh konfigurasi di / usr atau di / var. Ini masuk / lokal (yang, Anda dapat menebaknya, adalah symlink di suatu tempat di / u0 atau / u1 biasanya). Ini membuat membuat cadangan hal-hal mudah. Saya baru saja mencadangkan disk pengguna.

Tentu saja, saya memiliki situs distribusi utama untuk OS pilihan saya, NetBSD. Saya membuat sistem seperti yang saya inginkan pada mesin utama ini (contohnya xen) dan rsync / usr. Membuat hidup saya mudah.

Michael Graff
sumber
6
Ini bagus jika Anda adalah operasi satu orang, atau mungkin tim kecil yang bekerja sama dan akrab dengan kelemahan masing-masing - mempelajari cara yang 'tepat' untuk melakukannya mungkin akan memakan waktu lebih lama daripada hanya melakukan saya t. Jika Anda memiliki operasi besar dan sering membawa orang-orang baru, harus meningkatkan kecepatan mereka dengan tata letak seperti ini akan membutuhkan banyak waktu - bertahan dengan (atau setidaknya, mendekati) FHS adalah akan menghemat waktu dengan setiap orang baru yang Anda bawa ke dalam tim.
James Polley
5
Ketika Anda menggunakan 8 OS yang berbeda, standar internal jauh lebih mudah dipelajari daripada masing-masing os-do-it-the-own-way.
Michael Graff
1
@ James Polley Berapa lama waktu yang diperlukan untuk memberi tahu karyawan baru "kami memasukkan barang /path/we/chose"?
ceejayoz
@ceejayoz Jika Anda memiliki lebih dari dua kategori "barang", lebih mudah memberi tahu mereka "kami mengikuti FHS", meskipun itu mungkin memerlukan beberapa detail tambahan untuk beberapa kategori "barang".
tripleee
3

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:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Maris B.
sumber
2

Menurut saya Anda harus TIDAK PERNAH dan TIDAK PERNAH menempatkan Layanan Internet di zona sistem umum.

Layanan Internet Anda (Apache / Tomcat / SSH dll) adalah pintu depan, maka jika Anda memasukkan layanan tersebut ke zona Sistem Anda, Anda akan berpotensi rentan terhadap beberapa serangan.

Lebih dari jika Anda telah menempatkan layanan differents Anda ke zona kotak pasir yang aman seperti partisi detach lainnya.

Berikut adalah contoh struktur yang dapat Anda gunakan:

/ --> Root System --> On SDA1 --> Root and System security operator access only
 |
 | -->/usr /etc /var etc.

/SRV --> Web Root --> On SDB1 --> Web users access with minimal rights access.
 |
 |-->/srv/bin & /srv/dta
      |
      |-->/srv/bin/apache (or any other APPLICATION Binaries)
      |-->/srv/dta/SQL (or any other APPLICATION Datas like a 
                        database or web PHP files etc.)
Dr I
sumber
1
Bisakah Anda memperluas "zona sistem umum"? Itu bukan istilah yang pernah saya dengar sebelumnya dan saya tidak yakin apa yang Anda maksud. /srv/bintampaknya melanggar FHS, yang menyatakan itu /srvuntuk data, bukan binari
James Polley
Nah sistem zona umum berarti, bagian dari OS di mana menyimpan semua komponen Sistem seperti, akun, kata sandi, binari Administrator dan Perpustakaan. Saya tahu bahwa instalasi saya tidak sepenuhnya menghormati FHS tetapi saya dapat membagi OS menjadi dua bagian. 1 ° / - Sistem yang cukup memperbaiki (kecuali untuk pembaruan dan pemasangan alat administrasi) 2 ° / - Aplikasi, data dan USers Homeland. Dengan cara ini, jika Anda mendapat masalah dengan sistem atau data Anda, Anda tidak akan kehilangan semua data.
Dr I
Saya melihat. Ini masuk akal - itu sebabnya sebagian besar desktop misalnya memakai /homepartisi yang terpisah - Anda dapat membuang semua yang ada di non- /homepartisi dan tidak khawatir kehilangan data pengguna. +1 untuk memisahkan data.
James Polley