<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dafyddg</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dafyddg"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/Dafyddg"/>
	<updated>2026-04-24T11:00:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=17001</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=17001"/>
		<updated>2011-06-19T14:31:11Z</updated>

		<summary type="html">&lt;p&gt;Dafyddg: /* Add files to the web directory: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
Update: Replace this older method by installing Lighty (lighttpd) from the Optware section of Preware.&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Python on CGI, see section below.&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update: The current methods of starting and stopping Lighty (lighttpd) are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;start mobi.optware.lighttpd&lt;br /&gt;
stop mobi.optware.lighttpd&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It may be convenient to use a simple shell script for starting, stopping and restarting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
# lighty.sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;start&amp;quot; ]&lt;br /&gt;
then    start mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;stop&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;restart&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd&lt;br /&gt;
        start mobi.optware.lighttpd&lt;br /&gt;
else    echo &amp;quot;Instruction is missing or incorrect.&amp;quot;&lt;br /&gt;
        echo &amp;quot;Usage: lighty start|stop&amp;quot;; exit&lt;br /&gt;
fi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update: The default home directory defined in the conf file is now&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/media/internal/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, it useful to create subdirectories cgi-bin (for CGI scripts) and htdocs (for HTML documents). (See the Python section below for the relevant conf file tweaks.)&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FrankenPre webos 2.1 gps.php needs the following (getCurrentPosition different output for webOS 2.0+?):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
`luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f5,6 | sed -r 's/[^-\.0-9,]//g'`&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tweaking for CGI with Python =&lt;br /&gt;
&lt;br /&gt;
== Installation and tweaks ==&lt;br /&gt;
&lt;br /&gt;
Install python25 and cgi module from [[Optware | Optware ]] following the example on the Optware page, and creat softlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o rw,remount /&lt;br /&gt;
ipkg-opt install python25&lt;br /&gt;
ipkg-opt install python25 cgi&lt;br /&gt;
mount -o ro,remount /&lt;br /&gt;
ln -sf /var/opt/bin/python2.5 /usr/bin/python&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add directories to /media/internal/www to conform to more-or-less standard practice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mkdir /media/internal/www/htdocs&lt;br /&gt;
mkdir /media/internal/www/cgi-bin&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweak /opt/etc/lighttpd/lighttpd.conf as follows:&lt;br /&gt;
&lt;br /&gt;
1. Add to the server.modules list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                “mod_cgi”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change document root to match new directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;server.document-root        = “/media/internal/www/htdocs”&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Check that the Python extension is included in the non-static list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;static-file.exclude-extensions = ( “.fcgi”, “.php”, “.pl”, “.py”, “.rb”, “.sh” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Add cgi-bin alias:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;        “/cgi-bin/”    =&amp;gt; “/media/internal/www/cgi-bin/”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Add python path assignment (note python2.5 link defined above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cgi.assign    = ( “.py” =&amp;gt; “/usr/bin/python” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: HTML files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/htdocs. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;pythontest.html&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&amp;lt;h1 align=center&amp;gt;Test of Python on webOS&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;form method=post action=/cgi-bin/pythontest-cgi.py&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
JustType :) &amp;lt;input type=text name=instring size=100 maxlength=600 value=”“&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;input type=reset value=” Reset “&amp;gt;&amp;lt;input type=submit value=” SEND “&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: CGI files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/cgi-bin. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/usr/bin/python&lt;br /&gt;
# pythontest-cgi.py&lt;br /&gt;
&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb; cgitb.enable()&lt;br /&gt;
&lt;br /&gt;
fs = cgi.FieldStorage()&lt;br /&gt;
if fs.has_key('instring'):&lt;br /&gt;
    instring = fs['instring'].value&lt;br /&gt;
else:&lt;br /&gt;
    instring = ''&lt;br /&gt;
&lt;br /&gt;
def htmlinit():&lt;br /&gt;
    return 'Content-type: text/html\n\n'&lt;br /&gt;
&lt;br /&gt;
def htmlhead():&lt;br /&gt;
    head = '&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n&amp;lt;title&amp;gt;Test of Python on webOS&amp;lt;/title&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;'&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def htmltail():&lt;br /&gt;
    tail = '&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;
    return tail&lt;br /&gt;
&lt;br /&gt;
print htmlinit()&lt;br /&gt;
print htmlhead()&lt;br /&gt;
print instring&lt;br /&gt;
print htmltail()&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dafyddg</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16999</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16999"/>
		<updated>2011-06-19T14:28:08Z</updated>

		<summary type="html">&lt;p&gt;Dafyddg: /* Add files to the web directory: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
Update: Replace this older method by installing Lighty (lighttpd) from the Optware section of Preware.&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Python on CGI, see section below.&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update: The current methods of starting and stopping Lighty (lighttpd) are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;start mobi.optware.lighttpd&lt;br /&gt;
stop mobi.optware.lighttpd&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It may be convenient to use a simple shell script for starting, stopping and restarting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
# lighty.sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;start&amp;quot; ]&lt;br /&gt;
then    start mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;stop&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;restart&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd&lt;br /&gt;
        start mobi.optware.lighttpd&lt;br /&gt;
else    echo &amp;quot;Instruction is missing or incorrect.&amp;quot;&lt;br /&gt;
        echo &amp;quot;Usage: lighty start|stop&amp;quot;; exit&lt;br /&gt;
fi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update: It useful to create subdirectories cgi-bin (for CGI scripts) and htdocs (for HTML documents). See the Python section below for tweaks to the conf file.&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FrankenPre webos 2.1 gps.php needs the following (getCurrentPosition different output for webOS 2.0+?):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
`luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f5,6 | sed -r 's/[^-\.0-9,]//g'`&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tweaking for CGI with Python =&lt;br /&gt;
&lt;br /&gt;
== Installation and tweaks ==&lt;br /&gt;
&lt;br /&gt;
Install python25 and cgi module from [[Optware | Optware ]] following the example on the Optware page, and creat softlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o rw,remount /&lt;br /&gt;
ipkg-opt install python25&lt;br /&gt;
ipkg-opt install python25 cgi&lt;br /&gt;
mount -o ro,remount /&lt;br /&gt;
ln -sf /var/opt/bin/python2.5 /usr/bin/python&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add directories to /media/internal/www to conform to more-or-less standard practice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mkdir /media/internal/www/htdocs&lt;br /&gt;
mkdir /media/internal/www/cgi-bin&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweak /opt/etc/lighttpd/lighttpd.conf as follows:&lt;br /&gt;
&lt;br /&gt;
1. Add to the server.modules list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                “mod_cgi”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change document root to match new directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;server.document-root        = “/media/internal/www/htdocs”&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Check that the Python extension is included in the non-static list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;static-file.exclude-extensions = ( “.fcgi”, “.php”, “.pl”, “.py”, “.rb”, “.sh” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Add cgi-bin alias:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;        “/cgi-bin/”    =&amp;gt; “/media/internal/www/cgi-bin/”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Add python path assignment (note python2.5 link defined above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cgi.assign    = ( “.py” =&amp;gt; “/usr/bin/python” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: HTML files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/htdocs. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;pythontest.html&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&amp;lt;h1 align=center&amp;gt;Test of Python on webOS&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;form method=post action=/cgi-bin/pythontest-cgi.py&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
JustType :) &amp;lt;input type=text name=instring size=100 maxlength=600 value=”“&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;input type=reset value=” Reset “&amp;gt;&amp;lt;input type=submit value=” SEND “&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: CGI files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/cgi-bin. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/usr/bin/python&lt;br /&gt;
# pythontest-cgi.py&lt;br /&gt;
&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb; cgitb.enable()&lt;br /&gt;
&lt;br /&gt;
fs = cgi.FieldStorage()&lt;br /&gt;
if fs.has_key('instring'):&lt;br /&gt;
    instring = fs['instring'].value&lt;br /&gt;
else:&lt;br /&gt;
    instring = ''&lt;br /&gt;
&lt;br /&gt;
def htmlinit():&lt;br /&gt;
    return 'Content-type: text/html\n\n'&lt;br /&gt;
&lt;br /&gt;
def htmlhead():&lt;br /&gt;
    head = '&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n&amp;lt;title&amp;gt;Test of Python on webOS&amp;lt;/title&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;'&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def htmltail():&lt;br /&gt;
    tail = '&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;
    return tail&lt;br /&gt;
&lt;br /&gt;
print htmlinit()&lt;br /&gt;
print htmlhead()&lt;br /&gt;
print instring&lt;br /&gt;
print htmltail()&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dafyddg</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16997</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16997"/>
		<updated>2011-06-19T14:25:10Z</updated>

		<summary type="html">&lt;p&gt;Dafyddg: /* Tweak settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
Update: Replace this older method by installing Lighty (lighttpd) from the Optware section of Preware.&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Python on CGI, see section below.&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update: The current methods of starting and stopping Lighty (lighttpd) are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;start mobi.optware.lighttpd&lt;br /&gt;
stop mobi.optware.lighttpd&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It may be convenient to use a simple shell script for starting, stopping and restarting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
# lighty.sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;start&amp;quot; ]&lt;br /&gt;
then    start mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;stop&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd; exit&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;restart&amp;quot; ]&lt;br /&gt;
then    stop mobi.optware.lighttpd&lt;br /&gt;
        start mobi.optware.lighttpd&lt;br /&gt;
else    echo &amp;quot;Instruction is missing or incorrect.&amp;quot;&lt;br /&gt;
        echo &amp;quot;Usage: lighty start|stop&amp;quot;; exit&lt;br /&gt;
fi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FrankenPre webos 2.1 gps.php needs the following (getCurrentPosition different output for webOS 2.0+?):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
`luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f5,6 | sed -r 's/[^-\.0-9,]//g'`&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tweaking for CGI with Python =&lt;br /&gt;
&lt;br /&gt;
== Installation and tweaks ==&lt;br /&gt;
&lt;br /&gt;
Install python25 and cgi module from [[Optware | Optware ]] following the example on the Optware page, and creat softlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o rw,remount /&lt;br /&gt;
ipkg-opt install python25&lt;br /&gt;
ipkg-opt install python25 cgi&lt;br /&gt;
mount -o ro,remount /&lt;br /&gt;
ln -sf /var/opt/bin/python2.5 /usr/bin/python&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add directories to /media/internal/www to conform to more-or-less standard practice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mkdir /media/internal/www/htdocs&lt;br /&gt;
mkdir /media/internal/www/cgi-bin&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweak /opt/etc/lighttpd/lighttpd.conf as follows:&lt;br /&gt;
&lt;br /&gt;
1. Add to the server.modules list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                “mod_cgi”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change document root to match new directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;server.document-root        = “/media/internal/www/htdocs”&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Check that the Python extension is included in the non-static list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;static-file.exclude-extensions = ( “.fcgi”, “.php”, “.pl”, “.py”, “.rb”, “.sh” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Add cgi-bin alias:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;        “/cgi-bin/”    =&amp;gt; “/media/internal/www/cgi-bin/”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Add python path assignment (note python2.5 link defined above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cgi.assign    = ( “.py” =&amp;gt; “/usr/bin/python” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: HTML files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/htdocs. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;pythontest.html&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&amp;lt;h1 align=center&amp;gt;Test of Python on webOS&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;form method=post action=/cgi-bin/pythontest-cgi.py&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
JustType :) &amp;lt;input type=text name=instring size=100 maxlength=600 value=”“&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;input type=reset value=” Reset “&amp;gt;&amp;lt;input type=submit value=” SEND “&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: CGI files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/cgi-bin. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/usr/bin/python&lt;br /&gt;
# pythontest-cgi.py&lt;br /&gt;
&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb; cgitb.enable()&lt;br /&gt;
&lt;br /&gt;
fs = cgi.FieldStorage()&lt;br /&gt;
if fs.has_key('instring'):&lt;br /&gt;
    instring = fs['instring'].value&lt;br /&gt;
else:&lt;br /&gt;
    instring = ''&lt;br /&gt;
&lt;br /&gt;
def htmlinit():&lt;br /&gt;
    return 'Content-type: text/html\n\n'&lt;br /&gt;
&lt;br /&gt;
def htmlhead():&lt;br /&gt;
    head = '&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n&amp;lt;title&amp;gt;Test of Python on webOS&amp;lt;/title&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;'&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def htmltail():&lt;br /&gt;
    tail = '&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;
    return tail&lt;br /&gt;
&lt;br /&gt;
print htmlinit()&lt;br /&gt;
print htmlhead()&lt;br /&gt;
print instring&lt;br /&gt;
print htmltail()&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dafyddg</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16995</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16995"/>
		<updated>2011-06-19T14:13:12Z</updated>

		<summary type="html">&lt;p&gt;Dafyddg: /* Preliminaries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
Update: Replace this older method by installing Lighty (lighttpd) from the Optware section of Preware.&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FrankenPre webos 2.1 gps.php needs the following (getCurrentPosition different output for webOS 2.0+?):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
`luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f5,6 | sed -r 's/[^-\.0-9,]//g'`&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tweaking for CGI with Python =&lt;br /&gt;
&lt;br /&gt;
== Installation and tweaks ==&lt;br /&gt;
&lt;br /&gt;
Install python25 and cgi module from [[Optware | Optware ]] following the example on the Optware page, and creat softlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o rw,remount /&lt;br /&gt;
ipkg-opt install python25&lt;br /&gt;
ipkg-opt install python25 cgi&lt;br /&gt;
mount -o ro,remount /&lt;br /&gt;
ln -sf /var/opt/bin/python2.5 /usr/bin/python&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add directories to /media/internal/www to conform to more-or-less standard practice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mkdir /media/internal/www/htdocs&lt;br /&gt;
mkdir /media/internal/www/cgi-bin&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweak /opt/etc/lighttpd/lighttpd.conf as follows:&lt;br /&gt;
&lt;br /&gt;
1. Add to the server.modules list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                “mod_cgi”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change document root to match new directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;server.document-root        = “/media/internal/www/htdocs”&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Check that the Python extension is included in the non-static list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;static-file.exclude-extensions = ( “.fcgi”, “.php”, “.pl”, “.py”, “.rb”, “.sh” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Add cgi-bin alias:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;        “/cgi-bin/”    =&amp;gt; “/media/internal/www/cgi-bin/”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Add python path assignment (note python2.5 link defined above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cgi.assign    = ( “.py” =&amp;gt; “/usr/bin/python” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: HTML files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/htdocs. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;pythontest.html&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&amp;lt;h1 align=center&amp;gt;Test of Python on webOS&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;form method=post action=/cgi-bin/pythontest-cgi.py&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
JustType :) &amp;lt;input type=text name=instring size=100 maxlength=600 value=”“&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;input type=reset value=” Reset “&amp;gt;&amp;lt;input type=submit value=” SEND “&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: CGI files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/cgi-bin. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/usr/bin/python&lt;br /&gt;
# pythontest-cgi.py&lt;br /&gt;
&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb; cgitb.enable()&lt;br /&gt;
&lt;br /&gt;
fs = cgi.FieldStorage()&lt;br /&gt;
if fs.has_key('instring'):&lt;br /&gt;
    instring = fs['instring'].value&lt;br /&gt;
else:&lt;br /&gt;
    instring = ''&lt;br /&gt;
&lt;br /&gt;
def htmlinit():&lt;br /&gt;
    return 'Content-type: text/html\n\n'&lt;br /&gt;
&lt;br /&gt;
def htmlhead():&lt;br /&gt;
    head = '&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n&amp;lt;title&amp;gt;Test of Python on webOS&amp;lt;/title&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;'&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def htmltail():&lt;br /&gt;
    tail = '&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;
    return tail&lt;br /&gt;
&lt;br /&gt;
print htmlinit()&lt;br /&gt;
print htmlhead()&lt;br /&gt;
print instring&lt;br /&gt;
print htmltail()&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dafyddg</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16993</id>
		<title>Lighttpd</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Lighttpd&amp;diff=16993"/>
		<updated>2011-06-19T14:03:06Z</updated>

		<summary type="html">&lt;p&gt;Dafyddg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring the Lighttpd web server =&lt;br /&gt;
&lt;br /&gt;
== Preliminaries==&lt;br /&gt;
# Gain [[Portal:Accessing_Linux | access to Linux]] on your device.&lt;br /&gt;
# Setup the [[Next_steps | Optware Feed]].&lt;br /&gt;
# Open the root file system to read/write with rootfs_open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Lighttpd with PHP support ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ipkg-opt install lighttpd php-fcgi&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweak settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;vi /opt/etc/lighttpd/lighttpd.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are going to run static HTML pages, there is no need to do this.  If you want the ability to run PHP pages then this line must be uncommented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                                &amp;quot;mod_fastcgi&amp;quot;, &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want to adjust the port that the web server runs on.  Sprint blocks port 80 and this package installs Lighttpd to run on port 8081 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
## bind to port (default: 80)&lt;br /&gt;
server.port                = 8081&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/etc/init.d/S80lighttpd start&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a startup script ==&lt;br /&gt;
&lt;br /&gt;
I placed a file at /etc/event.d/optware-lighttpd so that the web server starts up after each reboot and the iptables firewall rules are executed to allow access to port 8080:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
# Restart the lighttpd daemon if it exits/dies&lt;br /&gt;
respawn&lt;br /&gt;
&lt;br /&gt;
exec /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
        /usr/sbin/iptables -D INPUT -p tcp --dport 8081 -j ACCEPT || /bin/true&lt;br /&gt;
        /usr/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the phone so that the firewall rules are executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/sbin/reboot&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add files to the web directory: ==&lt;br /&gt;
&lt;br /&gt;
The default home directory lives at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;/opt/share/www/&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample gps.php file that will load your current location via Google maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$gps = `luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f4,5 | sed -r 's/[^-\.0-9,]//g'`;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;600&amp;quot; height=&amp;quot;500&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; src=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;output=embed&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;http://maps.google.com/?ie=UTF8&amp;amp;amp;q=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;z=16&amp;amp;amp;ll=&amp;lt;?php echo $gps ?&amp;gt;&amp;amp;amp;source=embed&amp;quot; style=&amp;quot;color:#0000FF;text-align:left&amp;quot;&amp;gt;View Larger Map&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FrankenPre webos 2.1 gps.php needs the following (getCurrentPosition different output for webOS 2.0+?):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
`luna-send -n 1 palm://com.palm.location/getCurrentPosition {} 2&amp;gt;&amp;amp;1 | cut -d, -f5,6 | sed -r 's/[^-\.0-9,]//g'`&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Considerations =&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
# Install the ez-ipupdate package&lt;br /&gt;
# Configure ez-ipupdate to update a DDNS service any time the EVDO IP changes&lt;br /&gt;
# CNAME record of primary domain - I have a CNAME record pointed to my DDNS record so that I always have the most up-to-date IP of my phone&lt;br /&gt;
&lt;br /&gt;
== Log files ==&lt;br /&gt;
# Need to keep an eye on the /opt/var/log/lighttpd/ log files and make sure they are rotated consistently&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tweaking for CGI with Python =&lt;br /&gt;
&lt;br /&gt;
== Installation and tweaks ==&lt;br /&gt;
&lt;br /&gt;
Install python25 and cgi module from [[Optware | Optware ]] following the example on the Optware page, and creat softlink:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o rw,remount /&lt;br /&gt;
ipkg-opt install python25&lt;br /&gt;
ipkg-opt install python25 cgi&lt;br /&gt;
mount -o ro,remount /&lt;br /&gt;
ln -sf /var/opt/bin/python2.5 /usr/bin/python&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add directories to /media/internal/www to conform to more-or-less standard practice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mkdir /media/internal/www/htdocs&lt;br /&gt;
mkdir /media/internal/www/cgi-bin&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweak /opt/etc/lighttpd/lighttpd.conf as follows:&lt;br /&gt;
&lt;br /&gt;
1. Add to the server.modules list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;                “mod_cgi”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change document root to match new directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;server.document-root        = “/media/internal/www/htdocs”&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Check that the Python extension is included in the non-static list:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;static-file.exclude-extensions = ( “.fcgi”, “.php”, “.pl”, “.py”, “.rb”, “.sh” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Add cgi-bin alias:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;        “/cgi-bin/”    =&amp;gt; “/media/internal/www/cgi-bin/”,&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Add python path assignment (note python2.5 link defined above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cgi.assign    = ( “.py” =&amp;gt; “/usr/bin/python” )&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: HTML files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/htdocs. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;pythontest.html&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&amp;lt;h1 align=center&amp;gt;Test of Python on webOS&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;form method=post action=/cgi-bin/pythontest-cgi.py&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
JustType :) &amp;lt;input type=text name=instring size=100 maxlength=600 value=”“&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;input type=reset value=” Reset “&amp;gt;&amp;lt;input type=submit value=” SEND “&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage: CGI files ==&lt;br /&gt;
&lt;br /&gt;
In /media/internal/www/cgi-bin. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!/usr/bin/python&lt;br /&gt;
# pythontest-cgi.py&lt;br /&gt;
&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb; cgitb.enable()&lt;br /&gt;
&lt;br /&gt;
fs = cgi.FieldStorage()&lt;br /&gt;
if fs.has_key('instring'):&lt;br /&gt;
    instring = fs['instring'].value&lt;br /&gt;
else:&lt;br /&gt;
    instring = ''&lt;br /&gt;
&lt;br /&gt;
def htmlinit():&lt;br /&gt;
    return 'Content-type: text/html\n\n'&lt;br /&gt;
&lt;br /&gt;
def htmlhead():&lt;br /&gt;
    head = '&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n&amp;lt;title&amp;gt;Test of Python on webOS&amp;lt;/title&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;'&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def htmltail():&lt;br /&gt;
    tail = '&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;
    return tail&lt;br /&gt;
&lt;br /&gt;
print htmlinit()&lt;br /&gt;
print htmlhead()&lt;br /&gt;
print instring&lt;br /&gt;
print htmltail()&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dafyddg</name></author>
	</entry>
</feed>