Konfigurowanie gitweb / apache2

10

Niedawno zacząłem przechowywać kod, który piszę na lokalnym serwerze, który mam w domu.

Miałem nadzieję uruchomić instancję gitweb w domu, aby zobaczyć zatwierdzenia i śledzić postępy z innymi członkami mojego zespołu.

Próbowałem samouczków serwera online bez powodzenia. Chciałbym, aby dostęp do gitweb miałexample.com/git

Chciałbym, aby mój kod został umieszczony /code/git

Byłbym wdzięczny za każdą pomoc! Postaraj się wyrazić, jak to możliwe, ponieważ wyraźnie nie wiem, co robię. Przeczytałem mnóstwo artykułów.

Proszę i dziękuję.

myusuf3
źródło

Odpowiedzi:

6

Część gitweb:

Musisz zainstalować pakiet gitweb z sudo apt-get install gitweb

Następnie musisz edytować plik konfiguracyjny Apache gitweb

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

zmień linię Alias /gitweb /usr/share/gitweb na

Alias /git /usr/share/gitweb

otwórz /etc/gitweb.confplik:

musisz zmienić linię $projectroot ".."na $projectroot "/code/git"

i zmienić dowolną inną linię zawierającą /gitwebna /git przykład

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

do

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

następnie ponownie załaduj serwer apache sudo /etc/init.d/apache2 horse-reload

Sama część GIT :

MOCNO polecam stosowanie gitosis ( http://scie.nti.st/2007/11/14/hosting-git-reposiaries-the-easy-and-secure-way )

PAMIĘTAJ jeśli użycie gitosis linię $projectrootw /etc/gitweb.confmusi być

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

Szczegółowe informacje na temat konfiguracji gitosis można znaleźć na stronie http://scie.nti.st/2007/11/14/hosting-git-reposiaries-the-easy-and-secure-way

opis pełnej konfiguracji gitozy jest zbyt długi dla tej odpowiedzi.

Jeśli potrzebujesz więcej pomocy na temat gitozy, napisz do mnie komentarz

Aby rozwiązać problemy z uprawnieniami do apache, konieczne może być:

adduser www-data git
chgrp -R git /home/git/repositories
aatdark
źródło
jaka jest różnica między git a gitosis.
myusuf3
gitosis to skrypt do skonfigurowania bezpiecznego hostingu git. (uwierzytelnianie użytkowników za pomocą ssh i innych rzeczy.) Jest to dość proste, dzięki specjalnemu repozytorium git, które zawiera konfigurację. W tej konfiguracji możesz skonfigurować inne repozytoria git
aatdark
to jest dla mnie interesujące. czy możesz zmodyfikować swoją odpowiedź, aby uwzględnić konfigurację gitosis?
myusuf3
scie.nti.st/2007/11/14/… jest bardzo szczegółowy (użyłem go dla siebie). Jeśli napotkasz problem na jednym kroku, napisz mi komentarz
aatdark
0

Oto, co zrobiłem, aby skonfigurować gitwebna Ubuntu 14.04 - z SSL i uwierzytelnianiem użytkowników systemu pwauth. Domyślnie gitwebużywa znaku /etc/gitweb.conf, który oczekuje gitprojektów w /var/lib/git.

Więc próbowałem umieścić tutaj moje gitrepo, więc w tym przykładzie nie musimy się zmieniać /etc/gitweb.conf- mój /var/lib/gitwygląd wygląda tak:

$ 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

Tak więc, oprócz repozytoriów, musiałbyś również utworzyć dowiązanie symboliczne /usr/share/gitweb/gitweb.cgiw tym katalogu ...

Następnie możesz użyć następujących opcji /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>

I w końcu możesz zrobić:

# 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

Następnie gitwebpowinien być dostępny na https://localhost/gitweb/(na przykład https://localhost/gitweb/?p=testrepo.git;a=summary); i powinieneś być w stanie sklonować (w przypadku samopodpisanego certyfikatu SSL) z:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
sdbbs
źródło