Gitweb / apache2 einrichten2


10

Ich habe vor kurzem begonnen, Code zu speichern, den ich auf einem lokalen Server schreibe, den ich zu Hause habe.

Ich hatte gehofft, zu Hause eine Gitweb-Instanz zu starten, damit ich Commits sehen und den Fortschritt mit meinen anderen Teamkollegen verfolgen kann.

Ich habe Server-Tutorials online ohne Glück ausprobiert. Ich möchte, dass auf gitweb zugegriffen wirdexample.com/git

Ich möchte, dass mein Code in platziert wird /code/git

Ich würde mich über jede Hilfe freuen! Bitte versuchen Sie so explizit wie möglich zu sein, da ich eindeutig nicht weiß, was ich tue. Ich habe Tonnen von Artikeln gelesen.

Bitte und Danke.

Antworten:


6

Der Gitweb-Teil:

Sie müssen das Paket gitweb mit installieren sudo apt-get install gitweb

Dann müssen Sie die Apache Gitweb-Konfigurationsdatei bearbeiten

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

Ändern Sie die Zeile Alias /gitweb /usr/share/gitweb in

Alias /git /usr/share/gitweb

Öffnen Sie die /etc/gitweb.confDatei:

Sie müssen die Zeile $projectroot ".."in ändern $projectroot "/code/git"

und ändern andere Leitung enthält , /gitwebum /git zum Beispiel

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

zu

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

Laden Sie dann Ihren Apache-Webserver mit neu sudo /etc/init.d/apache2 horse-reload

Der GIT-Teil selbst:

Ich empfehle dringend die Verwendung von Gitosis ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

REMEMBER , wenn Sie Gebrauch gitosis die Linie $projectrootin /etc/gitweb.confmuss sein

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

Ausführliche Informationen zum Einrichten von Gitosis finden Sie unter http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

Die Beschreibung des vollständigen Gitosis-Setups ist für diese Antwort zu lang.

Wenn Sie weitere Hilfe bei der Gitose benötigen, schreiben Sie mir einen Kommentar

Um Apache-Berechtigungsprobleme zu beheben, müssen Sie möglicherweise Folgendes tun:

adduser www-data git
chgrp -R git /home/git/repositories

Was ist der Unterschied zwischen Git und Gitosis?
myusuf3

Gitosis ist ein Skript zum Einrichten eines sicheren Git-Hostings. (authentifiziere Benutzer mit ssh und so.) Es ist ziemlich einfach mit einem speziellen Git-Repository, das eine Konfiguration enthält. In dieser Konfiguration können Sie die anderen Git-Repositorys konfigurieren
aatdark

das ist interessant für mich Könnten Sie Ihre Antwort so ändern, dass sie das Gitosis-Setup enthält?
Myusuf3

scie.nti.st/2007/11/14/… ist sehr detailliert (ich habe es für mich selbst verwendet). Wenn Sie auf einmal ein Problem haben, schreiben Sie mir einen Kommentar
aatdark

0

Hier ist, was ich getan habe, gitwebum unter Ubuntu 14.04 einzurichten - mit SSL und Authentifizierung von Systembenutzern mit pwauth. gitwebVerwendet standardmäßig a /etc/gitweb.conf, das gitProjekte in erwartet /var/lib/git.

Also habe ich versucht, meine gitRepos hier einzutragen, damit wir uns in diesem Beispiel nicht ändern müssen /etc/gitweb.conf- mein /var/lib/gitAussehen sieht so aus:

$ 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

Neben Ihren Repos müssten Sie also auch /usr/share/gitweb/gitweb.cgiin diesem Verzeichnis einen Symlink erstellen ...

Dann können Sie Folgendes verwenden /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>

Und schließlich können Sie tun:

# 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

Danach gitwebsollte verfügbar sein auf https://localhost/gitweb/(zum Beispiel https://localhost/gitweb/?p=testrepo.git;a=summary); und Sie sollten in der Lage sein zu klonen (im Falle eines selbstsignierten SSL-Zertifikats) mit:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.