Configurando gitweb / apache2

10

Recientemente comencé a almacenar código, que escribo en un servidor local que tengo en casa.

Esperaba comenzar una instancia de gitweb en casa para poder ver los compromisos y seguir el progreso con mis otros compañeros de equipo.

He intentado tutoriales de servidor en línea sin suerte. Me gustaría que gitweb fuera visitado porexample.com/git

Me gustaría que mi código se coloque en /code/git

¡Apreciaría cualquier ayuda! Intenta ser lo más explícito posible, porque claramente no sé lo que estoy haciendo. He leído toneladas de artículos.

Por favor y gracias.

myusuf3
fuente

Respuestas:

6

La parte de gitweb:

Tienes que instalar el paquete gitweb con sudo apt-get install gitweb

Luego tienes que editar el archivo de configuración apache gitweb

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

cambia la línea Alias /gitweb /usr/share/gitweb a

Alias /git /usr/share/gitweb

abre el /etc/gitweb.confarchivo:

tienes que cambiar la línea $projectroot ".."a $projectroot "/code/git"

y cambiar cualquier otra línea que contiene /gitweba /git , por ejemplo,

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

a

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

luego vuelva a cargar su servidor web Apache con sudo /etc/init.d/apache2 horse-reload

La parte GIT en sí misma:

Recomiendo encarecidamente el uso de gitosis ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

RECUERDE si el uso Gitosis la línea $projectrootde /etc/gitweb.conftiene que ser

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

Puede encontrar información detallada sobre cómo configurar la gitosis en http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

describir la configuración completa de la gitosis es demasiado largo para esta respuesta.

Si necesitas más ayuda sobre la gitosis déjame un comentario

Para solucionar los problemas de permisos de Apache, podría ser necesario hacer:

adduser www-data git
chgrp -R git /home/git/repositories
aatdark
fuente
¿Cuál es la diferencia entre git y gitosis?
myusuf3
gitosis es un script para configurar un alojamiento seguro de git. (autenticar a los usuarios con ssh y otras cosas). Es bastante sencillo con un repositorio especial de git que contiene una configuración. En esta configuración, puede configurar los otros repositorios git
aatdark
eso es interesante para mi ¿podría modificar su respuesta para incluir la configuración de gitosis?
myusuf3
scie.nti.st/2007/11/14/… es muy detallado (lo usé para mí). Si tiene un problema en un paso, escríbame un comentario
aatdark el
0

Esto es lo que hice para configurar gitwebUbuntu 14.04, con SSL y autenticación de usuarios del sistema pwauth. Por defecto, gitwebutiliza a /etc/gitweb.conf, que espera gitproyectos en /var/lib/git.

Así que intenté poner mis gitrepositorios aquí, así que en este ejemplo no tenemos que cambiar /etc/gitweb.conf, mi /var/lib/gitaspecto es el siguiente:

$ 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

Entonces, al lado de tus repositorios, también necesitarías un enlace simbólico /usr/share/gitweb/gitweb.cgien este directorio ...

Luego, puede usar lo siguiente como /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>

Y finalmente puedes hacer:

# 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

Después de esto, gitwebdebería estar disponible en https://localhost/gitweb/(por ejemplo https://localhost/gitweb/?p=testrepo.git;a=summary); y debería poder clonar (en caso de un certificado SSL autofirmado) con:

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