Description: Cherokee is a flexible, very fast, lightweight Web server. It is implemented entirely in C, and has no dependencies beyond a standard C library. It is embeddable and extensible with plug-ins. It supports on-the-fly configuration by reading files or strings, TLS/SSL (via GNUTLS or OpenSSL), virtual hosts, authentication, cache friendly features, PHP, custom error management, and much more.
Keywords: cherokee web server httpd http

## Index → Getting started

## Requirements

### Hardware

Cherokee is very light, completely modular and it can be tailored to your specific needs. As such, disk requirements will vary depending on the options selected for the building process. A static build for embedded devices can occupy as little as 200KB, give or take.

In terms of processing power, it has been known to work with as little as 133Mhz ARM processors. It could very well work on something smaller, but we haven’t really had the chance to try it out.

### Software

Cherokee has no dependencies besides a standard libc. Everything else is optional. Obviously anything beyond serving mere static content must be available for Cherokee to correctly execute the task. This means you will need PHP if you want Cherokee to serve PHP dynamic content, the rrdtool package if you intend to collect statistics to render usage graphs, MySQL or LDAP development libraries if you want built-in support for these as authentication mechanisms for protected content, ffmpeg development libraries to build the streaming module, and so on.

If you intend to build Cherokee from source however, you will need several tools and libraries.

- Building tools: Cherokee is built on top of the autoconf and automake tools, hence your system has to have some basic system programs like an sh shell, make and an ANSI C compiler. We have compiled Cherokee in various platforms with different compilers, so it shouldn’t be a problem.

- Python: Cherokee has an administration web interface written in Python, so if you intend to use cherokee-admin you will need this. For disk space constrained environments this won’t be an issue since you would probably want to make a minimal install in your destination host, preconfigured elsewhere. This programming language is also used to generate the documentation, and Cherokee includes a number of Quality Assurance tests written in it as well. If you are planning to contribute code into the project, or you just want to test everything is working in the server, you will need a Python interpreter installed on your system. The main Python releases targeted by our developers are 2.4, 2.5 and 2.6. Anything other than that is not guaranteed to work at the moment.

- If you are building Cherokee in a non-POSIX compliant platform such as Windows, you will need a POSIX threads implementation. Although you can disable the usage at compilation time and do without this, it will have a dramatic impact in scalability.

- If you want to make a build that serves secure content, you will need TLS libraries. Cherokee ships with support for the OpenSSL backend, but the architecture is completely modular and any other backend can be implemented. You need to have the development files of the chosen backend libraries in order to build a package that suits your needs.