เว็บไซต์ควรอยู่ใน / var / หรือ / usr / ตามการใช้งานที่แนะนำหรือไม่


62

ตามคำแนะนำเกี่ยวกับโครงสร้างไดเรกทอรีลินุกซ์ , /usr/สำหรับไฟล์โปรแกรมและ/var/เป็นไฟล์ที่มีการเปลี่ยนแปลง (ผมถือว่านี้หมายความว่า "ไฟล์ที่อยู่ในการใช้งาน") ถูกต้องหรือไม่

หากเป็นกรณีนี้ฉันจะฉีกขาดระหว่างการใช้งาน เว็บไซต์เป็นแอปพลิเคชั่น (หากเป็นแบบไดนามิกดังนั้นจะพูดได้) แต่ในกรณีอื่นมันเป็นเพียงชุดของไฟล์ที่ Apache ใช้

www dir เริ่มต้นใช้ชีวิต/var/www/ดังนั้นเราควรทำตามความเหมาะสมโดยใช้/var/websites/(หรือบางอย่างที่คล้ายกัน) หรือเลือก/usr/websites/เนื่องจากอาจเป็นแอปพลิเคชัน

นี่เป็นคำถามที่ไม่สำคัญมากนัก แต่มันก็ยังบั่นทอนฉันอยู่ดี ในกรณีของเราฉันกำลังโน้มตัวไปข้างหน้า/usr/webหรืออะไรทำนองนั้นเนื่องจากเว็บไซต์ของเราเป็นแอปพลิเคชันทั้งหมด

ปรับปรุง:

นี่สำหรับเว็บไซต์ บริษัท ของเรา ไม่ใช่เซิร์ฟเวอร์โฮสต์ที่ใช้ร่วมกันดังนั้นเราจึงไม่ต้องกังวลว่าจะแยกพวกเขาออกจากกัน/home/หรืออะไรทำนองนั้น


10
ฉันไม่คิดว่าคำถามนี้เป็นเรื่องเล็กน้อย มันค่อนข้างดีจริง ๆ น่าสนใจ
Aron Rotteveel

คำตอบ:


63

ตามที่FHS , /usrเป็นshareable, read-only data- ไม่ได้ที่คุณต้องการที่จะนำเว็บไซต์ นี่คือที่ที่คุณควรใส่รหัสของคุณ (เช่น Fedora ทำสิ่งนี้เพื่อ Wordpress) ดูคู่มือบรรจุภัณฑ์เนื้อหาเว็บสำหรับ Fedora

/varคือ "ไฟล์ข้อมูลผันแปรซึ่งรวมถึงไดเรกทอรีสปูลและไฟล์ข้อมูลการดูแลระบบและการบันทึกและไฟล์ชั่วคราวและชั่วคราว" - ดีกว่า แต่ก็ยังไม่ถูกต้อง - แต่ระบบจำนวนมากจะใช้/var/wwwดังนั้นแม้ว่าคุณจะผิดที่จะใส่ไว้ในนั้นคุณอยู่ใน บริษัท ที่ดี

/srvใช้สำหรับ "ข้อมูลเฉพาะไซต์ที่ให้บริการโดยระบบนี้" - ซึ่งดูเหมือนว่าจะเป็นการจับคู่ที่ดี แต่พบได้น้อยกว่า/var/wwwมาก

สถานที่ทั่วไปอื่น ๆ ที่จะนำไฟล์ไซต์นั้นอยู่ภายใต้/home- โดยการสร้างผู้ใช้พิเศษที่เรียกว่าwebsiteหรือเช่นนั้นจากนั้นวางไฟล์ภายใน homedir ของผู้ใช้ (เช่น, /home/website)


4
อางานของฉันใช้/srv- ฉันไม่เคยเห็นสิ่งนี้มาก่อนฉันคิดว่ามันถูกสร้างขึ้นโดยพวกเขา มันเป็น Redhat / CentOS ใช่ไหม
Nick Bolton

12
เริ่มต้นเพียงเพื่อ/var/wwwเพราะการกระจายไม่ได้รับอนุญาตให้สัมผัส/srv; นั่นคือเพื่อให้ผู้ดูแลระบบกำหนดค่า นั่นคือสาเหตุที่มันเป็น "สามัญน้อยกว่า" และถูกต้องด้วย
Michael Hampton

28

ลองดูที่ลำดับขั้นของมาตรฐานระบบไฟล์ ( Wikipedia ) ฉันเองใช้ / srv / web / $ domain / {htdocs, บันทึก, cgi-bin, ... }


