LAMP (software bundle): Difference between revisions

Content deleted Content added
No edit summary
 
Line 1:
{{Short description|Acronym for a common web hosting solution}}
The [[acronym]] '''LAMP''' (or '''L.A.M.P.''') refers to a set of [[free software]] programs commonly used together to run dynamic [[Web site]]s or [[Server (computing)|server]]s:
{{Use dmy dates|date=August 2016}}
*[[Linux|'''L'''inux]], the [[operating system]];
[[File:LAMP software bundle.svg|thumb|420px|A high-level overview of LAMP's building blocks and overall system environment]]
*[[Apache HTTP Server|'''A'''pache]], the [[Web server]];
A '''LAMP''' (Linux, Apache, MySQL, Perl/PHP/Python) is one of the most common [[software stack]]s for the web's most popular [[web application|application]]s. Its generic software stack model has largely interchangeable components.<ref>{{cite web|title=LAMP (Linux, Apache, MySQL, PHP)|url=https://whatis.techtarget.com/definition/LAMP-Linux-Apache-MySQL-PHP|website=SearchEnterpriseLinux|access-date=15 December 2021|archive-url=https://web.archive.org/web/20211128055958/https://whatis.techtarget.com/definition/LAMP-Linux-Apache-MySQL-PHP|archive-date=28 November 2021|url-status=live}}</ref>
*[[MySQL|'''M'''ySQL]], the [[DBMS|database management system]] (or database server);
*[[Perl|'''P'''erl]], [[PHP|'''P'''HP]], [[Python programming language|'''P'''ython]], and/or [[Mono development platform|'''P'''rimate]] ([[Mono development platform|mod mono]]), [[scripting language|scripting/programming language]]s.
 
Each letter in the acronym stands for one of its four [[open-source software|open-source]] building blocks:
To be precise, it is an open source [[World Wide Web|Web]] [[Platform (computing)|platform]].
* [[Linux]] for the [[operating system]]
* [[Apache HTTP Server]]
* [[Maria DB]] or [[MySQL]] for the [[Relational database#RDBMS|relational database management system]]
* [[Perl]], [[PHP]], or [[Python (programming language)|Python]] for the [[programming language]]
 
The components of the LAMP stack are present in the [[software repository|software repositories]] of most [[Linux distribution]]s.
Though the originators of these [[open source]] programs did not design them all to work specifically with each other, the combination has become popular because of its low cost and because of the ubiquity of its components (which come bundled with most current [[Linux distribution]]s particularly as deployed by ISPs). When used in combination they represent a [[solution stack]] of technologies that support [[application server]]s. Other such stacks include [[Apple Computer]]'s [[WebObjects]], [[Java programming language|Java]]/[[Java EE]] and [[Microsoft]]'s [[Microsoft .NET|.NET]] architecture.
 
== History ==
The scripting component of the LAMP stack has its origins in the [[Common Gateway Interface|CGI]] [[web browser|web]] interfaces that became popular in the early 1990s. This technology allows the user of a [[web browser]] to execute a program on the web server, and to thereby receive dynamic as well as static content. Programmers used [[Scripting programming language|scripting language]]s with these programs because of their ability to manipulate text streams easily and efficiently, even when they originate from disparate sources. For this reason system designers often referred to such scripting systems as [[glue language]]s.
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".<ref>{{Cite web |last=Kunze |first=Michael |date=December 1998 |title=LAMP: Freeware Web Publishing System with Database Support |url=http://www.heise.de/ct/english/98/12/230/ |url-status=dead |archive-url=https://web.archive.org/web/19990203093819/http://www.heise.de/ct/english/98/12/230/ |archive-date=1999-02-03 |access-date=2024-06-15 |website=c't}}</ref> Since then, [[O'Reilly Media]] and [[MySQL]] teamed up to popularize the acronym and evangelize its use.<ref name="cw">{{cite news|last1=Kay|first1=Russell|title=How To: LAMP|url=https://www.computerworld.com/article/2553939/lamp.html|access-date=15 December 2021|work=Computerworld|date=25 September 2006|archive-url=https://web.archive.org/web/20210711113036/https://www.computerworld.com/article/2553939/lamp.html|archive-date=11 July 2021|url-status=live}}</ref> 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]].<ref name="ibm">{{cite web|title=LAMP stack|url=https://www.ibm.com/topics/lamp-stack|website=IBM cloud learn hub|date=October 2015 |publisher=IBM|access-date=15 December 2021|archive-url=https://web.archive.org/web/20211215082654/https://www.ibm.com/topics/lamp-stack|archive-date=15 December 2021|url-status=live}}</ref>
 
== {{Anchor|WAMP}}Variants ==
[[Michael Kunze]] coined the acronym ''LAMP'' in an [http://www.heise.de/ct/english/98/12/230/ article] for the German computing magazine ''[[c't]]'' in 1998 (12/98, page 230). The article aimed to show that a bundle of free software could provide a viable alternative to commercial packages. Knowing about the IT-world's love of acronyms, Kunze came up with ''LAMP'' as a marketing-like term to popularize the use of free software. [[O'Reilly Media|O'Reilly]] and [[MySQL AB]] have popularized the term among English-speakers. Indeed, MySQL AB has since based some of its marketing efforts on the popularity of the LAMP stack.
{{redirect|WAMP}}
 
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 [[retronym]]s 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'''<!--boldface per WP:R#PLA-->. An alternative running [[Internet Information Services|IIS]] in place of Apache is called [[WIMP (software bundle)|WIMP]]. Variants involving other operating systems include DAMP, which uses the Darwin operating system. <ref>{{cite book |last1=McIntosh |first1=Jason |url=https://books.google.com/books?id=HfKggD2umXUC |title=Mac OS X in a Nutshell |last2=Toporek |first2=Chuck |last3=Stone |first3=Chris |publisher=[[O'Reilly & Associates]] |year=2003 |isbn=978-0-596-00370-8 |pages=327–333}}</ref>
==Variants==
 
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]].<ref>{{cite web|url=https://lemp.io|title=LEMP stack (Linux, Nginx, MySQL, PHP)|publisher=lemp.io|access-date=16 December 2021|url-status=live|archive-url=https://web.archive.org/web/20211119140929/https://lemp.io/|archive-date=19 November 2021}}</ref> 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).<ref>{{cite web|url=http://www.postgresql.org/about/users/|title=Featured users|publisher=PostgreSQL|access-date=22 January 2014|archive-url=https://web.archive.org/web/20140122075743/http://www.postgresql.org/about/users/|archive-date=22 January 2014|url-status=dead}}</ref>
Some developers prefer to use the M to mean [[mod perl]] or [[mod python]] and the P to mean [[PostgreSQL]].
 
The LAMP bundle can be combined with many other free and open-source software packages, including:
Other variants of the term include:
* [[netsniff-ng]] for security testing and hardening
* [[Snort (software)|Snort]], an [[Intrusion detection system|intrusion detection]] (IDS) and [[Intrusion detection system#Intrusion prevention|intrusion prevention]] (IPS) system
* [[RRDtool]] for diagrams
* [[Nagios]], [[Collectd]] or [[Cacti (software)|Cacti]], for monitoring.
 
As another example, the software which [[Wikipedia]] and other [[Wikimedia Foundation]] projects use for their [[meta:Wikimedia servers|underlying infrastructure]] is a customized LAMP stack with additions such as [[Linux Virtual Server]] (LVS) for [[Load balancing (computing)|load balancing]] and [[Ceph (software)|Ceph]] and [[Swift (distributed storage)|Swift]] for distributed object storages.{{citation needed|date=July 2014}}
*Various
**'''AMPLE''', with the E for [[Eclipse_IDE|Eclipse]].
**'''LAMPS''', with the S for [[Secure Sockets Layer|SSL]].
**"A Brighter LAMP", with the last two letters meaning [[Middleware]] and PostgreSQL; this allows selection of languages that do not start with the letter ''P'' such as [[Tcl]] and [[Ruby programming language|Ruby]].
**'''[[WIMP (software bundle)|WIMP]]''', for Microsoft Windows, Microsoft [[IIS]], MySQL, and PHP.
**'''WIMSA''', for Microsoft Windows, Microsoft IIS, Microsoft SQL Server, and ASP.
 
== Software components ==
*''Instead of Linux:''
[[File:LAMPP Architecture.png|thumb|300px|right|A high-level overview of LAMP's determining components ([[Firefox]] serves just as a [[web browser|browser]] example.)]]
**'''AMP''', omitting the operating system. [[Apple Computer]] favors this variant.
**'''AMPS''', AMP with SSL. [[Sun Microsystems]] favors this usage.
**'''BAMP''', using [[BSD]].
**'''[[MAMP]]''', using [[Apple Macintosh|Macintosh]]. [http://www.mamp.info/en/home/]
**'''NAMP''', using [[Novell]] [[NetWare]].
**'''[[WAMP]]''', using [[Microsoft Windows]].
 
=== Linux ===
*''Instead of MySQL:''
{{Main|Linux}}
**'''[[FLAP (Software bundle)|FLAP]]''', using [[Firebird (database server)|Firebird]].
**'''LAIP''', using [[Informix]].
**'''[[LAPP]]''', using PostgreSQL.
**'''BAPP''', using BSD and PostgreSQL.
**'''LAPS''', using PostgreSQL servlets.
 
Linux is a [[Unix-like]] computer [[operating system]] assembled under the model of [[free and open-source software]] development and distribution. Most [[Linux distribution]]s, as collections of software based around the [[Linux kernel]] and often around a [[Package manager|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 [[Red Hat Enterprise Linux|RHEL]], [[Fedora Linux|Fedora]] and [[CentOS]] together shared 37.3%.<ref>{{cite web|url=http://w3techs.com/blog/entry/debian_ubuntu_extend_the_dominance_in_the_linux_web_server_market_at_the_expense_of_red_hat_centos|title=Debian/Ubuntu extend the dominance in the Linux web server market|publisher=W³Techs|access-date=16 December 2021}}</ref>
*''Instead of Python/Perl/PHP:''
**'''[[GLAM]]''', using [[Groovy]].
**'''LAMJ''', using [[JSP]] servlets.
 
=== Apache ===
Some employ the term ''LAMP'' generically to describe such alternative systems rather than make a new acronym, using it to denote the contrast between such systems and a unified web application development environment (such as [[Active Server Pages|ASP]], [[Microsoft .NET|.NET]] or [[Java EE]]).
{{Main|Apache HTTP Server}}
 
The role of LAMP's web server has been traditionally supplied by Apache, and has since included other web servers such as [[Nginx]].
As an example, [[Wikipedia]], the Free Encyclopedia, runs software in what one could characterize as a LAMP environment. Wikipedia uses [[MediaWiki]] software, developed primarily under Linux, with content served with Apache [[HTTPD]] server, content stored in a MySQL database, and program logic implemented in PHP.
 
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 [[Compiler|compiled]] [[Modular programming|modules]] which extend the core functionality of Apache. These can range from server-side programming language support to authentication.
==See also==
* [[List of AMP Packages]] Combined installers for [[Apache HTTP Server|Apache]], [[MySQL]] and [[PHP]].
 
=== MySQL and database alternatives ===
==External links==
{{Main|MySQL|MariaDB|MongoDB}}
*[http://www.onlamp.com/ ONLamp, from O'Reilly & Associates]
 
MySQL's original role as the LAMP's [[Relational database#RDBMS|relational database management system]] has since been alternately provisioned by others like [[PostgreSQL]], MariaDB (a community-developed [[Fork (software development)|fork]] of MySQL developed by its original developers), and even [[NoSQL]] databases like [[MongoDB]].
[[Category:Free software]]
 
[[Category:Linux software]]
MySQL is a [[Thread (computer science)|multithreaded]], [[multi-user]], [[SQL]] [[database management system]],<ref>{{cite web|url=http://www.mysql.com/why-mysql/topreasons_pm.html|title=Top reasons for product managers to embed|publisher=MySQL|access-date=27 July 2014|url-status=dead|archive-url=https://web.archive.org/web/20140702100433/http://www.mysql.com/why-mysql/topreasons_pm.html|archive-date=2 July 2014|df=dmy-all}}</ref> acquired by [[Sun Microsystems]] in 2008, which was then acquired by [[Oracle Corporation]] in 2010.<ref>{{cite web|url=http://www.informationweek.com/news/showArticle.jhtml?articleID=206900327|title=Sun locks up MySQL, looks to future web development|publisher=InformationWeek|access-date=27 July 2014|archive-url=https://web.archive.org/web/20080228204215/http://www.informationweek.com/news/showArticle.jhtml?articleID=206900327|archive-date=28 February 2008|url-status=dead|df=dmy-all}}</ref> 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 software|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 ===
{{Main|PHP|Perl|Python (programming language)}}
 
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 [[interpreter (computing)|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 user interface|graphical applications]].<ref>{{cite web|url=http://www.php.net/manual/en/intro-whatcando.php|work=PHP Manual|title=Introduction: What can PHP do?|access-date=16 December 2021|url-status=live|archive-url=https://web.archive.org/web/20211215010338/http://www.php.net/manual/en/intro-whatcando.php|archive-date=15 December 2021}}</ref> 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''.<ref>{{cite web|title=GPL-incompatible, free software licenses|url=https://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses|work=Various licenses and comments about them|publisher=Free software foundation|access-date=16 December 2021|archive-url=https://web.archive.org/web/20211216223323/https://www.gnu.org/licenses/license-list.html|archive-date=16 December 2021}}</ref>
 
[[Perl]] is a family of [[high-level programming language|high-level]], general-purpose, interpreted, [[dynamic programming language]]s. The languages in this family include Perl 5 and [[Raku (programming language)|Raku]].<ref>{{cite web|url=http://www.perl.org/about.html|title=About Perl|access-date=16 December 2021|publisher=perl.org|quote="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".|archive-url=https://web.archive.org/web/20211122005537/https://www.perl.org/about.html|archive-date=22 November 2021}}</ref> They provide advanced text processing facilities without the arbitrary data-length limits of many contemporary [[List of Unix commands|Unix command line tools]],<ref>{{cite book|title=Programming Perl, third edition|author1=[[Larry Wall|Wall, Larry]]|author2=Tom Christiansen|author3=Jon Orwant|publisher=[[O'Reilly Media]]|date=July 2000|isbn=0-596-00027-8}}</ref> facilitating manipulation of [[text file]]s. Perl 5 gained widespread popularity in the late 1990s as a [[Common Gateway Interface|CGI scripting]] language for the Web, in part due to its [[parsing]] abilities.<ref>{{cite book|last1=Smith|first1=Roderick W.|title=Advanced Linux networking|publisher=Addison-Wesley Professional|date=21 June 2002|page=594|isbn=978-0-201-77423-8}}</ref>
 
[[Python (programming language)|Python]] is a widely used general-purpose, high-level, [[Interpreter (computing)|interpreted]], programming language.<ref>{{cite web|url=http://radar.oreilly.com/2006/08/programming-language-trends.html|title=Programming language trends – O'Reilly radar|publisher=Radar.oreilly.com|date=2 August 2006|access-date=16 December 2021|url-status=live|archive-url=https://web.archive.org/web/20210924144323/http://radar.oreilly.com/2006/08/programming-language-trends.html|archive-date=24 September 2021}}</ref> Python supports multiple [[programming paradigm]]s, including [[object-oriented programming|object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]] and [[procedural programming|procedural]] paradigms. It features a [[dynamic type]] system, automatic [[memory management]], a [[standard library]], and strict use of [[whitespace character|whitespace]].<ref>{{cite web|url=https://www.python.org/about|title=About Python|publisher=Python software foundation|access-date=16 December 2021|archive-url=https://web.archive.org/web/20211216131820/https://www.python.org/about/|archive-date=16 December 2021}}</ref> Like other [[Dynamic programming language|dynamic language]]s, 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 ==
{{Main|High availability|Load balancing (computing)|Replication (computing)|l2=Load balancing|l3=Replication}}
 
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 (technology)|master/slave]] relationship between the original database (master) and its copies (slaves).<ref name="facta-performance">{{cite web|url=http://facta.junis.ni.ac.rs/eae/fu2k71/4obradovic.pdf|title=Measurement of the achieved performance levels of the web applications with distributed relational database|work=Electronics and energetics|volume=20|number=1|page=31{{ndash}}43|date=April 2007|access-date=16 December 2021|first1=Dragan|last1=Simic|first2=Srecko|last2=Ristic|first3=Slobodan|last3=Obradovic|publisher=Facta Universitatis|url-status=live|archive-url=https://web.archive.org/web/20211007072939/http://facta.junis.ni.ac.rs/eae/fu2k71/4obradovic.pdf|archive-date=7 October 2021}}</ref>
 
Such high-availability setups may also improve the [[availability]] of LAMP instances by providing various forms of [[Redundancy (engineering)|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.<ref name="facta-performance"/>
 
== See also ==
{{Portal|Free and open-source software|Linux|Internet}}
* [[JAMstack]]
* [[LYME (software bundle)|LYME]]{{snd}} a software stack based on Erlang
* [[MEAN (solution stack)|MEAN]]{{snd}} a JavaScript software stack for building dynamic web sites and web applications
* [[Solution stack]]
* [[Web content management system]]
* [[Web Platform Installer]]
 
== References ==
{{Reflist}}
 
 
{{Linux}}
{{FLOSS}}
 
{{DEFAULTSORT:LAMP (software bundle)}}
[[Category:Free web server software]]
[[Category:Internet software for Linux]]
[[Category:MariaDB]]
[[Category:MySQL]]
[[Category:Perl]]
[[Category:Software developmentPHP]]
[[Category:Web development software]]
[[Category:GNU project software]]
 
[[da:LAMP]]
[[et:LAMP]]
[[fr:LAMP]]
[[ko:LAMP]]
[[id:LAMP]]
[[it:LAMP (piattaforma)]]
[[nl:LAMP]]
[[ja:LAMP]]
[[no:LAMP]]
[[pl:LAMP]]
[[ru:LAMP]]
[[sk:LAMP]]
[[sl:LAMP]]
[[fi:LAMP (tietotekniikka)]]
[[sv:LAMP]]