Cách tốt nhất để viết và quản lý các tệp nhật ký được viết bởi Apache HTTPD đang chạy trong một vùng chứa là gì?
Chúng tôi chạy Apache HTTPD bằng hình ảnh cơ sở docker httpd:2.4-bullseye
. Ngay bây giờ HTTPD được định cấu hình để ghi nhật ký của nó vào thiết bị xuất chuẩn và thiết bị xuất chuẩn. Docker nắm bắt đầu ra của vùng chứa đó và tôi có thể xem nội dung nhật ký qua nhật ký docker <containerId>
.
Tôi muốn định cấu hình lại HTTPD để quyền truy cập, lỗi và đầu ra nhật ký HTTPD khác chuyển đến tệp, tệp này sẽ bảo toàn/xuất bản đầu ra đó theo cách rõ ràng. Tôi có thể xử lý việc sửa đổi httpd.conf và httpd-ssl.conf, tôi chắc chắn có thể gắn một ổ đĩa vào vùng chứa và tôi sẽ chiến đấu với các quyền của quy trình và thư mục cho đến khi quy trình HTTPD chạy docker có thể ghi.
Tôi lo lắng về việc xoay các tệp nhật ký theo định kỳ. Tài liệu apache có liên quan: https://httpd.Apache.org/docs/2.4/logs.html#rotation
Tôi nghĩ về logrotate nhưng không chắc nó phù hợp ở đây. Đối với ngữ cảnh, trong phương thức triển khai không có docker tất cả trên một máy cũ, HTTPD đã viết một tệp có ID tiến trình của nó, sau đó logrotate đọc tệp đó và gửi tín hiệu (HUP) đến quy trình httpd, quy trình này sẽ lần lượt -đọc cấu hình của nó, làm lại các tệp nhật ký của nó, v.v.
Vui lòng cho tôi biết, cách phù hợp để triển khai apache-in-docker trong đó logrotate không thể gửi tín hiệu tới HTTPD đang chạy là gì? Đầu ra nhật ký đường ống có phải là tệp thực thi do apache cung cấp không quay nhật ký
sự lựa chọn tốt nhất?
CẬP NHẬT: đã tạo thành công người dùng, đã định cấu hình người dùng trong httpd.conf
, gắn một ổ đĩa và đặt các dòng sau vào httpd-ssl.conf
bên trong một chỉ thị 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"
Vẫn muốn nghe ý kiến của một chuyên gia, cảm ơn trước