- Why is Embedthis Software supporting and distributing the GoAhead WebServer?
- How does the GoAhead WebServer compare with Appweb?
- Can I disable features to minimize memory footprint at run-time?
- How can I upload large files?
How does the GoAhead WebServer compare with Appweb?
The GoAhead WebServer is a simple, compact web server that has been widely ported to many embedded operating systems. Appweb is faster and more powerful — but requires more memory. If you need a very simple, low end web server and have little memory available, the GoAhead WebServer is ideal. If you need higher performance and extended security, then Appweb is the right choice.
Can I disable features to minimize memory footprint at run-time?
Yes. GoAhead has build-time configuration settings to select required features and minimize memory footprint. See Building from Source for details of the configuration options.
You need to increase the LimitRequestBody limit in the goahead.conf file. This imposes a maximum upload file size. Some samples have a MAX_FILE_SIZE input field in the HTML form. This however, is just a hint to the browser, and is only processed by some browsers.
Yes. When GoAhead is built from source, a single bld.h header controls exactly what features and modules are built into the server. For example, if you don't require SSL support, and you wish to minimize memory footprint, you can run:
./configure --without ssl
How can I trouble-shoot with trace?
Run goahead or winGoAhead with the logging switch "-l". The logging switch takes the following parameters:
goahead -l logName[:logLevel][.maxSize]
Where logLevel is a number between 0 and 9. Zero is the least verbose. To debug HTTP requests, a level of 6 provides the detail of all the request / response exchanges. MaxSize is the maximum size of the log file in MB. When the maximum size is exceeded, the log file will be rotated to logName.old and a new log file will be started.
GoAhead 3 has about 115K of code. For a minimal footprint on GoAhead, use:
Things to consider when building small:
- Don't build DEBUG. Use: ./configure -release
- Use a small C-Library such as uClibc on embedded Linux systems
The GoAhead configure command has switches to specify the build system and the target system that will host GoAhead. For example:
./configure --platform vxworks-arm
When cross compiling, you also need to tell configure about your cross-compilation tool chain. This means the names of your compiler, library archiver, and other utilities and flags. The configure program listens to the settings of the AR, CC, NM, RANLIB, STRIP, CFLAGS, IFLAGS and LDFLAGS environment variables and will pass their values into the build system. These will be used to define the cross-compilation tool chain. You can also specify an alternate build tool chain by using the same variables but with a BUILD_ prefix. For example:
DIR=/path/to/cross-tools ; \ AR=$DIR/bin/ar.exe \ CC=$DIR/bin/cc.exe \ LD=$DIR/bin/cc.exe \ NM=$DIR/nm.exe \ RANLIB=$DIR/ranlib.exe \ STRIP=$DIR/strip.exe \ CFLAGS="-I$DIR/include \ ./configure --debug --platform linux-arm
For more details, please read: Cross-Compiling in the MakeMe online documentation.
Need more help?
© Embedthis Software. All rights reserved.