Configurando o gitweb / apache2

10

Recentemente, comecei a armazenar código que escrevo em um servidor local que tenho em casa.

Eu esperava iniciar uma instância do gitweb em casa para que eu pudesse ver confirmações e acompanhar o progresso com meus outros companheiros de equipe.

Eu tentei tutoriais de servidor on-line sem sorte. Eu gostaria que o gitweb fosse acessado porexample.com/git

Gostaria que meu código fosse inserido em /code/git

Eu apreciaria qualquer ajuda! Por favor, tente ser o mais explícito possível, porque eu claramente não sei o que estou fazendo. Eu li toneladas de artigos.

Por favor e obrigado.

myusuf3
fonte

Respostas:

6

A parte gitweb:

Você precisa instalar o pacote gitweb com sudo apt-get install gitweb

Então você tem que editar o arquivo de configuração apache gitweb

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

mude a linha Alias /gitweb /usr/share/gitweb para

Alias /git /usr/share/gitweb

abra o /etc/gitweb.confarquivo:

você tem que mudar a linha $projectroot ".."para $projectroot "/code/git"

e mudar qualquer outra linha que contém /gitweba /git por exemplo

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

para

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

depois recarregue o servidor web apache com sudo /etc/init.d/apache2 horse-reload

A parte GIT em si:

Eu recomendo fortemente o uso de gitosis ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

LEMBRE- se uso gitosis a linha $projectrootno /etc/gitweb.conftem que ser

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

Você pode encontrar informações detalhadas sobre como configurar a gitosis em http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

descrever a configuração completa da gitose é muito longo para esta resposta.

Se você precisar de mais ajuda sobre gitose, mande-me um comentário

Para corrigir problemas de permissão do apache, pode ser necessário:

adduser www-data git
chgrp -R git /home/git/repositories
aatdark
fonte
qual é a diferença entre git e gitosis.
#
gitosis é um script para configurar hospedagem git segura. (autentica os usuários com ssh e outras coisas.) é bastante direto com um repositório git especial que contém uma configuração. Nesta configuração, você pode configurar os outros repositórios git
aatdark
isso é interessante para mim. você pode modificar sua resposta para incluir a configuração de gitosis?
precisa saber é o seguinte
scie.nti.st/2007/11/14/… é muito detalhado (usei para mim). Se você tiver um problema em uma única etapa, escreva-me um comentário
aatdark
0

Aqui está o que eu fiz para configurar gitwebno Ubuntu 14.04 - com SSL e autenticação de usuários do sistema pwauth. Por padrão, gitwebusa a /etc/gitweb.conf, que espera gitprojetos em /var/lib/git.

Então, eu tentei colocar meus gitrepositórios aqui, portanto, neste exemplo, não precisamos mudar /etc/gitweb.conf- minha /var/lib/gitaparência é a seguinte:

$ 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

Portanto, além dos seus repositórios, você também precisará vincular /usr/share/gitweb/gitweb.cgieste diretório também ...

Em seguida, você pode usar o seguinte 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>

E finalmente você pode fazer:

# 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

Depois disso, gitwebdeve estar disponível em https://localhost/gitweb/(por exemplo, https://localhost/gitweb/?p=testrepo.git;a=summary); e você deve ser capaz de clonar (no caso de um certificado SSL autoassinado) com:

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