Project

General

Profile

Actions

Bug #1040

closed

Investigate alternatives to Monkey as a web server

Added by Hammel about 1 year ago. Updated about 1 year ago.

Status:
Closed
Priority:
Immediate
Assignee:
Category:
Web Server
Target version:
Start date:
23 Sep 2023
Due date:
% Done:

100%

Estimated time:
Severity:
02 - High

Description

Monkey doesn't build with the latest toolchain and it's website doesn't show much activity in awhile. It would be better to use one of the web servers that Buildroot supports.

It needs to be able to handle the following.

  • Server side PHP cgi
  • Serve up javascript files (should be transparent)
  • Support external Basic Auth username/password file
See

Related issues

Related to piboxwww - Feature #1013: Configure Busybox httpd for use with piboxwwwClosedHammel31 Jul 2023

Actions
Related to piboxwww - Feature #1014: Configure lighttpd for use with piboxwwwClosedHammel31 Jul 2023

Actions
Actions #1

Updated by Hammel about 1 year ago

  • Category set to Web Server
  • Assignee set to Hammel
  • Priority changed from Normal to Immediate
  • Target version set to 3.0 - Corrino
  • Severity changed from 03 - Medium to 02 - High
Actions #2

Updated by Hammel about 1 year ago

  • Description updated (diff)
Actions #3

Updated by Hammel about 1 year ago

  • Subject changed from Investigate Mongoose as a replacement to Monkey to Investigate alternatives to Monkey as a web server
  • Description updated (diff)

Mongoose

References

Pros

  • Embeddable in C applications

Cons

  • Not part of Buildroot
  • Can be proprietary but has open source version
Actions #4

Updated by Hammel about 1 year ago

Busybox HTTPD

References

Pros

  • Very small binary/runtime
  • Supports Basic Auth
  • Supports CGI via php-cgi

Cons

  • No default conf file.
    • Must read source to understand server configuration
  • Requires an init script to be written for it.
  • Must pass port number on command line or at compile time (re: not a configurable item)
  • Not much recent activity
  • Doesn't support external basic auth file - changes to authentication must be stored in the httpd.conf file with the rest of the configuration.
Actions #5

Updated by Hammel about 1 year ago

  • Related to Feature #1013: Configure Busybox httpd for use with piboxwww added
Actions #6

Updated by Hammel about 1 year ago

lighttpd - WINNER

References

Pros

  • actively developed
  • Buildroot installation has sample conf files.
    • Includes default init script
  • Server port is runtime configuration option
  • Server user/group is runtime configuration option
  • Can disable logging in conf file

Cons

  • Configuration is more complex than Monkey.
    • Multiple conf files
    • Multiple modules for features

Summary

I was able to bring this one up very quickly and it was serving my PHP and JS files. Because it uses a slightly different config for htdigest I need to update both it's config and the code for piboxwww to allow authentication to work properly. But this is all very doable. I can also remove the monkey opkg dependency on piboxwww since lighttpd will be included in the dev system now.

So lighttpd will be the replacement for monkey.

Actions #7

Updated by Hammel about 1 year ago

hiawatha

References

Pros

  • Has some recent activity
  • Per-directory authentication files

Cons

  • Big jump between latest release and recent releases in same release cycle (11.x)
  • Configuration is more complex than Monkey, but not as bad as lighttpd.
Actions #8

Updated by Hammel about 1 year ago

  • Description updated (diff)

thttpd

References

Pros

  • External auth files per directory, might not support site wide auth file.

Cons

  • Not actively maintained
  • Configuration is compile time, via a header file.
Actions #9

Updated by Hammel about 1 year ago

  • Description updated (diff)
Actions #10

Updated by Hammel about 1 year ago

  • Related to Feature #1014: Configure lighttpd for use with piboxwww added
Actions #11

Updated by Hammel about 1 year ago

lighttpd seems the best choice so far. I've modified the default config script to disable logging and various other things, set the port to 2001 and manually installed the piboxwww files because the opkg install depends on the Monkey opkg. That will have to be fixed if we go this route.

After all that, I have the front page attempted to be displayed, but the action icons are missing. So I need to enable error and debug logging to see if that tells me anything.

Actions #12

Updated by Hammel about 1 year ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 40
Actions #13

Updated by Hammel about 1 year ago

  • Status changed from In Progress to Closed
  • % Done changed from 40 to 100
Actions

Also available in: Atom PDF