Revision [25609]

Last edited on 2013-01-30 06:46:18 by darkcity [~[[MySQL]] - database]
Additions:
~[[MySQL]] - database


Revision [25607]

Edited on 2013-01-30 06:42:08 by darkcity [links]
Additions:
====Hiawatha Server ""MySQL""====
==Hiawatha==
~**[[Hiawatha]]** is a web-server component that can be used locally or on the web.
==""PHP web-serving with MySQL""==
~With Puppy version 4.1 Barry Kauler discovered a wonderful web-server; Hiawatha [[http://en.wikipedia.org/wiki/Hiawatha_webserver Wikipedia Hiawatha-webserver]]. This web-server is small and fast in keeping with puppy philosophy.
~The author of Hiawatha, Hugo Leisink has written it with security in mind. Barry's intentions were driven by the desire to include the blogging software he uses, PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog.
==Pre-Fork or Multi-threaded web servers==
==PHP as a Module or ""FastCGI""==
~[[Hiawatha]] - web-server
~[[PHP]] - web language
~[[XAMPP]] - cross platform LAMP website stack
~[[Nginx]] - web-server
~[[Apache]] - web-server
~[[http://www.hiawatha-webserver.org/ Hiawatha homepage]]
~[[http://www.hiawatha-webserver.org/howto Hiawatha howto]]
~[[http://www.linux-magazine.com/Issues/2009/107/Hiawatha Hiawatha in Linux magazine]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?t=55683 Configuring Hiawatha webserver thread]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?p=406246#406246 Configure Hiawatha as Web and LAN server post]]
Deletions:
[[http://www.hiawatha-webserver.org/ Hiawatha]] is a secure and advanced web server.
====""PHP web-serving with MySQL""====
With Puppy version 4.1 Barry Kauler discovered a wonderful web-server; Hiawatha [[http://en.wikipedia.org/wiki/Hiawatha_webserver Wikipedia Hiawatha-webserver]]. This web-server is small and fast in keeping with puppy philosophy.
""<a href="http://www.hiawatha-webserver.org/" target="_blank"><img src="http://www.hiawatha-webserver.org/images/banners/hiawatha_392x72.png" style="border:0" /></a>""
The author of Hiawatha, Hugo Leisink has written it with security in mind. Barry's intentions were driven by the desire to include the blogging software he uses, PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog.
**Pre-Fork or Multi-threaded web servers**
**PHP as a Module or ""FastCGI""**
~[[XAMPP]] - Cross Platform LAMP
~[[Hiawatha]] - alternative web server.
~[[http://www.murga-linux.com/puppy/viewtopic.php?t=55683 How to configure Hiawatha web server?]]


Revision [23614]

Edited on 2012-08-30 08:25:48 by darkcity [links]
Additions:
==Also on the Wiki==
~[[LAMP]] - website stack
~[[XAMPP]] - Cross Platform LAMP
~[[Hiawatha]] - alternative web server.
==Related Webpages==
~[[http://www.murga-linux.com/puppy/viewtopic.php?t=58982 LHMP - Hiawatha MariaDB(mysql) PHP thread]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?t=55683 How to configure Hiawatha web server?]]
Deletions:
==Also see==
[[Hiawatha]]
[[http://www.murga-linux.com/puppy/viewtopic.php?t=58982 LHMP - Hiawatha MariaDB(mysql) PHP thread]]
[[http://www.murga-linux.com/puppy/viewtopic.php?t=55683 How to configure Hiawatha web server?]]


Revision [22436]

Edited on 2012-07-19 06:59:14 by darkcity [links]
Additions:
CategorySoftware
CategoryTutorial
Deletions:
CategoryAdditionalSoftware
CategoryHowTo


Revision [20845]

Edited on 2012-02-27 18:19:39 by PhilDaintree [links]
Additions:
Setup Linux-Firewall Wizard and enable **Http Web Server** using the custom option. (normally this is on port 80 - but you could configure Hiawatha to run - server web-pages on another port - which would then need to be opened too in your firewall). Alternatively, you could configure your firewall not to block incoming connections on the LAN only from external IP addresses.
(NB: If you are running hiawatha from the LAMP or LHMP (Linux Hiawatha Mysql PHP) .pet below then hiawatha starts on each boot. You can stop it from the command line
#/etc/init.d/rc.httpd stop
and start it with:
#/etc/init.d/rc.httpd start)
Deletions:
Setup Linux-Firewall Wizard and enable **Http Web Server** using the custom option.


Revision [20844]

Edited on 2012-02-27 18:15:08 by PhilDaintree [links]
Additions:
Apache has the advantage that PHP can be run as a module - theoretically the fastest way to run PHP. However, the architecture of apache is based on a "pre-fork" model where new connections to an Apache web-server initiate new forks and each fork consumes RAM - so the machine can max out if a heavy load of web-serving comes it's way. It typically has 5 - it is configurable - or more forks running at the same time all ready to serve requests. Hiawatha uses a thread based model a similar architecture as that used by the fastest web-server (I understand this to be Roxen). This structure also has the advantage of being much leaner in terms of memory and ultimately faster to serve pages.
Predictably then Barry is, once again, on to something here with Hiawatha.
Running PHP as a module of Apache means that the PHP binary is already loaded when a request is fielded to run a PHP script and traditionally has been the favoured way of running PHP. However, development of Fast CGI also allows PHP daemons to be running ready to field requests thus reducing the overhead compared to running PHP as a CGI program - where it has to be loaded on each request - and holds a severe performance penalty. Hiawatha happily has the ability to run PHP as a ""FastCGI"" daemon. The new versions of PHP also have php-fpm - fast program manager so PHP actually runs as a daemon ready to field requests. In the latest .pet this is the way it is configured. The configuration of PHP-FPM is in /usr/local/etc/php-fpm.config I have not done any bench-marking on performance of ""FastCGI"" Hiwatha PHP to Apache PHP moule - it would be interesting to see the results - it is my pick that Hiawatha/""FastCGI PHP"" might well be faster.
It is a rather chunky 21 Meg - as it includes both the php-fpm (which hiawatha is configured to use) and the php cgi binary - so php scripts can be run outside the web-server. The structure of this new pet is similar to the old one so I have left the notes in relation to the old .pet to describe it. The php binary is 8 Meg and there are two of these in the latest .pet the php-fpm binary and the CGI php binary.
Deletions:
Apache has the advantage that PHP can be run as a module - theoretically the fastest way to run PHP. However, the architecture of apache is based on a "pre-fork" model where new connections to an Apache web-server initiate new forks and each fork consumes RAM - so the machine can max out if a heavy load of web-serving comes it's way. Hiawatha uses a thread based model a similar architecture as that used by the fastest web-server (I understand this to be Roxen). This structure also has the advantage of being much leaner in terms of memory and ultimately faster to serve pages.
Running PHP as a module of Apache means that the PHP binary is already loaded when a request is fielded to run a PHP script and traditionally has been the favoured way of running PHP. However, development of Fast CGI also allows PHP daemons to be running ready to field requests thus reducing the overhead compared to running PHP as a CGI program - where it has to be loaded on each request - and holds a severe performance penalty. Hiawatha happily has the ability to run PHP as a ""FastCGI"" daemon. I have not done any bench-marking on performance of ""FastCGI"" Hiwatha PHP to Apache PHP moule - it would be interesting to see the results - it is my pick that Hiawatha/""FastCGI PHP"" might well be faster.
Predictably Barry is, once again, on to something here.
It is a rather chunky 21 Meg - as it includes both the php-fpm (which hiawatha is configured to use) and the php cgi binary - so php scripts can be run outside the web-server. The structure of this new pet is similar to the old one so I have left the notes in relation to the old .pet to describe it. The php binary is 8 Meg!


Revision [20843]

Edited on 2012-02-27 18:09:28 by PhilDaintree [links]
Additions:
The author of Hiawatha, Hugo Leisink has written it with security in mind. Barry's intentions were driven by the desire to include the blogging software he uses, PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog.
Deletions:
The author of Hiawatha, Hugo Leisink has written it with security in mind. Barry's intentions were driven by the desire to include the blogging software he uses, PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog. (I have a 256Meg web-server on an old Athlon machine running our php/mysql/hiawatha squash court booking system, that has been running for months without a reboot and still has RAM to spare http://fraserparksquash.org.nz/Bookings/ - the apache squash file version had to have weekly reboots).


Revision [20842]

Edited on 2012-02-27 18:08:36 by PhilDaintree [links]
Additions:
I have put together a .pet including the whole bundle of software to turn puppy into a fully fledged web-server (hiawatha web-server, MySQL - RDBMS and the PHP interpreter that runs as Fast CGI daemons) all running as the user "nobody". It is available at:
==PHP configuration==
- LHMP-8.0-5.3.4-5.3.10.pet released Feb 2012 - Hiawatha to 8.0 Maria mysql 5.3.10 php 5.3.4 and phpMyAdmin 3.4.10.1
Deletions:
I have put together a new .pet including the whole bundle of software to turn puppy into a fully fledged web-server (hiawatha web-server, MySQL - RDBMS and the PHP interpreter that runs as Fast CGI daemons). It is available at:
==PHP configuratio==


Revision [20841]

Edited on 2012-02-27 17:52:10 by darkcity [correct link]
Additions:
====""PHP web-serving with MySQL""====
Deletions:
====PHP web-serving with MySQL====


Revision [20840]

Edited on 2012-02-27 17:51:41 by darkcity [correct link]
Additions:
[[http://dotpups.de/puppy4/dotpups/Internet/LHMP-8.0-5.3.4-5.3.10.pet LHMP-8.0-5.3.4-5.3.10.pet compiled on Racy download]]
Deletions:
[[http://dotpups.de/puppy4/dotpups/Internet/LAMP-8.0-5.3.4-5.3.10.pet LAMP-8.0-5.3.4-5.3.10.pet compiled on Racy download]]


Revision [20839]

Edited on 2012-02-27 17:49:57 by darkcity [add racy link]
Additions:
==Installation (A new .PET)==
**Newer version**
[[http://dotpups.de/puppy4/dotpups/Internet/LAMP-8.0-5.3.4-5.3.10.pet LAMP-8.0-5.3.4-5.3.10.pet compiled on Racy download]]
**Previous version**
[[http://dotpups.de/puppy4/dotpups/Internet/LAMP-6.16-5.1.35-5.2.9.pet LAMP-6.16-5.1.35-5.2.9.pet download]]
Deletions:
==A new .PET==
http://dotpups.de/puppy4/dotpups/Internet/LAMP-6.16-5.1.35-5.2.9.pet


Revision [20838]

Edited on 2012-02-27 17:42:52 by darkcity [format links]
Additions:
====PHP web-serving with MySQL====
==A new .PET==
==MySQL Configuration==
==PHP configuratio==
==Change Log and Possible Issues==
==Notes on Compiling the Applications==
[[Hiawatha]]
[[http://www.murga-linux.com/puppy/viewtopic.php?t=55683 How to configure Hiawatha web server?]]
Deletions:
======{{color text="PHP web-serving with MySQL" c="green"}}======
====={{color text="A new .PET" c="black"}}=====
==={{color text="MySQL Configuration" c="black"}}===
===={{color text="PHP configuration" c="black"}}====
===={{color text="Change Log and Possible Issues" c="black"}}====
===={{color text="Notes on Compiling the Applications" c="black"}}====


Revision [20834]

Edited on 2012-02-27 17:35:24 by darkcity [link]
Additions:
==Also see==
[[http://www.murga-linux.com/puppy/viewtopic.php?t=58982 LHMP - Hiawatha MariaDB(mysql) PHP thread]]


Revision [20808]

Edited on 2012-02-26 17:07:53 by darkcity [link]
Additions:
[[HomePage]] > [[SoftwareIndex Software Index]] > [[SoftwareNetwork Network]]


Revision [20774]

Edited on 2012-02-26 04:15:57 by PhilDaintree [link]
Additions:
I have put together a new .pet including the whole bundle of software to turn puppy into a fully fledged web-server (hiawatha web-server, MySQL - RDBMS and the PHP interpreter that runs as Fast CGI daemons). It is available at:
This version released Feb 2012 is tested with Racy Puppy 5.2.2 (kernel 3.07) - and includes:
~- Hiawatha web-server version 8.0
~- MariaDB mysql version 5.3.10
~- PHP version 5.3.4
~- phpMyAdmin version 3.4.10.1
It is a rather chunky 21 Meg - as it includes both the php-fpm (which hiawatha is configured to use) and the php cgi binary - so php scripts can be run outside the web-server. The structure of this new pet is similar to the old one so I have left the notes in relation to the old .pet to describe it. The php binary is 8 Meg!
The previous version was released August 2009 is tested with Puppy 4.2.1 through to the ubuntu derived puppy lucid 5.28 - and includes:
This old .pet file is 11 Meg - so it is still chunky by puppy standards - but includes mysql is a fully featured RDBMS and required by many applications. I have consoled myself that other LAMP implementations are many times the size.
Deletions:
Since Hiawatha is no longer included with puppy since 4.1.2 I made a new .pet including the whole bundle of software to turn puppy into a fully fledged web-server (hiawatha web-server, MySQL - RDBMS and the PHP interpreter that runs as Fast CGI daemons). It is available at:
This version released August 2009 is tested with Puppy 4.2.1 - and includes:
The .pet file is 11 Meg - so it is chunky by puppy standards - but includes mysql is a fully featured RDBMS and required by many applications. I have consoled myself that other LAMP implementations are many times the size.


Revision [3091]

Edited on 2009-10-26 07:23:23 by Puppyite [link]
Additions:
With Puppy version 4.1 Barry Kauler discovered a wonderful web-server; Hiawatha [[http://en.wikipedia.org/wiki/Hiawatha_webserver Wikipedia Hiawatha-webserver]]. This web-server is small and fast in keeping with puppy philosophy.
The author of Hiawatha, Hugo Leisink has written it with security in mind. Barry's intentions were driven by the desire to include the blogging software he uses, PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog. (I have a 256Meg web-server on an old Athlon machine running our php/mysql/hiawatha squash court booking system, that has been running for months without a reboot and still has RAM to spare http://fraserparksquash.org.nz/Bookings/ - the apache squash file version had to have weekly reboots).
Deletions:
With Puppy version 4.1 our learned and wise leader Barry Kauler discovered a wonderful web-server Hiawatha [[http://en.wikipedia.org/wiki/Hiawatha_webserver Wikipedia Hiawatha-webserver]] - this web-server is small and fast in keeping with puppy philosophy.
The author of Hiawatha Hugo Leisink has written it with security at the front of mind. Barry's intentions were driven by the desire I believe to include the blogging software he uses PPLOG which is a small perl script. Consequently Hiawatha came configured by default to run perl as a CGI program to interpret .pl scripts (Hiawatha was left out of puppy 4.2.1) Investigation into Hiawatha shows it to be quite a performer in terms of throughput of pages served (purportedly twice as fast as Apache with static content) and appears to have much of the flexibility in its configuration as that available with Apache. Configuration options for virtual hosts, user and ip address based security and to run with ssl are easier to configure than Apache. It also has URL rewriting toolkit required to run many CMS applications. The problem with Apache is that is now quite large and it forks additional processes each requiring a large chunk of memory for additional connections. Performance in terms of memory utilisation is a snag particularly when many machines that run puppy may well be challenged in this department. We puppyofiles like to do more with less and Hiawatha with it's binary just 113k (as of version 6.16) running a multi-threaded rather than pre-fork model appears to be the perfect antidote to the Apache resource hog. (I have a 256Meg web-server on an old Athlon machine running our php/mysql/hiawatha squash court booking system, that has been running for months without a reboot and still has RAM to spare http://fraserparksquash.org.nz/Bookings/ - the apache squash file version had to have weekly reboots).


Revision [3090]

Edited on 2009-10-26 07:20:26 by Puppyite [link]
Additions:
[[http://www.hiawatha-webserver.org/ Hiawatha]] is a secure and advanced web server.
Deletions:
[[http://www.hiawatha-webserver.org/ Hiawatha]] a secure and advanced web server.


Revision [3089]

Edited on 2009-10-26 07:19:58 by Puppyite [link]
Additions:
Setup Linux-Firewall Wizard and enable **Http Web Server** using the custom option.
Run Hiawatha by typing **hiawatha** at the conole.
To stop the server, type in **killall hiawatha**.
In /root/Web-Server the file index.html can be a test web page.
Deletions:
Setup Linux-Firewall Wizard and enable **Http Web Server** using the custom option
Run Hiawatha by typing **hiawatha** at the conole
To stop the server, type in **killall hiawatha**
In /root/Web-Server the file index.html can be a test web page


Revision [3088]

Edited on 2009-10-26 07:18:54 by Puppyite [link]
Additions:
You will need two computers connected to a network switch or router.
Deletions:
You will need two computers connected to a network switch.


Revision [3087]

Edited on 2009-10-26 07:18:06 by Puppyite [link]
Additions:
You will need two computers connected to a network switch.
Deletions:
You will need two computers connected to the hub


Revision [2995]

Edited on 2009-10-25 16:34:56 by Puppyite [link]

No Differences

Revision [2994]

Edited on 2009-10-25 16:32:49 by Puppyite [link]
Additions:
Both php and mysql were compiled using devx_420.sfs as prepared by ""WhoDo"" for 4.2. Compliation options to exclude documentation (which is online) the mysql cluster code, the enormous mysql test-suite, the enormous PHP PEAR were used to minimise the size of the .pet but retain as much functionality as possible. PHP includes ftp, gettext, gd, xml, mysql and mysqli, sql-lite functionality. Mysql retains myisam, isam and innodb table types by default, together with all the usual mysql utilities including mysqldump, mysql client, mysqladmin etc.
Deletions:
Both php and mysql were compiled using devx_420.sfs as prepared by WhoDo for 4.2. Compliation options to exclude documentation (which is online) the mysql cluster code, the enormous mysql test-suite, the enormous PHP PEAR were used to minimise the size of the .pet but retain as much functionality as possible. PHP includes ftp, gettext, gd, xml, mysql and mysqli, sql-lite functionality. Mysql retains myisam, isam and innodb table types by default, together with all the usual mysql utilities including mysqldump, mysql client, mysqladmin etc.


Revision [2993]

Edited on 2009-10-25 16:31:52 by Puppyite [link]
Additions:
======{{color text="PHP web-serving with MySQL" c="green"}}======
Deletions:
======{{color text="PHP web-serving with Mysql" c="green"}}======


Revision [2992]

Edited on 2009-10-25 16:30:32 by Puppyite [link]
Additions:
**PHP as a Module or ""FastCGI""**
Running PHP as a module of Apache means that the PHP binary is already loaded when a request is fielded to run a PHP script and traditionally has been the favoured way of running PHP. However, development of Fast CGI also allows PHP daemons to be running ready to field requests thus reducing the overhead compared to running PHP as a CGI program - where it has to be loaded on each request - and holds a severe performance penalty. Hiawatha happily has the ability to run PHP as a ""FastCGI"" daemon. I have not done any bench-marking on performance of ""FastCGI"" Hiwatha PHP to Apache PHP moule - it would be interesting to see the results - it is my pick that Hiawatha/""FastCGI PHP"" might well be faster.
This pet contains the necessary /etc/hiawatha/hiawatha.conf settings to serve .php web-pages with PHP running as a ""fastCGI"" daemons. Hiawatha comes with a program to launch a series of PHP daemons and again the config of php-fcgi is included in the .pet. The .pet also has a scripts in /etc/init.d/
Deletions:
**PHP as a Module or FastCGI**
Running PHP as a module of Apache means that the PHP binary is already loaded when a request is fielded to run a PHP script and traditionally has been the favoured way of running PHP. However, development of Fast CGI also allows PHP daemons to be running ready to field requests thus reducing the overhead compared to running PHP as a CGI program - where it has to be loaded on each request - and holds a severe performance penalty. Hiawatha happily has the ability to run PHP as a FastCGI daemon. I have not done any bench-marking on performance of FastCGI Hiwatha PHP to Apache PHP moule - it would be interesting to see the results - it is my pick that Hiawatha/FastCGI PHP might well be faster.
This pet contains the necessary /etc/hiawatha/hiawatha.conf settings to serve .php web-pages with PHP running as a fastCGI daemons. Hiawatha comes with a program to launch a series of PHP daemons and again the config of php-fcgi is included in the .pet. The .pet also has a scripts in /etc/init.d/


Revision [2991]

The oldest known version of this page was created on 2009-10-25 16:22:27 by Puppyite [link]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki