ไดเรกทอรีที่แนะนำในการจัดเก็บเนื้อหาของเว็บไซต์คืออะไร


21

เมื่อฉันเริ่มเขียนโปรแกรมสำหรับเว็บเป็นครั้งแรกและฉันต้องการสร้างโครงการใหม่ฉันถูกสอนให้สร้างไดเรกทอรีอยู่/var/www/เสมอ /home/username/อย่างไรก็ตามในจำนวนมากของบทเรียนที่ผมอ่านคนมีแนวโน้มที่จะสร้างไดเรกทอรีใน

/home/username/ฉันไม่ชอบความคิดของการวางไว้ใน

มีตำแหน่งที่ถูกต้องหรือไม่หากมีข้อดี / ข้อเสียของการวางไว้ในบางพื้นที่บนระบบไฟล์?


นั่นคือความพึงพอใจ ("ดีที่สุด" หมายความว่าคุณควรเปลี่ยนให้ปลอดภัยที่สุด ฯลฯ ) เพื่อการพัฒนาเป็นส่วนใหญ่ หากคุณให้บริการจากที่นั่นเช่นกันคุณอาจต้องการบางสิ่งที่เงียบสงบเพื่อรักษาระยะห่างระหว่างไฟล์ส่วนบุคคลของคุณและเนื้อหาที่แชร์บนเว็บ แต่มีการกำหนดค่านับล้าน ฉันติดกับ/var/wwwและมักจะมีที่ไดรฟ์อื่น
nerdwaller

ไม่มีไดเรกทอรี "ดีที่สุด" การรับรู้ทั้งหมดของคุณเพราะตำแหน่ง phyiscal ของไฟล์ไม่สำคัญ
Ramhound

คำตอบ:


36

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

ระบบแฟ้มลำดับชั้นมาตรฐานกำหนดนี้และข้อเสนอคุณต่อไปนี้:

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

  • /srv- ไดเรกทอรีนี้ควรมีข้อมูลที่ให้บริการโดยระบบ โดยปกติจะเป็นสถานที่ที่คุณต้องการ FHS อธิบาย:

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

    วิธีหนึ่งสำหรับการจัดโครงสร้างข้อมูลภายใต้/srvเป็นโปรโตคอลเช่น ftp, rsync, wwwและcvs

    ดังนั้นเพียงแค่สร้าง/srv/wwwไดเรกทอรีและใช้สิ่งนี้ คุณสามารถสร้างโฟลเดอร์ย่อยสำหรับทุกโฮสต์เสมือนที่คุณอาจต้องการให้บริการด้วยเครื่องของคุณ

  • /homeมีไฟล์ที่ควรเป็นของผู้ใช้หนึ่งคน Apache ตัวอย่างเช่นอนุญาตให้userdirsเพื่อให้คุณสามารถเข้าถึงไฟล์เว็บของผู้ใช้ผ่านhttp://example.com/~usernameและพวกเขาจะให้บริการจากpublic_htmlไดเรกทอรีในบ้านของผู้ใช้

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

ในสาระสำคัญ/srv/wwwและ/var/wwwเป็นไดเรกทอรีที่คุณควรสร้างไดเรกทอรีย่อยในโครงการเว็บใด ๆ ที่คุณอาจต้องการโฮสต์ จากนั้นคุณสามารถกำหนดสิทธิ์ที่แตกต่างกันในไดเรกทอรีเหล่านี้เพื่อให้ผู้ใช้หรือกลุ่มผู้ใช้บางคนสามารถเขียนถึงพวกเขา /homeถ้าคุณมีโครงการสำหรับผู้ใช้คนหนึ่งในเวลาที่ใช้


3
http://example.com/~usernameมักจะไม่ได้ชี้ไปแต่/home/username/ /home/username/public_html/
choroba

ใช่ขอบคุณที่ควรได้รับการเพิ่มเพื่อความชัดเจน เสร็จสิ้น
slhck

หลังจากใช้ไปหลายปี/var/wwwก็ถึงเวลาเปลี่ยนแล้ว!
sitilge

นอกจากนี้wwwเสียงมากขึ้นเช่นโดเมนย่อยให้ฉัน
sitilge

