LAMP (software bundle)

Last updated

A high-level overview of LAMP's building blocks and overall system environment LAMP software bundle.svg
A high-level overview of LAMP's building blocks and overall system environment

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]

Contents

Each letter in the acronym stands for one of its four open-source building blocks:

The components of the LAMP stack are present in the software repositories of most Linux distributions.

History

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]

Variants

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 DAMP, which uses the Darwin operating system. [5]

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. [6] 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). [7]

The LAMP bundle can be combined with many other free and open-source software packages, including:

As another example, the software which Wikipedia and other Wikimedia Foundation projects use for their underlying infrastructure is a customized LAMP stack with additions such as Linux Virtual Server (LVS) for load balancing and Ceph and Swift for distributed object storages.[ citation needed ]

Software components

A high-level overview of LAMP's determining components (Firefox serves just as a browser example.) LAMPP Architecture.png
A high-level overview of LAMP's determining components (Firefox serves just as a browser example.)

Linux

Linux is a Unix-like computer operating system assembled under the model of free and open-source software development and distribution. Most Linux distributions, as collections of software based around the Linux kernel and often around a package management system, provide complete LAMP setups through their packages. According to W3Techs in October 2013, 58.5% of web server market share is shared between Debian and Ubuntu, while RHEL, Fedora and CentOS together shared 37.3%. [8]

Apache

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 compiled modules which extend the core functionality of Apache. These can range from server-side programming language support to authentication.

MySQL and database alternatives

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.

MySQL is a multithreaded, multi-user, SQL database management system, [9] acquired by Sun Microsystems in 2008, which was then acquired by Oracle Corporation in 2010. [10] Since its early years, the MySQL team has made its source code available under the terms of the GNU General Public License, as well as under a variety of proprietary agreements.

PostgreSQL is also an ACID-compliant object-relational database management system developed by PostgreSQL Global Development Group.

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.

PHP and alternatives

PHP's role as 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 optionally be embedded directly into an HTML source document rather than calling 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. [11] 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 usage of the term PHP. [12]

Perl is a family of high-level, general-purpose, interpreted, dynamic programming languages. The languages in this family include Perl 5 and Raku. [13] They provide advanced text processing facilities without the arbitrary data-length limits of many contemporary Unix command line tools, [14] 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. [15]

Python is a widely used general-purpose, high-level, interpreted, programming language. [16] Python supports multiple programming paradigms, including object-oriented, imperative, functional and procedural paradigms. It features a dynamic type system, automatic memory management, a standard library, and strict use of whitespace. [17] Like other dynamic languages, Python is often used as a scripting language, but is also used in a wide range of non-scripting contexts.

High availability and load balancing

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). [18]

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. [18]

See also

Related Research Articles

<span class="mw-page-title-main">MySQL</span> SQL database engine software

MySQL is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database. In addition to relational databases and SQL, an RDBMS like MySQL works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups.

<span class="mw-page-title-main">PostgreSQL</span> Free and open-source object relational database management system

PostgreSQL also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. PostgreSQL features transactions with atomicity, consistency, isolation, durability (ACID) properties, automatically updatable views, materialized views, triggers, foreign keys, and stored procedures. It is supported on all major operating systems, including Windows, Linux, macOS, FreeBSD, and OpenBSD, and handles a range of workloads from single machines to data warehouses, data lakes, or web services with many concurrent users.

<span class="mw-page-title-main">FOSDEM</span> Annual event in Brussels centered on free and open source software development

Free and Open source Software Developers' European Meeting (FOSDEM) is a non-commercial, volunteer-organized European event centered on free and open-source software development. It is aimed at developers and anyone interested in the free and open-source software movement. It aims to enable developers to meet and to promote the awareness and use of free and open-source software.

MaxDB is an ANSI SQL-92 compliant relational database management system (RDBMS) from SAP AG, which was also delivered by MySQL AB from 2003 to 2007. MaxDB is targeted for large SAP environments e.g. mySAP Business Suite, and other applications that require enterprise-level database functionality.

Mini SQL is a lightweight database management system from Hughes Technologies.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

<span class="mw-page-title-main">XAMPP</span> Web server solution stack package

XAMPP is a free and open-source cross-platform web server solution stack package developed by Apache Friends, consisting mainly of the Apache HTTP Server, MariaDB database, and interpreters for scripts written in the PHP and Perl programming languages. Since most actual web server deployments use the same components as XAMPP, it makes transitioning from a local test server to a live server possible.

The acronyms BAPP and BAMP refer to a set of open-source software programs commonly used together to run dynamic websites or servers. This set is a solution stack, and an open source web platform.