3
ฉันทำเช่นนี้เหมือนกัน แต่แทนที่จะเป็น "www" ฉันมักจะใช้ชื่อบริการ "httpd" ดังนั้นฉันมี / srv / httpd / $ โดเมน ... หรือ / srv / smbd / sharename ... เช่นนี้มันง่ายกว่าที่จะดูว่าบริการใดที่ให้บริการไฟล์ เช่นในบางระบบเรามี / srv / nginx / $ domain
Raffael Luthiger

9

เว็บไซต์ควรอยู่ในไดเรกทอรีหลักของผู้ใช้ พวกเขาเป็นข้อมูลผู้ใช้ควรถูกแยกออกโดยผู้ใช้หนึ่งคนต่อไซต์และเนื้อหาแบบไดนามิกควรทำงานในฐานะผู้ใช้ที่แยกต่างหากอีกครั้งด้วยไฟล์ที่เนื้อหาแบบไดนามิกจำเป็นต้องอ่านและแก้ไขตามสิทธิ์ที่เหมาะสมในการทำเช่นนั้น

ปรับปรุง:

เพียงเพราะไม่ใช่เซิร์ฟเวอร์การโฮสต์ที่ใช้ร่วมกันไม่ได้หมายความว่าคุณไม่ควรมีส่วนร่วมในการปฏิบัติด้านความปลอดภัยที่ดีและแยกบทบาทอิสระออกเป็นโซนความปลอดภัยของตนเอง


7

คำแนะนำที่ชัดเจนคือมาตรฐานระบบไฟล์ลำดับชั้นซึ่งบอกว่า/srvเป็นสถานที่ที่เหมาะสม


2
ฉันไม่ได้อ่านอย่างนั้น - หรืออย่างน้อยฉันก็อ่านว่ามันคลุมเครือในจุดนี้ เว็บไซต์ส่วนใหญ่ไม่ได้ให้บริการเพียงอย่างเดียวเว็บไซต์เหล่านี้ให้by this systemบริการโดยทั้งระบบ และทั้งสองประโยคเริ่มต้นที่This setup will differ from host to host.แนะนำว่านี่ไม่ใช่สถานที่สำหรับไฟล์ที่แชร์ในเซิร์ฟเวอร์จำนวนมาก มันเป็นสถานที่ที่ค่อนข้างน่าจะ - เหมาะสมกว่า/usrและแน่นอนกว่า/var
James Polley

1
ฉันไม่คิดว่า FHS นั้นชัดเจนเด็ดขาด Re: (จาก Wikipedia): การแจกแจงลินุกซ์ส่วนใหญ่เป็นไปตาม FHS และประกาศเป็นนโยบายของตนเองเพื่อรักษาความสอดคล้องกับ FHS อย่างไรก็ตามส่วนใหญ่ (ณ ปี 2009) ของการแจกแจงรวมถึงการแจกแจงที่พัฒนาโดยสมาชิกของกลุ่มมาตรฐานฟรีไม่ปฏิบัติตามมาตรฐานที่เสนอ
Michael Graff

6
นั่นเป็นสิ่งที่ดีเกี่ยวกับมาตรฐาน - มีให้เลือกมากมาย! :)
James Polley

3

สถานที่ที่พวกเขาอาศัยอยู่บนดิสก์มีเรื่องเล็กน้อย เป็นที่ที่คุณต้องการ

ฉันมี symlink จาก / www บนเครื่องทั้งหมดของฉันไปยังที่ที่พวกเขาอาศัยอยู่จริง ๆ ดังนั้นฉันจึงไม่ต้องสงสัยจากเครื่องหนึ่งไปยังอีกเครื่อง เครื่องรุ่นเก่าบางเครื่องมี / u0 และ / u1 สำหรับดิสก์ผู้ใช้และฉันวางสิ่งต่างๆบนเว็บไว้ที่นั่น บางคนมี / ติดตั้งที่บ้านโดยตรงดังนั้นพวกเขาไปที่นั่น แต่ / www ชี้ไปยังสถานที่ที่เหมาะสมเสมอ

ฉันยังไม่ได้ใส่การกำหนดค่าใด ๆ ใน / usr หรือใน / var มันจะไปใน / local (ซึ่งคุณเดาได้ว่ามันเป็น symlink ที่ไหนสักแห่งใน / u0 หรือ / u1 โดยทั่วไป) ทำให้การสำรองข้อมูลเป็นเรื่องง่าย ฉันเพียงแค่สำรองดิสก์ของผู้ใช้

แน่นอนว่าฉันมีเว็บไซต์กระจายข้อมูลหลักสำหรับระบบปฏิบัติการที่ฉันเลือก NetBSD ฉันสร้างระบบเหมือนที่ฉันต้องการในเครื่องหลักนี้ (เป็นอินสแตนซ์ xen) และ rsync / usr ทำให้ชีวิตของฉันง่ายขึ้น