เพียงเพื่อเพิ่ม ... การใช้ / var / www เป็นวิธีปฏิบัติทั่วไปสำหรับไซต์เดียวที่ให้บริการอินสแตนซ์และตามที่กล่าวไว้ว่าเป็นตำแหน่งเริ่มต้นของ Apache ในขณะที่ใช้ / home / usr / was / เป็นแนวทางปฏิบัติทั่วไปสำหรับเซิร์ฟเวอร์ผู้ค้าปลีกหรือหลายไซต์ โฮสติ้งมาจากแนวคิดของผู้ใช้ == ลูกค้า ทั้งสองเป็นเพียงข้อปฏิบัติทั่วไปและคำตอบของ shlck คือการใช้งานตามวัตถุประสงค์ของระบบไฟล์ได้ดีขึ้น
Jools

4

คุณสามารถใส่ไฟล์ได้ทุกที่ตราบเท่าที่สิ่งต่าง ๆ สามารถเข้าถึงได้อย่างถูกต้องอย่างไรก็ตามระบบไฟล์ที่ยุ่งเหยิงกำลังปวดหัวหากมีคนเข้ามาในภายหลัง

/srv เป็นตรรกะมากที่สุดบวกถ้าคุณทำตามลำดับชั้นของระบบแฟ้มมันจะไปที่นี่

หากคุณทำหลายโดเมนคุณสามารถทำเช่น/srv/domain1 /srv/domain2นั้น ฯลฯ จากนั้นโฟลเดอร์ย่อยภายใน/ftp /www /tftp /logs /etc.etc.etc

สำหรับฉันที่รู้สึกว่าโครงสร้างที่แข็งแกร่งมากที่จะสร้างและควบคุมได้ง่าย

แต่ในฐานะผู้ดูแลระบบคุณสามารถทำความสะอาดหรือยุ่งได้ตามที่คุณต้องการ


1

ตกลงตอบง่าย ๆ

หากไฟล์เว็บของคุณบนระบบจะสามารถเข้าถึงได้โดยผู้ใช้หนึ่งคนบนระบบ Linux ใช้ไดเรกทอรีบ้านของผู้ใช้ ( ~/)

หากไฟล์เว็บของคุณในระบบจะเข้าถึงได้โดยผู้ใช้หลายคนในระบบลินุกซ์ /srv/ใช้

นี่คือสิ่งที่http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEMระบุ

นี่คือคำพูด:

/ srv มีข้อมูลเฉพาะไซต์ที่ให้บริการโดยระบบนี้

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

โบนัส: www? FTP? จัดระเบียบโดยโปรโตคอล? ฮะ?

ตามที่ระบุไว้ที่นี่ในhttp://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM

  • หากเว็บไซต์ของคุณเข้าถึงได้โดยผู้ใช้หนึ่งคนในระบบและผ่านเบราว์เซอร์ (โปรโตคอล HTTP) เท่านั้น: ~/http/your-website-directory/หรือ (โปรโตคอล https) จากนั้น:~/https/your-website-directory/
  • หากเว็บไซต์ของคุณเข้าถึงได้โดยผู้ใช้หนึ่งคนในระบบและไม่เพียงผ่านเบราว์เซอร์ แต่มีหลายโปรโตคอล (ig http และ tcp AND ... ) จากนั้น: ~/your-website-directory/
  • หากผู้ใช้หลายคนเข้าถึงเว็บไซต์ของคุณบนระบบและผ่านเบราว์เซอร์ (โปรโตคอล http) เท่านั้น: /srv/http/your-website-directory/หรือ (โปรโตคอล https) จากนั้น:/srv/https/your-website-directory/
  • หากผู้ใช้หลายคนเข้าถึงเว็บไซต์ของคุณบนระบบและไม่เพียงผ่านเบราว์เซอร์ แต่มีหลายโปรโตคอล (ig http และ ftp AND ... ) จากนั้น: /srv/your-website-directory/

หืมทำไมไม่ www นี่คือมรดกจากเวลา Apache www ไม่ได้ระบุว่าจะใช้โปรโตคอลใด Debian ยังคงใช้สิ่งนี้ ณ วันนี้ในขณะที่ตัวอย่างเช่น Arch linux ใช้ / srv / http


0

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

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

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.