Устанавливаем следующие компоненты:
apt-get install git
apt-get install fcgiwrap spawn-fcgi — нужно для nginx
apt-get install gitweb — web сайт для git. Настройки можно изменить в /etc/gitweb.conf (обычно здесь меняет параметр $projectroot)
Настраиваем nginx для GitWeb
server
{
  access_log /var/log/nginx/gitweb.access.log;
  error_log /var/log/nginx/gitweb.error.log info;
  server_name gitweb.developernote.com;
  location /index.cgi {
    root /usr/share/gitweb/;
    include fastcgi_params;
    gzip off;
    fastcgi_param SCRIPT_NAME $uri;
    fastcgi_param GITWEB_CONFIG /etc/gitweb.conf;
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
  }
  location / {
    root /usr/share/gitweb/;
    index index.cgi;
  }
}
Далее создаем директорию для хранения репозиториев
cd /var/www mkdir git cd /var/www/git git init --bare project.git cd project.git touch readme git add . git commit -m "first" chown -R www-data:www-data . chmod -R 777 . service fcgiwrap restart # возможно это не нужно выполнять
После этого можно спокойно открыть сайт по адресу gitweb.developernote.com
Теперь настраиваем сам git. В Nginx добавляем еще один сайт
server
{
  access_log /var/log/nginx/git.access.log;
  error_log /var/log/nginx/git.error.log info;
  server_name git.developernote.com;
  gzip off;
  location / {
        root /home/git/repositories;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param SCRIPT_FILENAME   /usr/lib/git-core/git-http-backend;
        fastcgi_param PATH_INFO         $uri;
        fastcgi_param GIT_PROJECT_ROOT  /home/git/repositories;
        fastcgi_param GIT_HTTP_EXPORT_ALL "";
        fastcgi_param REMOTE_USER $remote_user;
        include fastcgi_params;
  }
}
И если все правильно настроить, то гит должен заработать
Чтобы использовать авторизацию нужно установить
apt-get install apache2-utils
sudo htpasswd /var/www/git/htpasswd hitesh , где
/var/www/git/htpasswd путь где содержится файл, каталог которого должен быть заблокирован
hitesh — имя пользователя для доступа
И в Настройках nginx сайтов прописываем
server
{
 ...
  auth_basic "GitWeb requires authorization";
  auth_basic_user_file /home/git/.gitpasswd;
  
  ...
}
Оригинал статьи: https://developernote.com/2015/01/installing-git-on-ubuntu-12-04-and-enabling-http-access-with-nginx/