How to run CGI "hello world" with python http.server
I created a complete example for a friend. It is a complete demo you can run with 8 simple copy-paste ready lines of code. Enjoy.
echo -e "\n\n Usage: after running this script, visit http://localhost:8000/cgi-bin/hello \n\n"
mkdir /tmp/cgi-bin/
cat > /tmp/cgi-bin/hello <<EOF
#!/bin/bash
echo -e "Content-Type: text/plain\n\n"; date; echo; env
EOF
chmod +x /tmp/cgi-bin/hello
(cd /tmp; python3 -m http.server --cgi 8000)
From the http.server
docs:
CGIHTTPRequestHandler
can be enabled in the command line by passing the--cgi
option:
$ python3 -m http.server --bind localhost --cgi 8000
Put your script into cgi_directories
:
This defaults to
['/cgi-bin', '/htbin']
and describes directories to treat as containing CGI scripts.
Open in the browser:
$ python -mwebbrowser http://localhost:8000/cgi-bin/hello.py
where hello.py
:
#!/usr/bin/env python3
print("Content-Type: text/html\n")
print("<!doctype html><title>Hello</title><h2>hello world</h2>")
I had to make it executable on POSIX: chmod +x cgi-bin/hello.py
.