deb/apache-register-hg.bash
author Oleksandr Gavenko <gavenkoa@gmail.com>
Thu, 29 May 2025 22:17:18 +0300
changeset 43 6679199ee208
parent 41 af1919427dfc
child 44 a6779754c20c
permissions -rw-r--r--
Lowered CGI scripts timeouts.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
#!/bin/bash
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
11
a6a75053c129 Fixed names, enabled debugging.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 10
diff changeset
     3
set -x
a6a75053c129 Fixed names, enabled debugging.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 10
diff changeset
     4
16
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
     5
a2enmod cgi
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
     6
service apache2 restart
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
     7
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
     8
mkdir -p /srv/hg
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
     9
chown user:user /srv/hg
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    10
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    11
cat <<EOF >/srv/hg/hgweb.cgi
32
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    12
#!/usr/bin/env python3
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    13
# See also https://mercurial-scm.org/wiki/PublishingRepositories
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    14
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    15
# Path to repo or hgweb config to serve (see 'hg help hgweb')
32
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    16
config = b"/srv/hg/hgweb.config"
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    17
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    18
# Uncomment to send python tracebacks to the browser if an error occurs:
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    19
# import cgitb; cgitb.enable()
10
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
32
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    21
from mercurial import demandimport
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    22
demandimport.enable()
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    23
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    24
from mercurial.hgweb import hgweb, wsgicgi
32
921746b84574 Update hgweb to Python 3.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 31
diff changeset
    25
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    26
application = hgweb(config)
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    27
wsgicgi.launch(application)
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    28
EOF
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    29
chmod a+xr /srv/hg/hgweb.cgi
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    30
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    31
cat <<EOF >/srv/hg/hgweb.config
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    32
[paths]
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    33
/ = /srv/hg/*
10
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    35
[web]
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    36
style = gitweb
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    37
encoding = "UTF-8"
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    38
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    39
baseurl = /
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    40
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    41
deny_push = *
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    42
allow_archive = bz2, gz, zip
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    43
EOF
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    44
chmod a+r /srv/hg/hgweb.config
13
7ed40cd96e3a Possible fix for: AH01630: client denied by server configuration.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 12
diff changeset
    45
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    46
cat <<EOF >/etc/apache2/sites-available/hg.conf
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    47
<VirtualHost hg.defun.work:*>
16
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
    48
    DocumentRoot /srv/hg
21
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    49
    ServerName hg.defun.work
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    50
31
461eed8e7463 Activating Let's Encrypt webroot renewal for all my sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 21
diff changeset
    51
    Alias "/.well-known/acme-challenge/" "/srv/www/letsencrypt/.well-known/acme-challenge/"
461eed8e7463 Activating Let's Encrypt webroot renewal for all my sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 21
diff changeset
    52
    <Directory "/srv/www/letsencrypt/">
461eed8e7463 Activating Let's Encrypt webroot renewal for all my sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 21
diff changeset
    53
        Require all granted
461eed8e7463 Activating Let's Encrypt webroot renewal for all my sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 21
diff changeset
    54
    </Directory>
461eed8e7463 Activating Let's Encrypt webroot renewal for all my sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 21
diff changeset
    55
41
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    56
    # Discourage bots indexing HG: Python is slow and cause OOM kills...
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    57
    <IfModule mod_headers.c>
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    58
      Header add "X-Robots-Tag" "noindex, nofollow"
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    59
    </IfModule>
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    60
17
141de5177ee8 Escaped dollar sign.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 16
diff changeset
    61
    ScriptAliasMatch  ^/(.*)  /srv/hg/hgweb.cgi/\$1
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    62
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    63
    <Directory "/srv/hg/">
16
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
    64
        Options +ExecCGI
13
7ed40cd96e3a Possible fix for: AH01630: client denied by server configuration.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 12
diff changeset
    65
        Require all granted
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
    66
        AllowOverride None
16
667a0417c36a Corrections to hosting HG in Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 15
diff changeset
    67
        AddHandler cgi-script .cgi
43
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    68
        <IfModule mod_cgi.c>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    69
          CGIScriptTimeout 1s
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    70
        </IfModule>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    71
        <IfModule mod_cgid.c>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    72
          CGIDScriptTimeout 1s
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    73
        </IfModule>
13
7ed40cd96e3a Possible fix for: AH01630: client denied by server configuration.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 12
diff changeset
    74
    </Directory>
11
a6a75053c129 Fixed names, enabled debugging.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 10
diff changeset
    75
</VirtualHost>
21
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    76
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    77
<IfModule mod_ssl.c>
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    78
  <VirtualHost hg.defun.work:443>
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    79
    DocumentRoot /srv/hg
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    80
    ServerName hg.defun.work
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    81
41
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    82
    <IfModule mod_headers.c>
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    83
      Header add "X-Robots-Tag" "noindex, nofollow"
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    84
    </IfModule>
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
    85
21
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    86
    ScriptAliasMatch  ^/(.*)  /srv/hg/hgweb.cgi/\$1
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    87
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    88
    <Directory "/srv/hg/">
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    89
        Options +ExecCGI
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    90
        Require all granted
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    91
        AllowOverride None
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    92
        AddHandler cgi-script .cgi
43
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    93
        <IfModule mod_cgi.c>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    94
          CGIScriptTimeout 1s
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    95
        </IfModule>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    96
        <IfModule mod_cgid.c>
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    97
          CGIDScriptTimeout 1s
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
    98
        </IfModule>
21
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
    99
    </Directory>
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
   100
  </VirtualHost>
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
   101
</IfModule>
10
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
EOF
6a6933bfce58 Added test Apache 2 virtual host.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
15
3f7b202af99e An attempt to host HG via Apache.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 13
diff changeset
   104
a2ensite hg
43
6679199ee208 Lowered CGI scripts timeouts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 41
diff changeset
   105
a2enmod cgid
41
af1919427dfc Discourage bots indexing HG: Python is slow and cause OOM kills...
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
   106
a2enmod headers
21
52f40bd9e114 Integrated Lets Encrypt into all sites.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 17
diff changeset
   107
service apache2 reload