如何配置 Nginx 以使 Gitlist 正常工作

如何配置 Nginx 以使 Gitlist 正常工作

以下是完整故事: 为了使团队项目更易于管理、查看和关注,我必须建立一个项目来设置一个完整的存储库来集中管理我们所有的不同项目。

为此,我计划安装一个专用的(VM)Debian 服务器:

  • CVS(git)
  • Web 服务器 (Nginx)
    • 包含 git 的前端(吉特利
    • 可以与 LDAP 配合使用的 Bugtracker (螳螂
  • 为 bugtracker 提供发送邮件功能的 MTA

一切或多或少都已设置好并可以运行,但是 Gitlist 仍然给我带来一些困难,即使我找到了一些答案,但到现在为止它们都没有起作用,这就是我现在在这里的原因。

现在来看一下问题的细节:

我的 git 存储库位于 /home/git/repositories/ (使用 chmod 744 设置以便 Gitlist 可以访问它)

我可以初始化(裸)项目,从中推送和拉取等等......,这部分一切似乎都很好

Nginx 设置为提供 /var/www/html/ 的内容,Gitlist 位于 /var/www/html/depot/ 目录中

Gitlist config.ini 包含以下内容:

[git]
client = '/usr/bin/git' ; Your git executable path
default_branch = 'master' ; Default branch when HEAD is detached
repositories[] = '/home/git/repositories' ; Path to your repositories
                               ; If you wish to add more repositories, just add a new line

; WINDOWS USERS
;client = '"C:\Program Files (x86)\Git\bin\git.exe"' ; Your git executable path
;repositories[] = 'C:\Path\to\Repos\' ; Path to your repositories

; You can hide repositories from GitList, just copy this for each repository you want to hide
; hidden[] = '/home/git/repositories/BetaTest'

[app]
debug = false
cache = true
theme = "default"

; If you need to specify custom filetypes for certain extensions, do this here
[filetypes]
; extension = type
; dist = xml

; If you need to set file types as binary or not, do this here
[binary_filetypes]
; extension = true
; svh = false
; map = true

; set the timezone
[date]
timezone = UTC
format = 'd/m/Y H:i:s'

在这里,一切似乎也都很好,当我去http://vm/depot/我看到了存储库中所有项目的列表,但是当我想要查看其中一个项目的内容时,总是出现 404 错误,我假设它是 Gitlist 中使用的 Silex 框架提供的 url 路由的一部分,与 Nginx 不太兼容,但我不知道如何让它工作。

最后,这是我的 /etc/nginx/sites-enabled/default,我认为它是有问题的

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.php;

    server_name _;

    location / {
        try_files $uri $uri/ @gitlist =404;
    }

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;

        include /etc/nginx/fastcgi_params;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        add_header Vary "Accept-Encoding";
        expires max;
        try_files $uri @gitlist;
        tcp_nodelay off;
        tcp_nopush on;
    }

    location @gitlist {
        rewrite ^/.*$ /depot/index.php;
    }
}

我从 Gitlist 项目本身得到了一个解决方案这里,但我似乎无法根据我的情况进行正确设置,当我尝试查看项目内容时总是出现 404。

有什么建议吗?提前致谢

答案1

Ubuntu 16.04

结构/var/www/html/gitlist/...

它使用以下配置:

server {
    server_name localhost;
    root /var/www/html;
    index index.php;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \.php$ {
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include snippets/fastcgi-php.conf;
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi.conf;
    }

    location / {
        try_files $uri @gitlist;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        add_header Vary "Accept-Encoding";
        expires max;
        try_files $uri @gitlist;
        tcp_nodelay off;
        tcp_nopush on;
    }

    location @gitlist {
        rewrite ^/gitlist/.*$ /gitlist/index.php;
    }
}

答案2

我找到了一个确切的 Nginx 配置教程,网址为:
https://github.com/patrikx3/gitlist/blob/master/artifacts/gitlist.patrikx3.com.conf

它甚至启用了 git-http-backend。
如果你查看 @,我在我的服务器上使用了相同的配置
https://gitlist.patrikx3.com

相关内容