top | item 43686631

(no title)

tyzoid | 10 months ago

My usual go-to for a quick static server is:

python -m http.server

But variations exist for a lot of languages. Php has one built-in too

discuss

order

nodesocket|10 months ago

I use python for serving my local static site development with this custom little bash wrapper script I wrote:

    #!/usr/bin/env bash
    set -e; [[ $TRACE ]] && set -x

    port=8080
    dir="."

    if [[ "$1" == "-h" || "$1" == "--help" ]]; then
        echo "usage: http-server [PORT] [DIRECTORY]"
        echo "  PORT      Port to listen on (default: 8080)"
        echo "  DIRECTORY Directory to serve (default: .)"
        exit 0
    fi

    if [ -n "$1" ]; then
        port=$1
    fi

    if [[ -n "$2" ]]; then
        dir=$2
    fi

    python3 -m http.server --directory "$dir" --protocol HTTP/1.1 "$port"

Y_Y|10 months ago

From the people who brought you Useless Use of Cat, here's our newest innovation: Useless Use of Bash!

That whole script could just be the last line! Maybe you could add defaults like

    "${port:-8080}"

zikduruqe|10 months ago

Don't forget bash.

    #!/bin/bash

    while :; do nc -l 80 < index.html; done

xmodem|10 months ago

I was about to down-vote you, but that would be unfair, as this has roughly the typical level of correctness of most bash scripts.

creatonez|10 months ago

For anyone baffled by this: This works because HTTP/0.9 (just called "HTTP" at the time) worked in an extremely simple way, and browsers mostly retained compatibility for this.

HTTP/0.9 web browser sends:

    GET /
Netcat sends:

    <!doctype html>
    ...
Nowadays a browser will send `GET / HTTP/1.1` and then a bunch of headers, which a true HTTP/0.9 server may be able to filter out and ignore, but of course this script will just send the document and the browser will still assume it's a legacy server.

vFunct|10 months ago

This is hilarious

red_admiral|10 months ago

Python is my go-to method too, altough the config file approach from this project looks exciting.

(I'm sure if I dug in the http.server documentation I could find all those options too.)