MAMP is a solution stack composed of free and open-source and proprietary commercial software used together to develop and run dynamic websites on Apple Macintosh computers.

<span class="mw-page-title-main">Bricolage (software)</span>

Bricolage was a content management system (CMS) written in the Perl programming language.

An embedded database system is a database management system (DBMS) which is tightly integrated with an application software; it is embedded in the application. It is a broad technology category that includes:

The acronym WIMP is a solution stack of software, partially free and open source software, used to run dynamic web sites on servers. The expansion is as follows:

<span class="mw-page-title-main">LYME (software bundle)</span>

LYME and LYCE are software stacks composed entirely of free and open-source software to build high-availability heavy duty dynamic web pages. The stacks are composed of:

The following outline is provided as an overview of and topical guide to the Perl programming language:

<span class="mw-page-title-main">Apache Drill</span> Open-source software framework

Apache Drill is an open-source software framework that supports data-intensive distributed applications for interactive analysis of large-scale datasets. Built chiefly by contributions from developers from MapR, Drill is inspired by Google's Dremel system. Drill is an Apache top-level project. Tom Shiran is the founder of the Apache Drill Project. It was designated an Apache Software Foundation top-level project in December 2016.

The following outline is provided as an overview of and topical guide to MySQL:

<span class="mw-page-title-main">DBeaver</span> Multi-platform database administration software

DBeaver is a SQL client software application and a database administration tool. For relational databases it uses the JDBC application programming interface (API) to interact with databases via a JDBC driver. For other databases (NoSQL) it uses proprietary database drivers. It provides an editor that supports code completion and syntax highlighting. It provides a plug-in architecture that allows users to modify much of the application's behavior to provide database-specific functionality or features that are database-independent. It is written in Java and based on the Eclipse platform.

References

  1. "LAMP (Linux, Apache, MySQL, PHP)". SearchEnterpriseLinux. Archived from the original on 28 November 2021. Retrieved 15 December 2021.
  2. Kunze, Michael (December 1998). "LAMP: Freeware Web Publishing System with Database Support". c't. Archived from the original on 3 February 1999. Retrieved 15 June 2024.
  3. Kay, Russell (25 September 2006). "How To: LAMP". Computerworld. Archived from the original on 11 July 2021. Retrieved 15 December 2021.
  4. "LAMP stack". IBM cloud learn hub. IBM. October 2015. Archived from the original on 15 December 2021. Retrieved 15 December 2021.
  5. McIntosh, Jason; Toporek, Chuck; Stone, Chris (2003). Mac OS X in a Nutshell. O'Reilly & Associates. pp. 327–333. ISBN   978-0-596-00370-8.
  6. "LEMP stack (Linux, Nginx, MySQL, PHP)". lemp.io. Archived from the original on 19 November 2021. Retrieved 16 December 2021.
  7. "Featured users". PostgreSQL. Archived from the original on 22 January 2014. Retrieved 22 January 2014.
  8. "Debian/Ubuntu extend the dominance in the Linux web server market". W³Techs. Retrieved 16 December 2021.
  9. "Top reasons for product managers to embed". MySQL. Archived from the original on 2 July 2014. Retrieved 27 July 2014.
  10. "Sun locks up MySQL, looks to future web development". InformationWeek. Archived from the original on 28 February 2008. Retrieved 27 July 2014.
  11. "Introduction: What can PHP do?". PHP Manual. Archived from the original on 15 December 2021. Retrieved 16 December 2021.
  12. "GPL-incompatible, free software licenses". Various licenses and comments about them. Free software foundation. Archived from the original on 16 December 2021. Retrieved 16 December 2021.
  13. "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".
  14. Wall, Larry; Tom Christiansen; Jon Orwant (July 2000). Programming Perl, third edition. O'Reilly Media. ISBN   0-596-00027-8.
  15. Smith, Roderick W. (21 June 2002). Advanced Linux networking. Addison-Wesley Professional. p. 594. ISBN   978-0-201-77423-8.
  16. "Programming language trends – O'Reilly radar". Radar.oreilly.com. 2 August 2006. Archived from the original on 24 September 2021. Retrieved 16 December 2021.
  17. "About Python". Python software foundation. Archived from the original on 16 December 2021. Retrieved 16 December 2021.
  18. 1 2 Simic, Dragan; Ristic, Srecko; Obradovic, Slobodan (April 2007). "Measurement of the achieved performance levels of the web applications with distributed relational database" (PDF). Electronics and energetics. Facta Universitatis. p. 31–43. Archived (PDF) from the original on 7 October 2021. Retrieved 16 December 2021.