Mercurial
This example install mercurial as a web service.
Install
apt install mercurial uwsgi-core uwsgi-plugins-all
UWSGI
Test
Application
foobar.py
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
Server
uwsgi --plugins http,python3 --http :9090 --wsgi-file foobar.py
Client
$ telnet 127.0.0.1 9090 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.0 200 OK Content-Type: text/html Hello World
Run it
CGI
/var/www/cgi-bin/hgweb.wsgi
config = b"/var/www/repos/WWW.EXAMPLE.COM/hgweb.config" import os os.environ["HGENCODING"] = "UTF-8" import cgitb; cgitb.enable() from mercurial import demandimport; demandimport.enable() from mercurial.hgweb import hgweb application = hgweb(config)
CONF
/var/www/repos/WWW.EXAMPLE.COM/hgweb.config
[collections] /var/www/repos/WWW.EXAMPLE.COM = /var/www/repos/WWW.EXAMPLE.COM [web] staticurl = /static/ allow_archive = gz
RUN
http
#! /bin/bash #LOG exec 2>&1 ulimit -l unlimited ulimit -i unlimited ulimit -q unlimited ulimit -n 8192 ulimit -aH #RUN export TZ="UTC" exec /bin/uwsgi --die-on-term --plugins http,python3 --http :9090 --master --processes 4 --threads 2 --uid=www-data --gid=www-data --wsgi-file /var/www/cgi-bin/hgweb.wsgi
UWSGI
#! /bin/bash #LOG exec 2>&1 ulimit -l unlimited ulimit -i unlimited ulimit -q unlimited ulimit -n 8192 ulimit -aH #RUN export TZ="UTC" mkdir -p /run/uwsgi chown -R www-data:www-data /run/uwsgi exec /bin/uwsgi --die-on-term --plugins python3 --uwsgi-socket /run/uwsgi/hgweb.sock --master --processes 4 --threads 2 --uid=www-data --gid=www-data --wsgi-file /var/www/cgi-bin/hgweb.wsgi
NGINX
... location / { uwsgi_pass unix:/run/uwsgi/hgweb.sock; include uwsgi_params; limit_except GET HEAD { auth_basic "Login"; auth_basic_user_file /var/www/private/htpasswd; } } location /static/ { alias /usr/lib/python3/dist-packages/mercurial/templates/static/; expires 30d; } ...