deb/apache-register-hg.bash
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 13 Feb 2024 21:16:39 +0200
changeset 40 387b30d411ef
parent 32 921746b84574
child 41 af1919427dfc
permissions -rw-r--r--
Fixed script for GCP repo.

#!/bin/bash

set -x

a2enmod cgi
service apache2 restart

mkdir -p /srv/hg
chown user:user /srv/hg

cat <<EOF >/srv/hg/hgweb.cgi
#!/usr/bin/env python3
# See also https://mercurial-scm.org/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = b"/srv/hg/hgweb.config"

# Uncomment to send python tracebacks to the browser if an error occurs:
# import cgitb; cgitb.enable()

from mercurial import demandimport
demandimport.enable()

from mercurial.hgweb import hgweb, wsgicgi

application = hgweb(config)
wsgicgi.launch(application)
EOF
chmod a+xr /srv/hg/hgweb.cgi

cat <<EOF >/srv/hg/hgweb.config
[paths]
/ = /srv/hg/*

[web]
style = gitweb
encoding = "UTF-8"

baseurl = /

deny_push = *
allow_archive = bz2, gz, zip
EOF
chmod a+r /srv/hg/hgweb.config

cat <<EOF >/etc/apache2/sites-available/hg.conf
<VirtualHost hg.defun.work:*>
    DocumentRoot /srv/hg
    ServerName hg.defun.work

    Alias "/.well-known/acme-challenge/" "/srv/www/letsencrypt/.well-known/acme-challenge/"
    <Directory "/srv/www/letsencrypt/">
        Require all granted
    </Directory>

    ScriptAliasMatch  ^/(.*)  /srv/hg/hgweb.cgi/\$1

    <Directory "/srv/hg/">
        Options +ExecCGI
        Require all granted
        AllowOverride None
        AddHandler cgi-script .cgi
    </Directory>
</VirtualHost>

<IfModule mod_ssl.c>
  <VirtualHost hg.defun.work:443>
    DocumentRoot /srv/hg
    ServerName hg.defun.work

    ScriptAliasMatch  ^/(.*)  /srv/hg/hgweb.cgi/\$1

    <Directory "/srv/hg/">
        Options +ExecCGI
        Require all granted
        AllowOverride None
        AddHandler cgi-script .cgi
    </Directory>
  </VirtualHost>
</IfModule>
EOF

a2ensite hg
service apache2 reload