Hello,

I got it going.

Here's my apache configuration:

# The git.domain.com http virtual host
<VirtualHost *:80>
DocumentRoot /usr/local/www/git/repos
ServerName git.domain.com
ServerAdmin webmas...@domain.com
ErrorLog /var/log/git-httpd-error.log
CustomLog /var/log/git-httpd-access.log combined

# share well-known for renewal via Let's Encrypt!
Alias "/.well-known/acme-challenge" "/usr/local/www/.well-known/acme-challenge"

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
    </IfModule>

# deny pushing over HTTP
<LocationMatch "git-receive-pack">
Require all denied
</LocationMatch>
</VirtualHost>

# The git.domain.com https virtual host
<VirtualHost *:443>
DocumentRoot /usr/local/www/git/repos
ServerName git.domain.com
ServerAdmin webmas...@domain.com
ErrorLog /var/log/git-httpd-error.log
CustomLog /var/log/git-httpd-access.log combined

# Uncomment the below 2 lines when deploy http2
H2Direct on
Protocols h2 h2c http/1.1
SSLEngine on
SSLCertificateFile "/usr/local/etc/ssl/acme/domain.com/fullchain.pem"
SSLCertificateKeyFile "/usr/local/etc/ssl/acme/private/domain.com/privkey.pem"
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"

<Directory "/usr/local/www/git/repos">
Options +ExecCGI
  SSLRequireSSL
AllowOverride None
AuthType Basic
AuthName "Private Git Access"
AuthUserFile "/usr/local/etc/git-auth-file"
AuthGroupFile /usr/local/etc/htgroup-git
Require valid-user
<If "%{QUERY_STRING} =~ m#service=git-receive-pack# || %{REQUEST_URI}
=~ m#/git-receive-pack$#">
Require group gitwrite
</If>
</Directory>

ScriptAlias /git /usr/local/libexec/git-core/git-http-backend
<Directory "/usr/local/libexec/git-core">
SetEnv GIT_PROJECT_ROOT /usr/local/www/git/repos
SetEnv GIT_HTTP_EXPORT_ALL
# For anonymous write
  #SetEnv REMOTE_USER anonymousweb
Options +ExecCGI
  SSLRequireSSL

AuthType Basic
AuthName "Private Git Access"
AuthUserFile "/usr/local/etc/git-auth-file"
AuthGroupFile /usr/local/etc/htgroup-git
Require valid-user
<If "%{QUERY_STRING} =~ m#service=git-receive-pack# || %{REQUEST_URI}
=~ m#/git-receive-pack$#">
Require group gitwrite
</If>
</Directory>

# gitweb
Alias /gitweb "/usr/local/www/gitweb"

<Directory "/usr/local/www/gitweb">
DirectoryIndex gitweb.cgi
Options ExecCGI

AuthType Basic
AuthName "Private Gitweb Access"
AuthUserFile "/usr/local/etc/git-auth-file"
Require valid-user

<Files gitweb.cgi>
SetHandler cgi-script
</Files>
SetEnv  GITWEB_CONFIG  /usr/local/etc/gitweb.conf
</Directory>
</VirtualHost>



Thanks.
Dave.


On 4/7/18, Gary Aitken <apa...@dreamchaser.org> wrote:
> On 04/07/18 00:36, David Mehler wrote:
>
>> Does anyone have an apache 2.4 with git/gitweb setup going? I'm
>> wondering if it is possible to have I guess it would be like a double
>> url:
>>
>> https://git.domain.com/git/repos/myrepo.git
>
> It would most likely look like:
>    https://git.domain.com/git/myrepo.git
>
> The /git is an alias pointing to the actual repo in httpd-vhosts.conf
> (see example below)
>
>> and that /git is an apache ScriptAlias for git-httpd-backend (can I
>> still have this functionality but drop the /git from the url?)
>
> I think the last git in the url is required
>
>> So I can clone and push changes, both operations require authentication.
>>
>> What i'd like to do now is add gitweb in to this, making it also viewable
>> on
>>
>> https://git.domain.com
>>
>> also requiring authentication.
>
> That's possible also.  Both the git documentation and the apache24
> documentation discuss setup with examples, but I have no direct
> experience with it.
>
> Unless you want people accessing the site to have to add the command-
> line switch to override certificates on their git commands, you will
> need non-self-certified certificates for your server.  I got mine
> via letsencrypt.
>
> I recently modified my apache 2.4 to provide access to a git repo.
> However, it is read-only; I push via ssh.
>
> The relevant parts of httpd-vhosts.conf look something like this:
>
> <VirtualHost git.your-domain.com:443>
>      ServerAdmin some-...@your-domain.com
>      DocumentRoot "/path/to/your/repo/"
>      ServerName git.your-domain.com
>      ErrorLog "/path/to/logs/git-error.log"
>      CustomLog "/path/to/logs/git-access.log" common
>      SSLEngine on
>      SSLCertificateFile "/path/to/your/certs/your-public-cert.pem
>      SSLCertificateKeyFile "/path/to/your/certs/private-key.pem
>      SSLCertificateChainFile "/path/to/your/certs/fullchain.pem
>      SetEnv GIT_PROJECT_ROOT /path/to/your/repo
>      SetEnv GIT_HTTP_EXPORT_ALL
> #   20180402 Note the trailing '/' on git-http-backend
> #     For some reason this is *required*, even though it is not a directory
>      ScriptAlias /git/ /path/to/your/libexec/git-core/git-http-backend/
>      Alias /git/ /path/to/your/repo/
>      <Directory "/path/to/your/repo/">
>        AllowOverride None
>        Require all granted
>      </Directory>
>      <Directory "/path/to/your/libexec/git-core/">
>        Options +ExecCGI
>        Require all granted
>      </Directory>
> </VirtualHost>
>
> You will also need to modify httpd.conf to make sure the needed
> add-ons are activated; can't remember what they are but they are in
> the apache and git documentation and as I recall I got log messages
> telling me what was missing on at least some of them.  httpd-ssl.conf
> also needed tweaking but most of that was overridden anyway in
> httpd-vhosts.conf
>
> Gary
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to