Check out any web hosting service and they will probably be providing a number of different applications and technologies, most likely based on Free and Open Source Software (FOSS).
The most common of these technologies employed in this way are the components of the LAMP stack. LAMP stands for Linux, Apache, MySQL and the all-encompassing Perl, PHP and Python.
Linux, as the operating system, obviously provides the basis for the hosting environment. Linux provides secure multi-user capabilities, making it ideal for supporting multiple clients each with their own multiple websites. There is also built-in support for shell accounts—allowing users to login directly to a shared server, and to configure and edit their websites. For communication and transfer of data, users can also make use of FTP, and for secure communication and file transfer Linux also support SSH.
Apache is a straightforward web serving platform that, like Linux, provides a range of facilities that make it ideal in a multi-user and multi-website environment. For example, it supports virtual host aliases—allowing a single web server to host hundreds or thousands of individual websites. To back this up, Apache is also very scalable and can easily support thousands of requests each second across all of these sites.
MySQL provides a relational database management system (RDBMS) based around the standard query language, SQL. The use of SQL makes it easy to develop software, with a consistent interface that is not only an agreed international standard, but which also has the flexibility to be used with other SQL-based products making it easy for clients to migrate if they wish to other database products.
Perl, PHP and Python—these three, possibly along with other free software scripting languages like Ruby, provide rich and powerful programming facilities that are easy to learn and use. PHP in particular is a popular choice with users because the programming logic is embedded along with the HTML used for markup. This eliminates the need for complex scripts and also allows users to upload material through FTP without requiring shell access. PHP is therefore usable by a wide range of users, beginners, hobbyists and expert programmers.
Using free software technology in a hosting service provides a number of benefits both for the user and for the hosting company providing the service. From the perspective of the hosting company, they get to use good quality software that also has the benefit of being free and open. They can provide a service to their users without being accused of hiding, siphoning or otherwise stealing information.
From the users perspective, they get to use good quality software that is also easy to use, learn and understand, because there is plenty of information available and very few restrictions or barriers to entry. For a client of a hosting company to get the best of their hosting environment there's no requirement for heavy investment in software that works with their hosting service. Nor do they have to spend hundreds, or even thousands, of dollars buying development environments or software to create the custom applications. Furthermore, they don’t have to pay licensing or other fees to support their web sites continued existence.
Providing such a rich and easy to use deployment environment is one of the main reasons why hosting services are so popular. There is though a further benefit of the free software approach. Not only do they support your own applications and environments, but they also make it easy to support a number of ready-to-run applications that have already been built on top of this technology.
It’s these applications I’ll be concentrating on over the next few months, as I take a closer look at some of the key applications that hosting services provide to their users. Some of the forthcoming titles I’ll be looking at include:
WordPress—a blogging environment that manages to support multiple users, a flexible theme system allowing the look and feel to be easily customized, and a rich plug-in platform that allows additional features and functionality to be added just by uploading the plug-in files.
Gallery—a photo gallery application that organizes photos into individual galleries and allows you to easily tag and share photos across multiple sets. Photos can be uploaded either individually, or in bulk, and the system can be shared and distributed across multiple servers, even allowing you publish a gallery from one site to another.
phpBB—a web based bulletin board system that enables multiple users to read and discuss on a variety of different topics and threads. Individual users can heavily customize their online persona and the interface itself is also customizable.
Mambo—a complete content management system enables you to create data-rich websites with user customized elements. Mambo is already used by a variety of companies, from engineering firms and corporations through to shopping sites and newspapers. The system is flexible enough to allow the creation, manipulation and organization of a wide range of different content.
Drupal—another content management system that provides flexible themes and additional modules that extend the functionality and look and feel of the site. Drupal is commonly used for community driven sites where the cooperation and interaction of users is a critical part of the site’s design.
MediaWiki—a Wiki system; basically a method of organizing individual articles and allowing links and cross-referencing between content. The MediaWiki system allows for many users to edit and work with the stored information, making the development of content a collaborative effort. MediaWiki is the technology behind the free web encyclopaedia WikiPedia—an amazing demonstration of the technology in use.
In future editions I’ll take a closer look at each of these applications, their functionality, use, and how their free software roots make them an attractive choice.