A LAMP (Linux, Apache, MySQL, Perl/PHP/Python) is one of the most common software stacks for the web's most popular applications. Its generic software stack model has largely interchangeable components.[1]
Each letter in the acronym stands for one of its four open-source building blocks:
The acronym LAMP was coined by Michael Kunze in the December 1998 issue of Computertechnik, a German computing magazine, as he demonstrated that a bundle of free and open-source software "could be a feasible alternative to expensive commercial packages".[2] Since then, O'Reilly Media and MySQL teamed up to popularize the acronym and evangelize its use.[3] One of the first open-source software stacks for the web, the term and the concept became popular. The stack is capable of hosting a variety of web frameworks and applications, such as WordPress and Drupal.[4]
The LAMP model has been adapted to other componentry, though typically consisting of free and open-source software. With the growing use of the archetypal LAMP, variations and retronyms appeared for other combinations of operating system, web server, database, and software language. For example, an equivalent installation on the Microsoft Windows operating system family is known as WAMP. An alternative running IIS in place of Apache is called WIMP. Variants involving other operating systems include MAMP (macOS), SAMP (Solaris), FAMP (FreeBSD), iAMP (IBM i) and XAMPP (cross-platform).[citation needed]
The web server or database management system also varies. LEMP is a version where Apache has been replaced with the more lightweight web server Nginx.[5] A version where MySQL has been replaced by PostgreSQL is called LAPP, or sometimes by keeping the original acronym, LAMP (Linux / Apache / Middleware (Perl, PHP, Python, Ruby) / PostgreSQL).[6]
The LAMP bundle can be combined with many other free and open-source software packages, including:
The role of LAMP's web server has been traditionally supplied by Apache, and has since included other web servers such as Nginx.
Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation. Released under the Apache License, Apache is open-source software. A wide variety of features are supported, and many of them are implemented as compiledmodules which extend the core functionality of Apache. These can range from server-side programming language support to authentication.
MySQL's original role as the LAMP's relational database management system has since been alternately provisioned by others like PostgreSQL, MariaDB (a community-developed fork of MySQL developed by its original developers), and even NoSQL databases like MongoDB.
MongoDB is a NoSQL database that eschews the traditional relational database structure in favor of JSON-like documents with dynamic schemas (calling the format BSON), making the integration of data in certain types of applications easier and faster.
Perl is a family of high-level, general-purpose, interpreted, dynamic programming languages. The languages in this family include Perl 5 and Raku.[12] They provide advanced text processing facilities without the arbitrary data-length limits of many contemporary Unix command line tools,[13] facilitating manipulation of text files. Perl 5 gained widespread popularity in the late 1990s as a CGI scripting language for the Web, in part due to its parsing abilities.[14]
Specific approaches are required for websites that serve large numbers of requests, or provide services that demand high uptime. High-availability approaches for the LAMP stack may involve multiple web and database servers, combined with additional components that perform logical aggregation of resources provided by each of the servers, as well as distribution of the workload across multiple servers. The aggregation of web servers may be provided by placing a load balancer in front of them, for example by using Linux Virtual Server (LVS). For the aggregation of database servers, MySQL provides internal replication mechanisms that implement a master/slave relationship between the original database (master) and its copies (slaves).[17]
Such high-availability setups may also improve the availability of LAMP instances by providing various forms of redundancy, making it possible for a certain number of components (separate servers) to experience downtime without interrupting the users of services provided as a whole. Such redundant setups may also handle hardware failures resulting in data loss on individual servers in a way that prevents collectively stored data from actually becoming lost. Beside higher availability, such LAMP setups are capable of providing almost linear improvements in performance for services having the number of internal database read operations much higher than the number of write/update operations.[17]
^"About Perl". perl.org. Archived from the original on 22 November 2021. Retrieved 16 December 2021. "Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language which has its own development team. Its existence has no significant impact on the continuing development of "Perl 5".