Пришел сегодня ранёхонько, стал ремонтировать вот это: Apache показывает ошибку 403 на некоторых файлах
Увидел, что в файле /etc/apache2/conf-enabled/gitweb.conf кривоватенькая регулярка, которая, видимо, отвечала за доступ/обработку dot-каталогов ".git" или что-то в этом роде (сервер настраивал не я). Чтобы проверить, что проблема в Apache-модуле gitweb, решил его временно отключить. И вместо того чтоб удалить линк в /conf-enabled, спросоня удалил основной файл в /conf-available.
Отключить раздел чтоб восстановить файл не могу, на сервере куча всего крутится. Поэтому восстановил файл из пакета. И теперь его надо настроить «как было».
По-дефолту он выглядит так:
<IfModule mod_alias.c>
<IfModule mod_mime.c>
<IfModule mod_cgi.c>
Define ENABLE_GITWEB
</IfModule>
<IfModule mod_cgid.c>
Define ENABLE_GITWEB
</IfModule>
</IfModule>
</IfModule>
<IfDefine ENABLE_GITWEB>
Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
</Directory>
</IfDefine>
Единственное что я помнил, что репозитарии размещены в каталоге /home/git (этот каталог так же прописан и в /etc/gitweb.conf). А обращение к главной странице в браузере должно происходить по наш_домен/git. Поэтому я подправил настройки:
<IfDefine ENABLE_GITWEB>
Alias /git /home/git
<Directory /home/git>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
</Directory>
</IfDefine>
Перезапускаю Apache2 (версия 2.4, вестимо). И получаю 403 ошибку:
Forbidden
You don't have permission to access this resource.
В общем, судорошно соображал что как крутить, курил логи, не одмин я совсем, Апач лет десять назад запускал... Наконец заставил работать веб-морду. Конфиг получился такой:
<IfDefine ENABLE_GITWEB>
# Turning on mod rewrite
RewriteEngine on
# Make the front page an internal rewrite to the gitweb script
RewriteRule ^/git/$ /cgi-bin/gitweb.cgi [L,PT]
# Make access for "dumb clients" work
RewriteRule ^/git/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
Alias /git /home/git
<Directory /home/git>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
Require all granted
# DirectoryIndex gitweb.cgi
DirectoryIndex /cgi-bin/gitweb.cgi
</Directory>
</IfDefine>
Но теперь осталась проблема: недоступны ресурсы типа картинок, js-файлов и css-сок. Например, запросы:
http://наш_сервер/git/static/gitweb.css
http://наш_сервер/git/static/gitweb.js
Возвращают ошибку 404.
Вопрос: Как докрутить конфиг, чтобы эти ресурсы стали доступны?