Что если вы хотите иметь анонимный доступ к вашему проекту на чтение? Возможно вместо размещения внутреннего закрытого проекта, вы хотите разместить проект с открытым исходным кодом. Или, может быть, у вас есть автоматизированные серверы сборки или серверы непрерывной интеграции, которые часто изменяются, и вы не хотите постоянно перегенерировать SSH-ключи, а вы просто хотите добавить анонимный доступ на чтение.
Вероятно, наиболее простой способ для небольших конфигураций ― запустить статический веб-сервер, указав в качестве корневого каталога для документов каталог, в котором расположены ваши репозитории Git, и разрешив хук
post-update
, как было показано в первой части этой главы. Давайте продолжим работу с предыдущего примера. Допустим, ваши репозитории расположены в каталоге /opt/git
, и сервер Apache запущен на вашей машине. Повторюсь, вы можете использовать любой веб-сервер, но в качестве примера мы покажем несколько основных конфигураций Apache, которые покажут основную идею что нужно сделать.
Для начала вам следует включить хук:
$ cd project.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
Если вы используете версию Git ниже 1.6
, то команда mv
не нужна ― добавление суффикса .sample
к именам примеров хуков началось только недавно.
Что делает хук post-update
? Обычно он выглядит так:
$ cat .git/hooks/post-update
#!/bin/sh
exec git-update-server-info
Это означает, что когда вы отправляете что-то с помощью git push
на сервер по SSH, Git будет запускать эту команду, чтобы обновить файлы необходимые для скачивания по HTTP.
Затем, вы должны добавить запись VirtualHost в конфигурацию вашего Apache с корневым каталогом документов в каталоге с вашими проектами Git. Здесь мы подразумеваем, что ваш DNS сервер настроен на отправку *.gitserver
на машину, на которую вы используете, чтобы запустить все это:
ServerName git.gitserver
DocumentRoot /opt/git
Order allow, deny
allow from all
Вам также понадобится установить Unix-группу для каталога /opt/git
в www-data
, чтобы ваш веб-сервер получил доступ на чтение этих каталогов, поскольку (по умолчанию) Apache запускает CGI-сценарии от имени такого пользователя:
$ chgrp -R www-data /opt/git
После перезапуска Apache, вы должны получить возможность склонировать ваши репозитории из этого каталога указывая их в URL:
$ git clone http://git.gitserver/project.git
Таким образом, вы можете настроить доступ на чтение по HTTP к любому из ваших проектов для значительного количества пользователей за несколько минут. Другой простой способ дать открытый неаутентифицируемый доступ ― использовать Git-демон, однако это требует запуска процесса демона. Мы рассмотрим этот вариант в следующем разделе, если вы предпочитаете этот вариант.
Pro Git