Yotta is basic http file server. It serves my personal blog dollberg.xyz.
It's main purpose is though to build an epoll based event loop with all kinds of gimmicks. In addition, it's a performant file server that doesn't need 50 lines of config.
Current HTTP Features:
- If-Modified-Since
- (Essential) Range Support
Event loop:
- Edge triggered
epoll
loop - Connections loadbalanced via
REUSEPORT
to worker processes - Timers via
timerfd
- Files are served directly via
sendfile
- Zero down time upgrades (same principle as nginx)
CMake is being use as a build system.
mkdir build
cd build
cmake ../src
make
Will build you the yotta
binary.
Run the binary in the directory you want to serve, you shall pass the address and port to listen on:
yotta -h :: -p 10000
To listen on all interfaces and port 10000
.
See upgrade_yotta.sh
and yotta.unit
for usage of the pid file (-i
) option, daemonizing (-g
) option and how to upgrade.
There are a couple of unit tests which can be run via make test
in the build folder in addition to integration tests in src/test
.