Назад | Перейти на главную страницу

Как настроить Nginx для правильной работы Gitlist

Вот полная история: Чтобы упростить управление, просмотр и отслеживание командного проекта, мне пришлось создать проект, чтобы настроить полный репозиторий для централизации всех наших различных проектов.

Для этого я планировал поставить выделенный (ВМ) сервер Debian:

Все более или менее настроено и функционально, но 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 / депо / Я вижу список всех проектов в репозитории, но когда я хочу просмотреть содержимое одного, я всегда получаю 404, я предполагаю, что это часть маршрутизации URL-адресов, предоставляемой фреймворком Silex, который используется в Gitlist, который не Он хорошо работает с 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, когда пытаюсь просмотреть содержимое проекта.

Какие-либо предложения? заранее спасибо

Я нашел туториал, который является точной конфигурацией Nginx, которую я нашел:
https://github.com/patrikx3/gitlist/blob/master/artifacts/gitlist.patrikx3.com.conf

Он даже включает git-http-backend.
Я использую ту же конфигурацию на моем сервере, если вы проверяете @
https://gitlist.patrikx3.com

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;
    }
}