Lighttpd git-http-backend setenv问题

时间:2018-10-19 10:57:28

标签: lighttpd git-http-backend

我在Ubuntu 14.04上运行了正常的安装程序,通过apt安装了Lighttpd 1.4.33,并通过git http pull / push传递给git-http-backend。这是通过ldap进行身份验证的。对ldap组查找的新要求意味着我需要更新lighttpd以支持它。

由于lighttpd仅在可信任/通用版本上升至1.4.33,因此旧版本已被删除,因此下载了Lighttpd 1.4.51的副本并从源代码中使用:

./configure --with-openssl --with-openssl-libs=/usr/bin/openssl --with-ldap

设置了几个缓存文件夹并设置了权限后,lighttpd开始启动并似乎正在处理请求。从客户端执行git pull时,日志会显示请求,使其进入git-http-backend,但是在验证客户端后会看到git pull:

fatal: repository 'https://git.company.co.uk/repos/project_portal.git/' not found

git存储库所在的文件夹上的权限看起来正确,并且lighttpd以与工作设置相同的用户身份运行。

我的猜测是lighttpd.conf中的setenv.add-environment配置项不会被git-http-backend传递/拾取,因此它不知道物理文件在哪里。

我也尝试过编译不同版本的lighttpd,但是它们都有相同的问题,可能是我缺少了一个编译选项。

下面lighttpd.conf中的相关部分。

server.modules = (
    "mod_auth",
    "mod_access",
    "mod_accesslog",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
    "mod_rewrite",
    "mod_webdav",
    "mod_fastcgi",
    "mod_cgi",
    "mod_setenv",
    "mod_proxy",
    "mod_authn_ldap",
    "mod_openssl"
)

server.document-root        = "/var/www"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
accesslog.filename          = "/var/log/lighttpd/access.log" 

debug.log-request-handling = "enable"

index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

$SERVER["socket"] == "0.0.0.0:443" {

    ssl.engine = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/git.company.co.uk.pem"
    ssl.ca-file = "/etc/lighttpd/ssl/xxxIntermediateCertificate.crt"

    $HTTP["host"] == "git.company.co.uk" {
        ssl.pemfile = "/etc/lighttpd/ssl/git.company.co.uk.pem"
        alias.url = ( "/repos" => "/usr/lib/git-core/git-http-backend" )
        $HTTP["url"] =~ "^/repos" {
            cgi.assign = ("" => "")
            setenv.add-environment = (
                "GIT_PROJECT_ROOT" => "/var/www/repositories",
                "GIT_HTTP_EXPORT_ALL" => ""
            )
            auth.require = ( "" => (
                "method" => "basic",
                "realm" => "repos",
                "require" => "valid-user"
            ))
            auth.backend = "ldap"
            auth.backend.ldap.hostname              = "172.xxx"
            auth.backend.ldap.base-dn               = "OU=ITS,xxx"
            auth.backend.ldap.filter                = "(CN=$)"
            auth.backend.ldap.bind-dn               = "CN=xxx"
            auth.backend.ldap.bind-pw               = "xxx"
            auth.backend.ldap.allow-empty-pw        = "disable"
        }
    }
}

lighttpd -V

lighttpd/1.4.51 (ssl) - a light and fast webserver

Event Handlers:

        + select (generic)
        + poll (Unix)
        + epoll (Linux)
        - /dev/poll (Solaris)
        - eventports (Solaris)
        - kqueue (FreeBSD)
        - libev (generic)

Network handler:

        + linux-sendfile
        - freebsd-sendfile
        - darwin-sendfile
        - solaris-sendfilev
        + writev
        + write
        - mmap support

Features:

        + IPv6 support
        + zlib support
        + bzip2 support
        + crypt support
        + SSL support
        + PCRE support
        - MySQL support
        - PgSQL support
        - DBI support
        - Kerberos support
        + LDAP support
        - PAM support
        - memcached support
        - FAM support
        - LUA support
        - xml support
        - SQLite support
        - GDBM support

Error.log

2018-10-22 07:21:55: (response.c.422) -- splitting Request-URI
2018-10-22 07:21:55: (response.c.423) Request-URI     :  /repos/project_portal.git/info/refs?service=git-                             upload-pack
2018-10-22 07:21:55: (response.c.424) URI-scheme      :  https
2018-10-22 07:21:55: (response.c.425) URI-authority   :  git.company.co.uk
2018-10-22 07:21:55: (response.c.426) URI-path (raw)  :  /repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.427) URI-path (clean):  /repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.428) URI-query       :  service=git-upload-pack
2018-10-22 07:21:55: (mod_access.c.156) -- mod_access_uri_handler called
2018-10-22 07:21:55: (response.c.573) -- before doc_root
2018-10-22 07:21:55: (response.c.574) Doc-Root     : /var/www
2018-10-22 07:21:55: (response.c.575) Rel-Path     : /repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.576) Path         :
2018-10-22 07:21:55: (response.c.628) -- after doc_root
2018-10-22 07:21:55: (response.c.629) Doc-Root     : /var/www
2018-10-22 07:21:55: (response.c.630) Rel-Path     : /repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.631) Path         : /var/www/repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.655) -- logical -> physical
2018-10-22 07:21:55: (response.c.656) Doc-Root     : /var/www
2018-10-22 07:21:55: (response.c.657) Basedir      : /usr/lib/git-core/git-http-backend
2018-10-22 07:21:55: (response.c.658) Rel-Path     : /repos/project_portal.git/info/refs
2018-10-22 07:21:55: (response.c.659) Path         : /usr/lib/git-core/git-http-backend/project_portal.gi                             t/info/refs
2018-10-22 07:21:55: (response.c.671) -- handling physical path
2018-10-22 07:21:55: (response.c.672) Path         : /usr/lib/git-core/git-http-backend/project_portal.gi                             t/info/refs
2018-10-22 07:21:55: (response.c.679) -- handling subrequest
2018-10-22 07:21:55: (response.c.680) Path         : /usr/lib/git-core/git-http-backend
2018-10-22 07:21:55: (response.c.681) URI          : /repos
2018-10-22 07:21:55: (response.c.682) Pathinfo     : /project_portal.git/info/refs
2018-10-22 07:21:55: (mod_access.c.156) -- mod_access_uri_handler called
2018-10-22 07:21:55: (mod_compress.c.854) -- handling file as static file

欢迎提出任何建议,谢谢。

1 个答案:

答案 0 :(得分:0)

在/var/log/lighttpd/error.log中检查lighttpd错误日志。

检查服务器上git-http-backend的路径。可能是/ usr / lib / git-core / git-http-backend,也可能是/ usr / libexec / git-core / git-http-backend。

尝试为“ GIT_HTTP_EXPORT_ALL”设置值=>“ 1”,否则git不会导出存储库。如果查看lighttpd破损日志(从CGI输出)(如果已配置),或者在前台(-D)中启动lighttpd并从git-http-backend查看跟踪,则可以看到此信息。