Настройка gitweb / apache2

10

Недавно я начал хранить код, который я пишу на локальном сервере у меня дома.

Я надеялся запустить экземпляр gitweb дома, чтобы видеть коммиты и отслеживать прогресс с другими моими партнерами по команде.

Я попробовал обучающие программы онлайн без удачи. Я хотел бы, чтобы gitweb был доступен дляexample.com/git

Я хотел бы, чтобы мой код был в /code/git

Буду признателен за любую помощь! Пожалуйста, постарайтесь быть максимально понятным, потому что я явно не знаю, что делаю. Я прочитал тонны статей.

Пожалуйста и спасибо вам.

myusuf3
источник

Ответы:

6

GitWeb часть:

Вы должны установить пакет gitweb с sudo apt-get install gitweb

Затем вы должны отредактировать файл конфигурации apache gitweb

$EDITOR /etc/apache2/conf.d/gitweb

изменить строку Alias /gitweb /usr/share/gitweb на

Alias /git /usr/share/gitweb

откройте /etc/gitweb.confфайл:

Вы должны изменить строку $projectroot ".."на $projectroot "/code/git"

и изменить любую другую строку , содержащую , /gitwebчтобы /git , например ,

$stylesheet = "/gitweb/gitweb.css";

в

$stylesheet = "/git/gitweb.css";

затем перезагрузите веб-сервер Apache с помощью sudo /etc/init.d/apache2 horse-reload

Сама часть GIT :

Я настоятельно рекомендую использовать Gitosis ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

ПОМНИТЕ , если использовать Gitosis линии $projectrootв /etc/gitweb.confдолжно быть

$projectroot = "/home/git/repositories/";

Вы можете найти подробную информацию о том, как настроить gitosis на http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

описание полной настройки гитоза слишком длинно для этого ответа.

Если вам нужна дополнительная помощь по поводу жиров, напишите мне комментарий

Чтобы исправить проблемы с правами доступа Apache, может потребоваться выполнить:

adduser www-data git
chgrp -R git /home/git/repositories
aatdark
источник
какая разница между мерзавцем и гитозом.
myusuf3
gitosis - это скрипт для настройки безопасного хостинга git. (аутентифицируйте пользователей с помощью ssh и прочее.) Это довольно просто с помощью специального репозитория git, который содержит конфигурацию. В этом конфиге вы можете настроить другие репозитории git
aatdark
это интересно для меня Вы могли бы изменить свой ответ, чтобы включить настройку Gitosis?
myusuf3
scie.nti.st/2007/11/14/… очень подробно (я использовал это для себя). Если у вас возникнут проблемы на одном этапе, напишите мне комментарий
aatdark
0

Вот что я сделал для настройки gitwebна Ubuntu 14.04 - с SSL и аутентификацией пользователей системы pwauth. По умолчанию gitwebиспользуется объект /etc/gitweb.conf, который ожидает gitпроекты в /var/lib/git.

Поэтому я попытался разместить здесь свои gitрепозитории, поэтому в этом примере нам не нужно ничего менять /etc/gitweb.conf- мой /var/lib/gitвнешний вид выглядит следующим образом:

$ ls -la /var/lib/git/
total 12
drwxrwxrwx  3 root          root          4096 Apr  9 16:01 .
drwxr-xr-x 75 root          root          4096 Apr  7 17:31 ..
lrwxrwxrwx  1 myuser        myuser        28 Apr  9 16:01 gitweb.cgi -> /usr/share/gitweb/gitweb.cgi
drwxrwsr-x  7 myuser        www-data      4096 Apr 10 17:50 testrepo.git

Так что, кроме ваших репозиториев, вам также понадобится использовать символическую ссылку /usr/share/gitweb/gitweb.cgiв этом каталоге ...

Затем вы можете использовать следующее как /etc/apache2/sites-available/gitw-ssl.conf:

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName localhost
    HeaderName HEADER
    DocumentRoot /var/www/html

    LogLevel info
    ErrorLog ${APACHE_LOG_DIR}/error-gw.log
    CustomLog ${APACHE_LOG_DIR}/access-gw.log combined

    SSLEngine on
    SSLCertificateFile  /etc/apache2/ssl/my.crt
    SSLCertificateKeyFile /etc/apache2/ssl/my.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
      SSLOptions +StdEnvVars
    </Directory>

    <IfModule mod_authnz_external.c>
      # old style:
      AddExternalAuth pwauth /usr/sbin/pwauth
      SetExternalAuthMethod pwauth pipe
      # new style:
      #DefineExternalAuth pwauth pipe /usr/sbin/pwauth
    </IfModule>

    # as more specific, /gitweb/static should go first
    Alias /gitweb/static /usr/share/gitweb/static
    Alias /gitweb /var/lib/git
    # gitweb.cgi alias is no dice - symlink is needed:
    Alias gitweb.cgi /usr/share/gitweb/gitweb.cgi
    <Directory /var/lib/git>
      Options +FollowSymlinks +ExecCGI
      SSLRequireSSL
      AuthType basic
      AuthName "Private git repository"
      AuthBasicProvider external
      AuthExternal pwauth
      Require valid-user
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
    </Directory>

    ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
    <Directory "/usr/lib/git-core/">
      SetEnv GIT_PROJECT_ROOT /var/lib/git
      SetEnv GIT_HTTP_EXPORT_ALL
      Options +ExecCGI
      SSLRequireSSL
      AuthType basic
      AuthName "Private git repository"
      AuthBasicProvider external
      AuthExternal pwauth
      Require valid-user
    </Directory>

  </VirtualHost>
</IfModule>

И, наконец, вы можете сделать:

# not sure if also `fcgid auth_digest` are needed:
sudo a2enmod ssl cgi alias env rewrite
sudo a2ensite gitw-ssl.conf
# if not `reload`, use `restart`:
sudo service apache2 reload

После этого gitwebдолжен быть доступен https://localhost/gitweb/(например, https://localhost/gitweb/?p=testrepo.git;a=summary); и вы должны иметь возможность клонировать (в случае самозаверяющего SSL-сертификата) с:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
sdbbs
источник