6
นี่เป็นเรื่องปกติถ้าคุณเป็นคนเดียวหรืออาจเป็นทีมเล็ก ๆ ที่ทำงานใกล้ชิดกันและคุ้นเคยกับคนอื่น ๆ - การเรียนรู้วิธีที่ถูกต้องในการทำอาจจะใช้เวลานานกว่าการทำ มัน. หากคุณมีการดำเนินงานที่มีขนาดใหญ่และมักจะนำผู้คนใหม่ ๆ เข้ามาด้วยทำให้ต้องเร่งความเร็วพวกเขาด้วยเลย์เอาต์แบบนี้จะใช้เวลามาก - ติดกับ (หรืออย่างน้อยใกล้เคียง) FHS คือ ประหยัดเวลากับคนใหม่ทุกคนที่คุณนำเข้ามาในทีม
James Polley

5
เมื่อคุณใช้ระบบปฏิบัติการที่แตกต่างกัน 8 ระบบมาตรฐานภายในองค์กรจะเรียนรู้ได้ง่ายกว่าระบบปฏิบัติการแต่ละแบบ
Michael Graff

1
@ James Polley ใช้เวลานานเท่าไหร่ในการบอกการจ้างงานใหม่ "เราใส่ของลงใน/path/we/chose"
ceejayoz

@ceejayoz หากคุณมี "สิ่งของ" มากกว่าสองหมวดหมู่คุณสามารถบอกได้ง่ายกว่า "เราติดตาม FHS" แม้ว่าอาจต้องใช้รายละเอียดเพิ่มเติมสำหรับ "เนื้อหา" บางประเภท
tripleee

3

Apache เว็บเซิร์ฟเวอร์มีเว็บไซต์เริ่มต้นภายใต้/ var / www /แต่แนะนำให้ใส่เว็บไซต์อื่นภายใต้/ srv /

ฉันสังเกตเห็นสิ่งนี้บน Ubuntu Server 14.04 LTS ไฟล์ apache2.conf เริ่มต้นประกอบด้วยบล็อกที่มีความคิดเห็น:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>

2

ตามที่ฉันคุณไม่ควรและไม่เคยใส่บริการอินเทอร์เน็ตใด ๆ ในโซนระบบทั่วไป

บริการอินเทอร์เน็ตของคุณ (Apache / Tomcat / SSH เป็นต้น) เป็นประตูหน้าจากนั้นถ้าคุณใส่บริการเหล่านั้นไว้ใน System Zone ของคุณคุณอาจเสี่ยงต่อการถูกโจมตี

ยิ่งกว่านั้นถ้าคุณได้ให้บริการ differents ของคุณในโซนแซนด์บ็อกซ์ที่ปลอดภัยเช่นเดียวกับพาร์ติชันแยกส่วน

นี่คือตัวอย่างของโครงสร้างที่คุณสามารถใช้ได้:

/ --> 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.)

1
คุณสามารถขยาย "โซนระบบทั่วไป" ได้หรือไม่? ไม่ใช่คำที่ฉันได้ยินมาก่อนและฉันไม่แน่ใจว่าคุณหมายถึงอะไร /srv/binดูเหมือนว่าจะละเมิด FHS ซึ่งระบุว่า/srvเป็นข้อมูลไม่ใช่ไบนารี
James Polley

โซนระบบทั่วไปที่ดีหมายถึงส่วนของระบบปฏิบัติการที่มีการจัดเก็บองค์ประกอบของระบบทั้งหมดเช่นบัญชีรหัสผ่านไบนารีผู้ดูแลระบบและห้องสมุด ฉันรู้ว่าการติดตั้งของฉันไม่เคารพ FHS อย่างสมบูรณ์ แต่ฉันสามารถแยก OS ออกเป็นสองส่วนได้อย่างสมบูรณ์ 1 ° / - ระบบที่ค่อนข้างจะแก้ไข (ยกเว้นการติดตั้งเครื่องมืออัปเดตและการดูแลระบบ) 2 ° / - แอปพลิเคชั่นข้อมูลและ USers Homeland ด้วยวิธีนี้หากคุณมีปัญหากับระบบหรือข้อมูลของคุณคุณจะไม่สูญเสียข้อมูลทั้งหมด
ดร. ฉัน

ฉันเห็น. นี่เป็นเหตุผลว่าทำไมเดสก์ท็อปส่วนใหญ่วาง/homeบนพาร์ติชันแยกต่างหาก - คุณสามารถทำให้ทุกสิ่งบน/homeพาร์ติชั่นไม่กระจายและไม่ต้องกังวลกับการสูญเสียข้อมูลผู้ใช้ +1 สำหรับการแยกข้อมูล
James Polley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.