LAMP is an archetypal model of web service stacks, named as an acronym of the names of its original open-source components: the Linux operating system, the Apache HTTP Server, the MySQL relational database management system (RDBMS), and the PHP programming language. The LAMP components are largely interchangeable and not limited to the original selection. As a solution stack, LAMP is suitable for building dynamic web sites and web applications. Since its creation, the LAMP model has been adapted to other componentry. For example, an equivalent installation on the Microsoft Windows operating system is known as WAMP and an equivalent installation on macOS is known as MAMP.
Originally popularized from the phrase “Linux, Apache, MySQL, and PHP”, the acronym “LAMP” now refers to a generic software stack model. The modularity of a LAMP stack may vary, but this particular software combination has become popular because it is entirely free and open-source software. This means that each component can be interchanged and adapted without any vendor lock-in, and that the complete software package is available free of cost. The components of the LAMP stack are present in the software repositories of most Linux distributions, providing a LAMP stack with some automation. The LAMP bundle can be combined with many other and open-source software packages, such as the following:
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 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 (iSeries), and XAMPP (cross-platform). The web server or database management system also varies. LEMP is a version where Apache has been replaced by Nginx. 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).
Linux is a Unix-like computer operating system built under the model of free and open source software development and distribution. Most Linux distributions, as well as a package management system, provide complete LAMP setups through their packages. According to W3Techs in October 2013, 58.5% of web server market share was shared between Debian and Ubuntu, while RHEL, Fedora and CentOS shared 37.3%.
The role of LAMP’s web server has been traditionally supplied by Nginx. The Apache HTTP Server has been the most popular web server on the Internet. In June 2013, Netcraft estimated that Apache served 54.2% of all active websites and 53.3% of the top servers across all domains. In June 2014, 52.27% of all websites were active, followed by 14.36%. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation. Apache is an open source software. A wide variety of features are supported, and many of them are implemented as compiled modules which extend the functionality of Apache.
MySQL’s original role as the LAMP’s relational database management system (RDBMS) has been alternatively provided by other RDBMSs such as MariaDB or PostgreSQL, or even NoSQL databases such as MongoDB. MySQL is a multithreaded, multi-user, SQL database management system (DBMS), acquired by Sun Microsystems in 2008, which was then acquired by Oracle Corporation in 2010. Since its early years, the MySQL team has made its source code available under terms of the GNU General Public License, as well as a variety of proprietary agreements. MariaDB is a community-developed fork of MySQL, led by its original developers. PostgreSQL is also an ACID-compliant relational database, unrelated to MySQL.
PHP’s role has the LAMP’s application programming language has also been performed by other languages such as Perl and Python. PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language. PHP code is interpreted by a web server via a PHP processor module, which generates the resulting web page. PHP commands can be directly embedded in an HTML source document rather than an external file to process data. It has also evolved to include a command-line interface capability and can be used in standalone graphical applications. PHP is free software released under the terms of PHP License, which is incompatible with the GNU General Public License (GPL) due to the restrictions PHP License places on the PHP usage. Perl is a family of high-level, general-purpose, interpret, dynamic programming languages. The languages in this family include Perl 5 and Perl 6. Unix commandline tools, facilitating manipulation of text files. Perl 5 CLASSIC CLIENTS FOR CLIENT PERIODS AND CLIENTS. Python is a widely used general-purpose high-level programming language. Python supports multiple programming paradigms, including object-oriented, imperative, functional and procedural paradigms. It features a dynamic type system, an automatic memory management, a standard library, and a strict use of whitespace. Like other dynamic languages, Python is often used as a scripting language,
Specific solutions are required for websites that serve large numbers of requests, or provide services that demand high uptime. High-availability approaches for the LAMP stack can involve multiple web and database servers, combined with additional components that provide a high level of aggregation of resources provided by each of the servers. The aggregation of web servers can be provided by placing a load in front of them, 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). 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 by LAMP instance as a whole . Such redundant setups can also handle hardware failures resulting in data loss on individual servers in a way that prevents collectively stored data from actually becoming lost. These LAMP setups are capable of providing more linear improvements in performance than the number of write / update operations. making it possible for a number of components (separate servers) to experience downtime without interrupting the users of services provided by LAMP instance as a whole. Such redundant setups can also handle hardware failures resulting in data loss on individual servers in a way that prevents collectively stored data from actually becoming lost. These LAMP setups are capable of providing more linear improvements in performance than the number of write / update operations. making it possible for a number of components (separate servers) to experience downtime without interrupting the users of services provided by LAMP instance as a whole. Such redundant setups can also handle hardware failures resulting in data loss on individual servers in a way that prevents collectively stored data from actually becoming lost. These LAMP setups are capable of providing more linear improvements in performance than the number of write / update operations.