First of all, why Monkey http?

What is it?
From the monkey-project site:
"Monkey is a small, fast and lightweight open source Web Server for GNU/Linux. It has been designed with focus in embedded devices, therefore its scalable by nature having a low memory and CPU consumption and an excellent performance.

Monkey is properly supported on ARM, x86 and x64, being able to work in any architecture and device capable to run a Linux Kernel.


  • HTTP/1.1 compliant
  • Virtual Hosts
  • Asynchronous networking model (event-driven)
  • Indented configuration
  • Plugins Support
  • C API Interface
  • Other features through base plugins:
  • SSL
  • Security
  • Log writter
  • Directory Listing
  • Shell: Command line

How it Works internal architecture
Monkey uses an hybrid mechanism composed by a fixed number of threads being each one capable to attend thousands of clients thanks to the event-driven model based in asyncrhonous sockets.

The interaction between the scheduler and each worker thread is lock free, avoiding race conditions and exposing a huge performance compared to other available options. It also takes the most of the Linux Kernel to optimize the work using specific system calls based on zero-copy strategy."

Monkey has great performances as shown in this post by jeremymorgan

The Community
Monkey is catching up fast. There seems to be a lot of enthusiasm for the project, the documentation is poor but the team promises to make a complete documentation in short time.

Let's start
Now we are going to install the Monkey web server from scratch on a Raspbian wheezy operating system. Since the web server can be executed by a user without root privilegies we are going to make the installation as normal user.

Download the full source code
$ wget


Extract the tarball archive


move on the created directory


configure the build


run the make command to build the executables

The compiling process will end in about three minutes. Now you are ready to run your brand new web server.

Simply run it without install anything.

with the -D option the server will be backgrounded.
Now point your web browser to and that's it.

Next time I'll show to you how to do simple configuration of the server with authorization plugin and how to run cgi scripts.