Ever needed to quickly start a web server to check a few scripts you’ve been developing locally?
But loading files directly from disk causes a few issues: absolute URLs like
/mystyle.css don’t load correctly. And requesting any kind of assets via Ajax calls will fail in Chrome because of cross-origin security policies (scripts aren‘t allowed o load files from your local hard drive).
Here‘s three zero-configuration web servers that you can start on your local machine to run quick tests and experiments.
The classic: Python HTTP server
If you‘re on any Mac or Linux machine, then you’ve got Python installed. The web server that comes with the standard Python distribution has been an eternal favourite with web developers because you can serve the current directory with a single command:
python -m SimpleHTTPServer 8000
With Python 3 version, use this instead:
python3 -m http.server 8000
You’ll see Python print the port and you‘re good to go::
Serving HTTP on 0.0.0.0 port 8000
Open your browser and navigate to localhost:8000 to explore your web pages.
Chrome is your home
For those web developers who live inside Chrome, Web Server for Chrome embeds a web server inside your favourite web browser.
You’ll need to install Web Server for Chrome from the Chrome Extension Manager. The UI is definitely more confusing than a single Python command, it runs wherever desktop Chrome runs, which practically any machine you would think of doing web development on, so it might be easier to set up if you are on a Windows machine without Python installed.
If you’d like your web server to come in single binary you can install on Linux, Mac OS and Windows, try Caddy. It‘s open source and written in Go; you can download pre-compiled binaries for your system from the official website. Once you have the
caddy executable on your machine, go to the directory you want to serve and run
then navigate to
localhost:2015. When I tried it, Caddy complained about a low file descriptor limit for production web server, I was fine with that, since I only wanted to run it for development.
If you’d like to integrate the web server into your development environment further, take a look at my React book. You’ll learn how to set up a development server with automatic page reloads that integrates with asset compilation using webpack.