GitWeb: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Links =  
= Links =
* [[Git]]
* [[Git]]
* [[GitWeb]]
* [[Git auf dem Server]]
* [https://git-scm.com/book/de/v2/Git-auf-dem-Server-Die-Protokolle Git-Protokolle]


= Zielsetzung =
= Zielsetzung =
Es soll ein Server so hergerichtet werden, dass dort einfach auf zentrale Git-Repositories zugregriffen werden kann.
Das Paket gitweb bietet eine einfache Webapplikation zur Verwaltung von Git-Repositories auf dem Server.


= Installation =
= Installation =
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt install git
apt install gitweb
REPO=/home/git/repo
mkdir -p $REPO
chown -R git:git $REPO
</syntaxhighlight>
</syntaxhighlight>


= Konfiguration =
= Konfiguration =
* Wir verwenden hier das SSH-Protokoll zum Zugriff: Benutzer haben Lese- und Schreibzugriff auf die Repositories.
== /etc/gitweb.conf ==
* Eine Alternative zum anonymen Lesezugriff ist das Git-Protokoll: https://git-scm.com/book/de/v2/Git-auf-dem-Server-Die-Protokolle
* Jeder Benutzer, der einen Zugang zu den Repositories haben darf, muss seinen Öffentlichen Schlüssel schicken.
* Dieser öffentliche Schlüssel wird in die Datei /home/git/.ssh/authorized_keys eingetragen:
<pre>
<pre>
ssh-rsa AAAAB3Nza...x88AEZIj adam@pluto
$projectroot = "/home/git/repo";
ssh-rsa BDEa273AX...KrkwlWeF berta@missisouri
...
</pre>
== Nginx-Konfiguration ==
<pre>
server {
  listen 80;
  include snippets/letsencrypt.conf;
  server_name gitweb.hamatoma.de;
  root /usr/share/gitweb;
  location / {
    return 301 https://;  # enforce https
  }
}
server {
listen 443 ssl http2;
  server_name gitweb.hamatoma.de;
ssl_certificate    /etc/letsencrypt/live/latest/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/latest/privkey.pem;
#ssl_certificate /etc/ssl/certs/gitweb.hamatoma.de.pem;
#ssl_certificate_key /etc/ssl/private/gitweb.hamatoma.de.key;
  access_log /var/log/nginx/a_gitweb.log;
  error_log /var/log/nginx/e_gitweb.log;
  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;
  }
}
</pre>
</pre>
= Einrichten eines Repositories =
* Es soll ein Repository für Projekt taskx eingerichtet werden:
<syntaxhighlight lang="bash">
PROJ=taskx
REPO=/home/git/repo/$PROJ.git
mkdir -p $REPO
cd $REPO
git init --bare
# Für das Git-Protokoll:
touch git-daemon-export-ok
echo "Short project's description" >description
chown -R git:git -R .
</syntaxhighlight>
= Verbindung zu lokalem Repository =
<syntaxhighlight lang="bash">
PROJ=taskx
DOMAIN=git.hamatoma.de
git remote add origin ssh://git@$DOMAIN:/home/git/repo/mtsimulator
</syntaxhighlight>

Aktuelle Version vom 19. Februar 2024, 21:34 Uhr

Links

Zielsetzung

Das Paket gitweb bietet eine einfache Webapplikation zur Verwaltung von Git-Repositories auf dem Server.

Installation

apt install gitweb

Konfiguration

/etc/gitweb.conf

$projectroot = "/home/git/repo";
...

Nginx-Konfiguration

server {
  listen 80;
  include snippets/letsencrypt.conf;
  server_name gitweb.hamatoma.de;
  root /usr/share/gitweb;
  location / {
    return 301 https://;  # enforce https
  }
}
server {
 listen 443 ssl http2;
  server_name gitweb.hamatoma.de;
 ssl_certificate     /etc/letsencrypt/live/latest/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/latest/privkey.pem;
 #ssl_certificate /etc/ssl/certs/gitweb.hamatoma.de.pem;
 #ssl_certificate_key /etc/ssl/private/gitweb.hamatoma.de.key;
  access_log /var/log/nginx/a_gitweb.log;
  error_log /var/log/nginx/e_gitweb.log;
  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;
  }
}