วิธีปฏิบัติที่ดีที่สุดในการเขียนและจัดการไฟล์บันทึกที่เขียนโดย Apache HTTPD ที่ทำงานในคอนเทนเนอร์คืออะไร
เราเรียกใช้ Apache HTTPD โดยใช้อิมเมจฐานนักเทียบท่า httpd:2.4-บูลส์อาย
. ตอนนี้ HTTPD ได้รับการกำหนดค่าให้เขียนบันทึกไปยัง stdout และ stderr นักเทียบท่าจับเอาต์พุตคอนเทนเนอร์นั้นและฉันสามารถดูเนื้อหาบันทึกได้ บันทึกนักเทียบท่า <containerId>
.
ฉันต้องการกำหนดค่า HTTPD ใหม่เพื่อให้การเข้าถึง ข้อผิดพลาด และเอาต์พุตบันทึก HTTPD อื่นๆ ไปที่ไฟล์ ซึ่งจะรักษา/เผยแพร่เอาต์พุตนั้นด้วยวิธีที่ชัดเจน ฉันสามารถจัดการกับการแก้ไข httpd.conf และ httpd-ssl.conf ได้ ฉันสามารถติดตั้งวอลุ่มเข้ากับคอนเทนเนอร์ได้อย่างแน่นอน และฉันจะต่อสู้กับสิทธิ์ในกระบวนการและไดเร็กทอรีจนกว่ากระบวนการ HTTPD ที่รันโดยนักเทียบท่าจะสามารถเขียนได้
ฉันกังวลเกี่ยวกับการหมุนไฟล์บันทึกเป็นระยะ เอกสาร apache ที่เกี่ยวข้อง: https://httpd.apache.org/docs/2.4/logs.html#rotation
ฉันคิดถึง logrotate แต่ไม่แน่ใจว่าเหมาะสมที่นี่ สำหรับบริบท ในวิธีการปรับใช้แบบไม่มีนักเทียบท่าแบบ all-on-one-machine แบบเก่า HTTPD เขียนไฟล์ด้วย ID กระบวนการ จากนั้น logrotate อ่านไฟล์นั้นและส่งสัญญาณ (HUP) ไปยังกระบวนการ httpd ซึ่งในทางกลับกัน - อ่านการกำหนดค่า ทำซ้ำไฟล์บันทึก ฯลฯ
โปรดบอกฉันว่า อะไรคือวิธีที่ถูกต้องสำหรับการปรับใช้ apache-in-docker โดยที่ logrotate ไม่สามารถส่งสัญญาณไปยัง HTTPD ที่ทำงานอยู่ได้ กำลังส่งเอาต์พุตบันทึกไปยังไฟล์ปฏิบัติการที่ apache ให้มา บันทึกการหมุน
ทางเลือกที่ดีที่สุด?
UPDATE: สร้างผู้ใช้สำเร็จ, กำหนดค่าผู้ใช้ใน httpd.conf
ติดตั้งไดรฟ์ข้อมูลและตั้งค่าบรรทัดต่อไปนี้ใน httpd-ssl.conf
ภายในคำสั่ง VirtualHost:
ErrorLog "|bin/rotatelogs -n 14 /opt/data/logs/httpd-error.log 86400"
TransferLog "|bin/rotatelogs -n 14 /opt/data/logs/httpd-transfer.log 86400"
CustomLog "|bin/rotatelogs -n 14 /opt/data/logs/httpd-ssl.log 86400" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ยังต้องการฟังความคิดเห็นของผู้เชี่ยวชาญ ขอบคุณล่วงหน้า