Difference between revisions of "Lighttpd"

From ArmadeusWiki
Jump to: navigation, search
m (Create a Dummy page)
(Configuration)
Line 70: Line 70:
 
  $ echo "127.0.0.1 `cat $ARMADEUS_ROOTFS_DIR/etc/hostname`" >> $ARMADEUS_ROOTFS_DIR/etc/hosts
 
  $ echo "127.0.0.1 `cat $ARMADEUS_ROOTFS_DIR/etc/hostname`" >> $ARMADEUS_ROOTFS_DIR/etc/hosts
 
</pre>
 
</pre>
 
=== Create the access log directory ===
 
 
*By default, Boa logs will be stored in ''/var/log/boa/''. If you didn't not change this setting, you will need to perform the following :
 
<pre class="host">
 
$ ls -l $ARMADEUS_ROOTFS_DIR/var/log
 
</pre>
 
 
*If it's a link to ''/tmp'', then:
 
<pre class="host">
 
$ rm -f $ARMADEUS_ROOTFS_DIR/var/log && mkdir $ARMADEUS_ROOTFS_DIR/var/log/
 
</pre>
 
 
*Then, create the boa directory :
 
<pre class="host">
 
$ mkdir $ARMADEUS_ROOTFS_DIR/var/log/boa
 
</pre>
 
 
-----
 
Why shoud I delete the symbolink link? <br>
 
This is because during the filesystem creation, mkfs.jffs2 will keep the link from ''/var/log'' to ''/tmp'' on the board.
 
Thus, once on the board, you will have:
 
<pre class=apf>
 
# ls -l /var/log
 
lrwxrwxrwx    1 root    root            4 Apr 15  2007 /var/log -> /tmp
 
</pre>
 
 
With such a behavior, even if you fill the directory ''$ARMADEUS_ROOTFS_DIR/var/log/'' on your host
 
(which actually fill ''/tmp'' on your host), nothing will be saved once the filesystem will be flashed on your board.
 
  
 
== Test the result ==
 
== Test the result ==

Revision as of 15:58, 14 April 2016

How-to install and configure the Lighttpd Web server on your Armadeus board.

Lighttpd.png


Installation

  • Launch Buildroot's configuration:
 $ make menuconfig
  • Select:
...
Target packages  --->
        ...
    [*] Networking applications  --->
            ...
            [*] lighttpd
            [ ]   openssl support
            [ ]   zlib support
            [ ]   bzip2 support
            [ ]   pcre support
            [ ]   webdav support
  • Save the configuration
  • Then build the binaries and the default filesystem. This will be useful later to perform the configuration:
 $ make

Configuration

Generalities

To apply a permanent configuration, be sure not to change anything on the board filesystem: that would be erased the next time you reflash the rootfs.
Instead, do all changes on the filesystem "image" located on your Host PC in buildroot/output/target/.

The Lighttpd configuration file is located in /etc/lighttpd.conf on the board; this means that to permanently change the configuration, you need to edit the file buildroot/output/target/etc/lighttpd.conf on the Host.

There is an envt variable to easily access the target directory:

 $ make shell_env && source armadeus_env.sh

Then the directory can be accessed with $ARMADEUS_ROOTFS_DIR.

Create a Dummy page

  • By default, DocumentRoot is set to /var/www, so let's add a dummy file here to test our configuration:
 $ mkdir -p $ARMADEUS_ROOTFS_DIR/var/www
 $ vim $ARMADEUS_ROOTFS_DIR/var/www/index.html
  • And fill the file with:
<html>
    <head>
        <title> Welcome on the Armadeus Board </title>
    </head>
    <body>
        <nowiki><h1> Welcome on the Armadeus Board </h1></nowiki>
    </body>
</html>

Enable hostname resolution

  • Boa has to be able to resolve the hostname to work, so let's do:
 $ echo "127.0.0.1 `cat $ARMADEUS_ROOTFS_DIR/etc/hostname`" >> $ARMADEUS_ROOTFS_DIR/etc/hosts

Test the result

  • Create the final rootfs:
$ make
 # boa
  • To access your web page, use a browser:
http://<your board's IP Address>/

You should see the page !
If not, check the file /var/log/lighttpd/error_log on your board

Boa welcome.png

Working with cgi

  • First, check the lighttpd.conf file. Once more, you should use the one located on your host before changing anything.
$ vi $ARMADEUS_ROOTFS_DIR/etc/lighttpd.conf
  • Be sure to have an uncommented line like this:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  • Now, let's write a dummy cgi:
$ mkdir $ARMADEUS_ROOTFS_DIR/usr/lib/cgi-bin
$ vim $ARMADEUS_ROOTFS_DIR/usr/lib/cgi-bin/get_ipconfig.sh
  • And add the following :
#!/bin/sh
echo -e "Content-type: text/html\r\n\r\n";
echo -e `/sbin/ifconfig  eth0 | grep 'inet addr'`;

The script have to be executable:

$ chmod a+x $ARMADEUS_ROOTFS_DIR/usr/lib/cgi-bin/get_ipconfig.sh
  • Then change your index.html page to add a link to the cgi:
$ vi $ARMADEUS_ROOTFS_DIR/var/www/index.html
<html>
    <head>
        <title> Welcome on the Armadeus Board </title>
    </head>
    <body>
        <h1> Welcome on the Armadeus Board </h1>
        <br> <br>
        <a href=http://<Your board IP Address>/cgi-bin/get_ipconfig.sh> Get the board ip config </a>
        <br>
    </body>
</html>
  • Create the new rootfs:
$ make

You can now access to the new web page and click on the cgi link !

Links