LAMP technology stack
The exact definition of LAMP changes over time, as new languages, databases, and tools move in and out of favor. The original and current variants of the definition are given below:
- L – Linux; all stacks run on the Linux operation system (there is an analogous version WAMP for Windows)
- A – Apache; this is the Apache2 application server that serves to process incoming HTTP requests, process them, and return HTML/JavaScript/other outputs. There is a version of this stack called LEMP in which the Apache application server is replaced by Nginx, a light weight application server.
- M – MySQL; the MySQL database has been a staple of the LAMP stack. However, some installations will use PostgreSQL (another popular open source database) – you may encounter the term LAPP, which is LAMP with PostgreSQL instead of MySQL
- P – PHP; this is the language in which the code and pages are written – this is where the developer will parse incoming HTTP requests . This is the most changeable piece of the stack, as both Perl and Python can be used for this as well.
Popularity
This is one of the most popular technology stacks on the Internet, particularly for startups, small businesses, and simple web presences.
Operating system support
This technology stack is, by definition, only available on Linux. As mentioned, there is variant for windows known as WAMP (the link will download installation software that installs the rest of the stack on a Windows machine).
Tool support
There is an almost infinite variety of development, administration, and support tools for the LAMP stack that can be used by an organization. For development tools, there are a large number of integrated development environments (IDE) (GUI development tools) – the type that you will use is dependent on your language. I personally have used UltraEdit (on windows), VI (on Linux), and Eclipse (on both Windows and Linux).
The latter is is an extraordinarily powerful tool that can be a challenge to set up properly but offers incredible automation, a broad array of plugins, and support for almost every single language, operating system, database, and automation tool on the market. It is open source and most developers with more than two years experience have had some exposure to it. There are many commercial IDEs available; however, none of them have anything close to the market penetration of Eclipse.
Consideration
The main issue with this stack is that the languages are all scripted languages, not compiled. What this means is that there is some small amount of overhead in parsing, transcribing, and outputting the scripting language results – this overhead is not present for compiled languages. The consequence of this overhead is that these sites are generally not suited for very high volume sites; this can be overcome by using more powerful hardware and careful design. It is, however, a consideration for any popular application that still uses scripted languages – switching to Java or C# (both compiled languages) may give some performance benefits.
One of the strong side benefits of using scripted languages is that the direct file can be updated in place, resulting in an environment where you can make changes easily. You do not have to do the entire compile/build/deploy cycle to make the change – this can be a problem, of course, in that you can easily make changes that can take down your entire application. Caution is warranted in all cases …
Downloads
Download latest version of the Linux operation systems
Download latest version of Apache2 application server
Download latest version of MySQL open source database – commercial support is available
Download latest version of PHP language
——————————————–
Image courtesy of Thomas Quine (flickr.com)