Lighttpd 高山容器日誌記錄

Lighttpd 高山容器日誌記錄

上下文是我想在 docker 容器內提供一個靜態網站,這樣我就可以有一些專用的指標,並且我希望日誌使用 stdout/stderr。

為此,我想到將 Lighttpd 與 Alpine 影像結合使用。

我發現了一個小技巧門這裡我們創建了一個指向 stdout 的鏈接,但在創建鏈接後,權限發生了變化,lighttpd 停止寫入 access.log。

我嘗試將server.usernamelighttpd.conf 更改為“root”,但它拒絕這樣做,說' (server.c.1330) 我不會將 uid 設為 0

我嘗試在創建連結後更改 access.log 權限,但沒有成功。

有沒有辦法設定lighttpd使用stdout/stderr?

我目前的配置:

var.basedir  = "/var/www/localhost"
var.logdir   = "/var/log/lighttpd"
var.statedir = "/var/lib/lighttpd"

server.modules   = ( "mod_access",
                     "mod_setenv",
                     "mod_rewrite",
                     "mod_redirect",
                     "mod_status",
                     "mod_simple_vhost",
                     "mod_evhost",
                     "mod_alias",
                     "mod_userdir",
                     "mod_secdownload",
                     "mod_fastcgi",
                     "mod_proxy",
                     "mod_cgi",
                     "mod_ssi",
                     "mod_compress",
                     "mod_usertrack",
                     "mod_expire",
                     "mod_rrdtool",
                     "mod_accesslog" )

include "mime-types.conf"

server.errorlog   = "/var/log/lighttpd/error.log"
server.pid-file      = "/var/run/lighttpd.pid"

server.username             = "lighttpd"
server.groupname            = "wheel"

server.document-root = var.basedir + "/htdocs"

static-file.exclude-extensions = (".php", ".pl", ".cgi", ".fcgi")

url.access-deny = ("~", ".inc")

accesslog.filename = "/var/log/lighttpd/access.log"
index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )

我目前的 Dockerfile:

FROM alpine:3.12

RUN adduser -S lighttpd -G wheel
RUN apk update --no-cache
RUN apk add  --update --no-cache \
    lighttpd=1.4.55-r1

COPY ./static /var/www/localhost/htdocs/
COPY lighttpd/* /etc/lighttpd/

RUN ln -sf /dev/stdout /var/log/lighttpd/access.log \
   && ln -sf /dev/stderr /var/log/lighttpd/error.log

EXPOSE 80 443

ENTRYPOINT ["/usr/sbin/lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]

答案1

如果您註解掉server.errorlog,那麼lighttpd將記錄到stderr。

如果accesslog.filename = "/dev/stdout"不起作用,那麼您是否嘗試過設定accesslog.filename = "/proc/self/fd/1"

相關內容