Apache โหลดไฟล์ไว้ในลำดับใดและไฟล์ใด?


10

ฉันกำลังดูเซิร์ฟเวอร์ CentOS 6.5 ที่ติดตั้ง webframework ซึ่งเพิ่มมาหลายปีแล้ว มีสิ่งที่ดูเหมือน 5 ไฟล์. conf ที่ใช้งานอยู่ใน / conf รวมถึง httpd.conf

ใน httpd.conf การรวมการอ่าน

Include conf.d/*.conf

และที่คว้าไฟล์ทั้งหมดในไดเรกทอรีนั้น แต่ไม่มีคำสั่งเฉพาะที่ใช้ที่ฉันรู้และสิ่งที่เกี่ยวกับไดเรกทอรี / conf (no .d)?

มีการตั้งค่าที่ระบุคำสั่งโหลดหรือพวกเขาเพิ่งนำมาจาก az หรือไม่?

ฉันไม่ใช่ผู้ดูแลเซิร์ฟเวอร์ฉันเป็นนักพัฒนาและปัญหาอยู่ที่เส้นทางสำหรับการอัปโหลดไฟล์ไปยัง / Temp dir ที่ฉันตรวจสอบว่าเส้นทางที่ระบุนั้นถูกต้องสำหรับไฟล์ที่ฉันกังวล

ดังนั้นคำถามแรกคือ:

Apache โหลดทุกอย่างจาก / conf หรือมีรายการที่ระบุไว้หรือไม่?

คำถามที่สองจะเป็น:

Apache โหลดไฟล์ตามลำดับตัวอักษรอะไร?

สุดท้าย:

ไฟล์ที่ไม่ได้อยู่ใน. confรวมอยู่ด้วยหรือไม่? ตัวอย่างเช่นถ้าฉันตั้งชื่ออะไรบางอย่าง myconfig.conf.old Apache จะข้ามไปหรือไม่

คำตอบ:


14

คำสั่งนั้นเรียงตามตัวอักษร มันจะโหลดสิ่งที่เส้นทางรวมระบุ ในกรณีของInclude conf.d/*.confapache จะโหลดไฟล์ทั้งหมดที่มีชื่อลงท้าย.confด้วย

นี่คือสารสกัดจากเอกสาร Apache :

เชลล์สไตล์ (fnmatch ()) อักขระตัวแทนสามารถใช้ในการรวมไฟล์หลายครั้งตามลำดับตัวอักษร นอกจากนี้หากรวมคะแนนไปยังไดเรกทอรีแทนที่จะเป็นไฟล์ Apache จะอ่านไฟล์ทั้งหมดในไดเรกทอรีนั้นและไดเรกทอรีย่อยใด ๆ แต่ไม่แนะนำให้รวมทั้งไดเรกทอรีทั้งหมดเนื่องจากเป็นการง่ายที่จะทิ้งไฟล์ชั่วคราวไว้ในไดเรกทอรีที่อาจทำให้ httpd ล้มเหลวโดยไม่ตั้งใจ


ขอบคุณที่ตอบคำถามข้อ 1 & 2 อย่างแน่นอน ฉันดูว่าเอกสาร Apache แต่ไม่สามารถหาคำตอบได้
chrtp

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

ขออภัยฉันแก้ไขความคิดเห็นของฉันก่อนที่จะเห็นคุณ ไม่มี. htaccess ในกรณีนี้ แต่มีไฟล์ที่ขึ้นต้นด้วย 't' ที่แทนที่ทั้งหมด ฉันจะเปลี่ยนชื่อหรือย้ายไฟล์
chrtp

1
@chrtp และทำไมไฟล์ที่ขึ้นต้นด้วยtจะแทนที่สิ่งอื่นใด
Andrew Savinykh

1

Apache โหลดการกำหนดค่าเพิ่มเติมตามคำสั่ง "รวม" อาจมีลักษณะเช่นนี้:

Include conf.d/*.conf

เห็นได้ชัดว่ามันรวมทุกอย่างใน "conf.d" ที่ดูเหมือน "* .conf"

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

ใกล้ที่สุดเท่าที่ฉันจะบอกได้ httpd.conf เป็นอันดับแรกตามด้วยไดเรกทอรีตามลำดับที่รวมไว้แล้วตามลำดับตัวอักษรจากที่นั่น

ช่วงเวลาที่ดี. คุณสามารถใช้ apachectl -t หรือ apachectl configtest เพื่อรับทราบว่าการกำหนดค่าของคุณจะทำให้เกิดปัญหาหรือไม่


1
ขอบคุณดูเหมือนว่ามีคนเหลือไฟล์ชื่อ template.conf ซึ่งแน่นอนว่าจะโหลดครั้งสุดท้ายแล้วแทนที่ไฟล์อื่น ๆ ที่ระบุพา ธ ไปที่ / Temp ฉันเดาได้แค่ว่ามีอะไรอีกบ้างที่ถูกทำลายไปที่นั่น!
chrtp

1
@chrtp ในการเพิ่มความฮือฮาคุณสามารถระบุคำสั่งได้ที่รันไทม์โดยใช้ -C (สำหรับการเพิ่มก่อนอ่านไฟล์กำหนดค่า) และ -c (สำหรับการอ่านพวกเขาหลังจากไฟล์กำหนดค่า) เพื่อให้คุณสามารถกำหนดค่าที่แตกต่างกันทั้งหมดจากบรรทัดคำสั่ง เมื่อเริ่มต้น
Satanicpuppy

1

ฉันต้องการเปลี่ยนลำดับที่เพิ่งเปิดไฟล์ conf แรกในไดเรกทอรีไซต์ที่มีอยู่และก่อนVirtualHost *: 80เพิ่มรหัสโฮสต์เสมือนของคุณ

ในกรณีของฉันฉันต้องการให้ hub.xxx.com.conf อยู่ก่อน bayxxx.com.conf ดังนั้นฉันจึงเปิด hub.xxx.com.conf และวางโฮสต์เสมือนไว้ที่จุดเริ่มต้นของไฟล์

ตัวอย่างเช่น:

<VirtualHost *:80>
    DocumentRoot /www/hub.xxx.com/www/root
    ServerName hub.xxx.com
    ServerAlias *.hub.xxx.com
    <Directory "/www/hub.xxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bayxxx.com/www/root
    ServerName bayxxx.com
    ServerAlias www.bayxxx.com
    <Directory "/www/bayxxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.