Configuration de gitweb / apache2

10

J'ai récemment commencé à stocker du code que j'écris sur un serveur local que j'ai chez moi.

J'espérais démarrer une instance de gitweb à la maison afin que je puisse voir les commits et suivre les progrès avec mes autres coéquipiers.

J'ai essayé des tutoriels de serveur en ligne sans succès. J'aimerais que gitweb soit accessible parexample.com/git

J'aimerais que mon code soit placé dans /code/git

J'apprécierais toute aide! Veuillez essayer d'être aussi explicite que possible, car je ne sais clairement pas ce que je fais. J'ai lu des tonnes d'articles.

S'il te plaît et merci.

myusuf3
la source

Réponses:

6

La partie gitweb:

Vous devez installer le paquet gitweb avec sudo apt-get install gitweb

Ensuite, vous devez modifier le fichier de configuration apache gitweb

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

changer la ligne Alias /gitweb /usr/share/gitweb en

Alias /git /usr/share/gitweb

ouvrez le /etc/gitweb.conffichier:

vous devez changer la ligne $projectroot ".."en $projectroot "/code/git"

et modifier de toute autre ligne contenant /gitwebà /git par exemple

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

à

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

puis rechargez votre serveur Web apache avec sudo /etc/init.d/apache2 horse-reload

La partie GIT elle-même:

Je recommande FORTEMENT l'utilisation de la gitose ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

RAPPELEZ - VOUS si vous utiliser gitosis la ligne $projectrooten /etc/gitweb.confdoit être

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

Vous pouvez trouver des informations détaillées sur la façon de configurer la gitose à http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

décrire la configuration complète de la gitose est trop long pour cette réponse.

Si vous avez besoin d'aide sur la gitose, envoyez-moi un commentaire

Pour résoudre les problèmes d'autorisation Apache, il peut être nécessaire de faire:

adduser www-data git
chgrp -R git /home/git/repositories
aatdark
la source
quelle est la différence entre git et gitosis.
myusuf3
gitosis est un script pour configurer l'hébergement git sécurisé. (authentifier les utilisateurs avec ssh et d'autres trucs.) sa jolie stratégie avec un dépôt git spécial qui contient une config. Dans cette configuration, vous pouvez configurer les autres référentiels git
aatdark
c'est intéressant pour moi. pourriez-vous modifier votre réponse pour inclure la configuration de la gitose?
myusuf3
scie.nti.st/2007/11/14/… est très détaillé (je l'ai utilisé pour moi-même). Si vous rencontrez un problème à une étape, écrivez-moi un commentaire
aatdark
0

Voici ce que j'ai fait pour configurer gitwebsur Ubuntu 14.04 - avec SSL et authentification des utilisateurs du système avec pwauth. Par défaut, gitwebutilise un /etc/gitweb.conf, qui attend les gitprojets dans /var/lib/git.

J'ai donc essayé de mettre mes gitdépôts ici, donc dans cet exemple, nous n'avons pas à changer /etc/gitweb.conf- mon /var/lib/gitapparence ressemble à ceci:

$ 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

Donc, à côté de vos dépôts, vous devrez également créer un lien symbolique /usr/share/gitweb/gitweb.cgidans ce répertoire ...

Ensuite, vous pouvez utiliser les éléments suivants comme /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>

Et enfin vous pouvez faire:

# 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

Après cela, gitwebdevrait être disponible sur https://localhost/gitweb/(par exemple, https://localhost/gitweb/?p=testrepo.git;a=summary); et vous devriez pouvoir cloner (dans le cas d'un certificat SSL auto-signé) avec:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
sdbbs
la source