สถานที่ที่ต้องการในการจัดเก็บไฟล์การกำหนดค่าที่เปลี่ยนแปลงบ่อย


18

ฉันมีแอพพลิเคชั่นจำนวนมากบนเซิร์ฟเวอร์ Linux ที่ต้องพึ่งพาไฟล์กำหนดค่าบางอย่าง แอปพลิเคชันเหล่านี้เกี่ยวข้อง แต่แยกจากกัน /optสำหรับสิ่งที่คุ้มค่าในขณะที่แต่ละโปรแกรมได้มันเป็นไดเรกทอรีของตัวเองใน ไฟล์การกำหนดค่าสามารถเปลี่ยนแปลงได้ประมาณหนึ่งครั้งต่อสัปดาห์ แต่ไม่มากกว่านั้น ฉันวางแผนที่จะตั้งค่างาน cron เพื่อคว้าเวอร์ชันล่าสุดจากไซต์ FTP ทุกวันอาทิตย์

ฉันยังไม่เข้าใจอย่างถ่องแท้ว่าสถานที่ที่ดีที่สุดที่จะนำไฟล์กำหนดค่าเหล่านี้มาใช้ยัง นี่คือความเป็นไปได้บางอย่าง:

  • /etc/<appsuitename>/ มันเป็นไฟล์การกำหนดค่าการกำหนดค่าไป /etc
  • /var/<appsuitename>/ ไฟล์มีการเปลี่ยนแปลงบ่อยครั้ง แต่ไม่ได้โดยตรงจากผู้ดูแลระบบ (ฉัน) เพียงแค่โดยผู้ให้บริการแพลตฟอร์ม
  • /opt/<appsuitename>/libหรือ/opt/<appsuitename>/commonนี่เป็นวิธีคิด Windows มากกว่า แต่มันอาจสมเหตุสมผลในกรณีนี้
  • /usr/lib อาจจะไม่ แต่รวมถึงความสมบูรณ์

หรืออาจเป็นอย่างอื่นที่ฉันไม่ได้คิด

แก้ไข:ตอบคำถามของMichaelKjörling:

  • มีเพียง 3 พาร์ทิชัน/home, และ/ ไม่อ่านอย่างเดียว/swap/opt
  • ใช่คนอื่นจะต้องใช้เซิร์ฟเวอร์นี้ถ้าฉันโดนรถบัส
  • แอปพลิเคชันเหล่านี้ได้รับการพัฒนาภายในดังนั้นฉันจึงเป็นผู้ตัดสินใจว่าควรกำหนดค่าที่ใด หากไม่ใช่ "เมตาแท็ก" ฉันอาจใส่แท็กแนวปฏิบัติที่ดีที่สุด
  • ในที่สุดสิ่งที่ฉันตัดสินใจจะไม่สำคัญจริงๆฉันรู้ว่าระบบขององค์กรนั้นมีไว้สำหรับผู้ดูแลระบบมากกว่าการทำงานภายในของระบบปฏิบัติการ แต่ฉันชอบที่จะปฏิบัติตามมาตรฐานทั่วไปตามที่มีอยู่

คำตอบ:


21

Filesystem Hierarchy Standardกำหนดว่าไฟล์การกำหนดค่าสำหรับสิ่งที่ติดตั้งภายใต้/opt/xyzควรเข้าสู่/etc/opt/xyzตำแหน่งที่xyzต้องจับคู่ นั่นคือแอ็พพลิเคชันที่ติดตั้งในไดเร็กทอรีภายใต้/ optซึ่งต้องการไฟล์คอนฟิกูเรชันเฉพาะโฮสต์ควรมีไดเร็กทอรีที่ตรงกันภายใต้ / etc / opt ซึ่งไฟล์คอนฟิกูเรชันเหล่านั้นไป

วัตถุประสงค์ของ/ etc (การกำหนดค่าระบบเฉพาะโฮสต์) มีการระบุไว้เพียง:

/etcลำดับชั้นมีแฟ้มการกำหนดค่า "configuration file" เป็นไฟล์โลคอลที่ใช้ควบคุมการทำงานของโปรแกรม มันจะต้องเป็นแบบคงที่และไม่สามารถเป็นไบนารีที่ปฏิบัติการได้

แน่นอนไม่มีการกำหนดค่าคงที่ทั้งหมด แต่ฉันจะใช้ "คงที่" ในบริบทนี้เพื่อหมายถึงคร่าว ๆ "ไม่เปลี่ยนแปลงโดยไม่ต้องแทรกแซงผู้ดูแลระบบ"

/ etc / optมีความเฉพาะเจาะจงมากขึ้นและจุดประสงค์ของมันคือ:

ไฟล์การกำหนดค่าเฉพาะโฮสต์สำหรับแพ็คเกจซอฟต์แวร์แอปพลิเคชันเสริมจะต้องติดตั้งภายในไดเรกทอรี/etc/opt/<subdir>โดยที่<subdir>ชื่อของทรีย่อย/optที่เก็บข้อมูลสแตติกจากแพ็คเกจนั้น

เนื่องจากคุณกำลังติดตั้งซอฟต์แวร์ภายใต้ / opt ไฟล์การกำหนดค่าจึงควรเข้าไปในไดเรกทอรีย่อยที่เกี่ยวข้องหรือลำดับชั้นภายใต้ / etc / opt

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

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


มันทำจริงใน.propertiesไฟล์ แต่ในปัจจุบันซอฟต์แวร์แต่ละรุ่นมีสำเนาของตนเองใน/optไดเรกทอรีย่อยซึ่งเห็นได้ชัดว่าไม่เหมาะและเป็นสิ่งที่ฉันตั้งใจจะเปลี่ยนแปลง คำถามนี้เกี่ยวกับ "ฉันควรเปลี่ยนเป็นอะไร" ขอบคุณ!
durron597
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.