Tag: jetty

  • Raspberry Pi – Part III – Setting up Jetty

    The Raspberry Pi is a device that has so many options open: You can extend the hardware. You can extend the software. I choose to tackle extending the software to start, so I can get the experience that I want setup, and running on the device.  The experience I am after is the web interface to control my Raspberry Pi.

    For a Java developer, I conclude that a lightweight interface hosted on a Jetty server is probably easiest.  The Jetty server is a 12.9M download and 30M expanded. It’s also used frequently in devices, and why reinvent the wheel, use the approach that Industry is using.  Jetty is designed for a small memory footprint.   (I did consider using Tomcat Embedded, and came to the conclusion I’d probably want to many features.)

    I downloaded the Jetty archive to my local user’s directory. Note, since I want to just use jetty.zip I’m renaming the output file with wget -O.

    wget -O jetty.zip http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.10.v20150310.zip

    I make a directory for the application server, and move over jetty.zip to that directory.

    sudo mkdir -p /opt/jetty
    sudo mv jetty.zip /opt/jetty

    Next I launched into the sudoers root shell, and extract the Jetty archive.  I decided to move it into the runtime folder, so I can have an easy place to backup from.  (Remove the extra space from the .zip)

    sudo -s 
    cd /opt/jetty
    unzip jetty.zip
    mv jetty-distribution-9.2.10.v20150310/ runtime
    rm jetty.zip

    Next, I wanted to setup Jetty as a service, and check that Jetty starts

    cp runtime/bin/jetty.sh /etc/init.d/jetty
    echo JETTY_HOME=`pwd`/runtime > /etc/default/jetty
    service jetty start
    Starting Jetty: . . . OK Sun Apr 12 15:38:40 UTC 2015
    service jetty stop
    Stopping Jetty: OK

    Next, I want to automatically start Jetty with the right runlevels

    update-rc.d jetty defaults

    I want to configure Jetty to run with a set user jetty.

    mkdir -p /opt/jetty/web/bbq
    mkdir -p /opt/jetty/temp
    useradd --user-group --shell /bin/false --home-dir /opt/jetty/temp jetty

    There is a base configuration that needs to be setup the base site.

    cd /opt/jetty/web/bbq
    java -jar /opt/jetty/runtime/start.jar --add-to-start=deploy,http,logging

    Next, edit the default port value.

    vi start.ini
    
    ## HTTP port to listen on
    jetty.port=80

    Finally, I wrap the configuration of the jetty service and app.

    chown -R jetty:jetty /opt/jetty
    echo "JETTY_HOME=/opt/jetty/runtime" > /etc/default/jetty
    echo "JETTY_BASE=/opt/jetty/web/bbq" >> /etc/default/jetty
    echo "TMPDIR=/opt/jetty/temp" >> /etc/default/jetty

    A good check is to look at service jetty status, and confirm the settings, and then restart your Raspberry Pi. I did find that the startup time was significantly effected by the additional service.  ( +25 seconds from the original 15)

    Navigate to http://192.168.1.200/ (or whatever IP you have used) and confirm the page loads Jetty.  If you see a 404, you’re off and ready for the next phase. (as am I) 🙂

    Jetty Starting Point
    Jetty Starting Point