NSLU2-Linux
view · edit · print · history

(redirected from Unslung.AppWeb)

AppWeb is a very fast, small-footprint, standards-based, portable server, specifically developed for use by embedded devices and applications. More information can be had on http://www.appwebserver.org/


Looking for up-to-date ipkg package of AppWeb!

The newest stable version of AppWeb is 2.4. Could someone please upadate the install-package to this version? Thanks in advance.


I don't like the bug of 2.1.0-1: Please could anybody can explain how to install an older working version of AppWeb. I tried everything with ipkg (-force-downgrade etc.) but nothing worked.


Bug in 2.1.0-1

I installed this in march so for people who just started the ipkg install, this bug will cause indexes not to work. For example instead of seeing index.html after starting you will get a 404 error. This error is found in this link http://www.appwebserver.org/forum/viewtopic.php?t=597&highlight=index If you want appweb you need to install the previous version.

A workaround is to set the 404 to the default (index) page ! Put the line
ErrorDocument(approve sites) 404 /default.html in the appWeb.conf and this page is shown if no page is found (and when someone does not add a page in the url).

How to install AppWeb

Install Openssl if not already installed.

Install Openssh if not already installed.

Install AppWeb

After the install you will want to modify the configuration file to your preference. It should be at /opt/etc/appWeb.conf [Edit: it's /opt/var/appWeb/appWeb.conf now]

Some things you will probably want to change is:

  • Server Name.
  • The Port that appWeb listens on, by default it is 7777.

Note: The management pages for the NSLU2 are on a different web server that is set to port 80. That will need to be changed before you set appWeb to port 80.

But I would start the server with the default setting to make sure it works.

Run /opt/etc/init.d/S81appweb to restart AppWeb

You can look in the ./share/hdd/conf/opt/var/appWeb/logs/error.log file to see if there are any errors.

To see if the server started you can do ps to list the processes that are running.

You should see a line like:

900 ttyp0 root 3716 R /opt/sbin/appWeb -f etc/appWeb.conf

If appWeb is not there, then there was an error and you will need to check the error.log file to see what failed.

To see if you can connect to the server you can type in ipaddress_of_nslu2:7777 (for the default port) in a web browser.

For Example: 192.168.1.77:7777

You should get a page that says:

Mbedthis AppWeb Sample Home Page
If you installed the Documentation, click here to view it.

One thing that will stop it from running is not having the Openssl and Openssh packages installed. If you don't want to use these packages you will need to edit the appWeb.conf file and comment out the entries for Openssl and Openssh.

Setting AppWeb to port 80

First you have to change the port of the current web server that does the NSLU2 management pages.

Bring up in a browser the NSLU2 management pages. By default it is 192.168.1.77.
Click on Administration (it may ask you for the username and password)
On the submenu under Administration click on System
Scroll all the way down to the bottom of the page to the Location section.
Under the second check box (Enable UPnP? Support) there is a box with the number 80 in it. Change that number to something like 8080 so the management pages will be on port 8080. So now when you need to pull up the management pages you need to type in something like this: 192.168.1.77:8080
Click on the Save button at the bottom of the page. It will make the change immediately so if you try to click on anything else you will get an error from the browser. Just go to the url that you typed in to get to these pages and put :8080 after the ip address and you should be working again.

Now to change the AppWeb port

Telnet into your box.
Go to the /opt/etc directory(cd /opt/etc)
Edit the appWeb.conf file.
Scroll down a bit till you find a line that says: Listen 7777
Change the 7777 to 80
Save the file and exit.
Now restart appWeb by typing in: /opt/etc/init.d/S81appweb
Now go back to your browser and type in the ip address of your slug without anything after the last number (192.168.1.77)

You should see the same page as you saw above when installing appWeb.

If you get a browser error you may need to make a few more changes.

Try rebooting the NSLU2 first before going through the following.

There seams to be a problem with not having enough entropy. I really don't know what the means but here is a way to get around the problem.

Go to /opt/etc/init.d
Edit a file called S81appweb (this is the file that starts appweb)

This is how it should look now:

#!/bin/sh
if [ -n "`pidof appWeb`" ]; then
    /bin/killall appWeb 2>/dev/null
fi
/opt/sbin/appWeb -f etc/appWeb.conf &

You need to add two lines to this file so it looks like this:

#!/bin/sh
if [ -n "`pidof appWeb`" ]; then
    /bin/killall appWeb 2>/dev/null
fi
rm /dev/random
ln -s /dev/urandom /dev/random
/opt/sbin/appWeb -f etc/appWeb.conf &

Save and Exit the file.

Now type in /opt/etc/init.d/S81appweb to restart appWeb.

Go back to your browser and try to get to the appWeb server again.

If it still doesn't work I would restart the NSLU2 and try again.

It works for me so if you have problems you may want to Ask for help. There could be other issues that may be stopping appWeb from working.


Experience

I found that the httpPassword utility doesn't work because some libraries have been missed from the ipkg (namely libmpr.so). I have only got a native build environment working, and I've hit a dead end. I got as far as:

  • followed setting up the native compilation environment for unslung packages
  • did make appweb
  • build failed since downloaded source contains two binary files (bldout and genDepend) which need to be deleted so that the bootstrap configure builds them natively.
  • did make appweb
  • build failed since /dev/null was read only on unslung 3.17. Made it a+rw.
  • did make appweb
  • got a lot further then hit a funny problem with busybox in some make files. I isolated it within an example makefile rules.mk which has a line:
 @echo "    rm -f $(CLEANIT)" | $(BLDOUT)

which is expanding to:

 @echo "rm -f ./bldout.o ./getopt.o *.a *.o *.lo *.tmp *.bak core *.out *.map *.sym" | bldout

which would cause busybox to report as follows:

 BusyBox v0.60.4 (2004.05.28-07:40+0000) multi-call binary

 Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use, and BusyBox
        will act like whatever it was invoked as.

 Currently defined functions:
        [, ash, basename, busybox, cat, chmod, chown, cp, dd, df, dmesg,
        echo, free, halt, hostname, id, ifconfig, insmod, kill, killall,
        klogd, ln, ls, lsmod, mkdir, mknod, mkswap, mount, mv, pidof,
        ping, ps, pwd, reboot, rm, rmmod, route, sh, sleep, swapoff, swapon,
        sync, syslogd, tar, test, touch, umount, vi

This is because before the binary version of bldout is created a symlink is created to the busybox 'cat'. But, in doing so, busybox can't tell what binary is being called and complains. Ignore the messages and let it continue, they will clear up eventually when the binary version of bldout has completed.

I have managed to build appWeb natively and also built it with PHP and run some scripts with a bit of hacking around, although the php libs are not properly located and more complicated scripts fail.

I have not managed to get appweb 2.0.x building and running properly yet.

For more information look at the mailing list archives where I documented the progress in some detail.


Workaround to create httpPassword files for Windows-users

Download Windows version of AppWeb from http://www.appwebserver.org/downloads/appWeb/index.html

Unzip file

Run setup and install AppWeb within Windows

Look for file httpPassword.exe within program files directory

Create httpPassword-files as needed

Transfer files to AppWeb installation directory (e.g. /opt/var/appWeb)

Problems integrating PHP into appWeb

In certin contexts functions contained in the PHP-Expansions can not be found (e.g. sem_get() results in 'Fatal: Call to undefined function...')

Workaround:

appWeb can not find the php.ini file. Therewith the setting in the php.ini have no effect. Create a link in the appWeb working directory to the php.ini

ln -s /opt/etc/php.ini /opt/var/appWeb/php.ini

Restart appWeb.

view · edit · print · history · Last edited by mafo.
Based on work by mafo, Tobias Lochner, Harald Biehl, Jens Prager, etherkidd, OliverJ, Paul, MattMcNeill, JefferyS, and bobtm.
Originally by rwhitby.
Page last modified on October 07, 2008, at 05:56 PM