Попробую написать How-To по созданию собственного сервера, на базе Ubuntu Server 15.04.
Версия сервера не очень важна, но стоит учитывать, что в разных версиях ОС, включены разные версии WEB-сервера Apache. Я использовал 15.04, в состав которого входит Apache 2.4.
У меня самого не всё идёт гладко, но я думаю, что скоро я всё сделаю

Жду комментарии и замечания.
Для начала установлю необходимые пакеты:
sudo apt update
sudo apt install apache2 git git-core git-svn gitweb
Теперь можно создать папки для проектов.
Общую папку для сайта:
sudo mkdir /var/www/mysite.git
Папку для логов и главную папку:
sudo mkdir /var/www/mysite.git/logs
sudo mkdir /var/www/mysite.git/htdocs
Ну и папку для проектов:
sudo mkdir /var/www/mysite.git/htdocs/git
Подключаю необходимые модули:
sudo a2enmod dav
sudo a2enmod dav_fs
sudo a2enmod rewrite
sudo a2enmod env
sudo a2enmod cgi
sudo service apache2 restart
Ошибок нет, значит иду дальше.
Теперь стоит настроить виртуальный сервер.
Конфигурации сайтов Apache лежат в /etc/apache2/sites-available. Создаю и редактирую новый файл конфигурации.
sudo touch /etc/apache2/sites-available/git.mysite.conf
sudo vi /etc/apache2/sites-available/git.mysite.conf
git.mysite.conf:
# Виртуальный сервер git.example.com
<VirtualHost *:80>
# Адрес, что будет слушать Apache
ServerName git.example.com
# Почта администратора сайта
ServerAdmin admin@example.com
# Директория сайта
DocumentRoot /var/www/mysite.git/htdocs
# В качестве индексного файла буду использовать Gitweb
DirectoryIndex /cgi-bin/gitweb.cgi
#Включу mod_rewrite на всём виртуальном сервере
RewriteEngine On
RewriteRule ^/([a-zA-Z0-9_\-]+\/\.git)/?(\?.*)?$ /cgi-bin/gitweb.cgi/$1 [L,PT]
# Логи
ErrorLog /var/www/git/logs/error.log
CustomLog /var/www/git/logs/access.log "combined"
# Подключение папки cgi-bin/
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/cgi-bin/">
SetHandler cgi-script
Options +ExecCGI
Order allow,deny
Allow from all
AddHandler cgi-script .cgi
</Directory>
# Установка переменных ля Gitweb
SetEnv GITWEB_CONFIG /var/www/mysite.git/gitweb.conf
Alias /gitweb /usr/share/gitweb/
# И установка прав на основную папку
<Directory "/var/www/mysite.git/htdocs">
Allow from all
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Require all granted
</Directory>
# Ещё один необходимый псевдоним для репозитория Git
Alias /git /var/www/mysite.git/htdocs
# Включение DAV и установка прав
<Location /git>
DAV On
AuthType Basic
AuthName "Git"
AuthUserFile /var/www/mysite.git/passwd.git
Require valid-user
</Location>
</VirtualHost>
Осталось отредактировать файл конфигурации gitweb.
/var/www/mysite.git/gitweb.conf:
# Адрес Git репозитория
$my_uri = "http://git.example.com";
# Название сайта, отображается в заголовке
$site_name = "git.example.com";
# Путь к репозиториям Git на жёстком диске
$projectroot = "/var/www/mysite.git/htdocs/git/";
# Временная папка
$dir_temp = "/tmp";
# Ссылка на домашнюю страницу
$home_text = $my_uri;
# Текст, можно откомментировать и вставить свой
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/gitweb/gitweb.css";
$logo = "/gitweb/git-logo.png";
$favicon = "/gitweb/git-favicon.png";
$projects_list_description_width = 40;
$feature{'pathinfo'}{'default'} = [1];
Создаю пользователей:
sudo htpasswd -cm /var/www/mysite.git/passwd.git user
Включаю конфигурацию и перезапускаю Apache:
sudo a2ensite git.mysite.conf
sudo service apache2 restart
Пока всё. Надо шлифовать. Жду комментарии.