LAMP (software bundle)

From Wikipedia, the free encyclopedia
  (Redirected from WAMP)
Jump to: navigation, search
LAMP software bundles, in combination with Squid.

LAMP is an acronym for an archetypal model of web service solution stacks, originally consisting of largely interchangeable components: Linux, the Apache HTTP Server, the MySQL relational database management system, and the PHP programming language. As a solution stack, LAMP is suitable for building dynamic web sites and web applications.[1]

The LAMP model has since been adapted to other componentry, though typically consisting of free and open-source software. As an example, the equivalent installation on a Microsoft Windows operating system is known as WAMP.

Overview[edit]

Originally popularized from the phrase "Linux, Apache, MySQL, and PHP", the acronym "LAMP" now refers to a generic software stack model. The modular componentry of a LAMP stack may vary, but this particular software combination has become popular because it is entirely free and open-source software.[citation needed] This means that each component can be theoretically interchanged and adapted without overt vendor lock-in, and that the complete software stack is optionally available free of cost. The components of the LAMP stack are present in the software repositories of most Linux distributions, provisioning a LAMP stack with some automation.[citation needed]

The LAMP bundle can be combined with many other free and open-source software packages, such as the following:

As another example, the software which Wikipedia and other Wikimedia projects use for their underlying infractructure 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]

Variants[edit]

"WAMP" redirects here. For other uses, see WAMP (disambiguation).
Main article: List of AMP packages

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 the equivalent installation on a Microsoft Windows operating system is known as WAMP. An alternative running IIS in place of Apache called WIMP. Variants involving other operating systems include MAMP (Macintosh), SAMP (Solaris), FAMP (FreeBSD) and iAMP (iSeries).

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

Software components[edit]

High-level overview of LAMP components

Linux[edit]

Main article: 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 was shared between Debian and Ubuntu, while RHEL, Fedora and CentOS together shared 37.3%.[4]

Apache[edit]

Main article: 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.

The Apache HTTP Server has been the most popular web server on the public 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.[5] In June 2014, Apache was estimated to serve 52.27% of all active websites, followed by nginx with 14.36%.[6]

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 is 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 schemes.

MySQL[edit]

Main article: MySQL

MySQL's original role as the LAMP's relational database management system (RDBMS) has since been alternately provisioned by other RDBMSs such as MariaDB, MongoDB, and PostgreSQL.

MySQL is a multithreaded, multi-user, SQL database management system (DBMS),[7] acquired by Sun Microsystems in 2008, which was then acquired by Oracle Corporation in 2010.[8][9] 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.

MariaDB is a community-developed fork of MySQL, led by its original developers.

MongoDB is a widely used open-source NoSQL database. MongoDB eschews the traditional table-based 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[edit]

Main article: PHP

PHP's role as the LAMP's application programming language has also been provisioned 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.[10]

PHP is free software released under the PHP License, which is incompatible with the GNU General Public License (GPL) due to the PHP License's restrictions on the usage of the term PHP.[11]

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

Python is a widely used general-purpose, high-level programming language.[15] Python supports multiple programming paradigms, including object-oriented, imperative and functional programming or procedural styles. It features a dynamic type system, automatic memory management, and a standard library.[16] 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[edit]

Specific solutions are required for web sites 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, which implement a master/slave relationship between the original database (master) and its copies (slaves).[17]

Such high-availability setups can improve the availability of LAMP instances by providing various forms of redundancy, making it possible for a certain number of an instance's components (separate servers) to experience downtime without interrupting the users of services provided by a LAMP instance. Also, such redundant setups allow for hardware failures resulting in data loss on individual servers, without the collectively stored data actually becoming lost. Beside higher availability, such LAMP setups can provide almost linear improvements in performance for services where the number of internal database read operations is much higher than the number of write/update operations.[17]

See also[edit]

References[edit]

  1. ^ "LAMP (Linux, Apache, MySQL, PHP)". SearchEnterpriseLinux. Retrieved 28 August 2014. 
  2. ^ "LEMP Stack (Linux, Nginx, MySQL, PHP)". lemp.io. Retrieved 2014-10-15. 
  3. ^ "Featured Users". PostgreSQL. Retrieved 2014-01-22. 
  4. ^ "Debian/Ubuntu extend the dominance in the Linux web server market". W³Techs. 2013-10-21. 
  5. ^ "June 2013 Web Server Survey". Netcraft. Retrieved 2014-06-27. 
  6. ^ "June 2014 Web Server Survey". Netcraft. Retrieved 2014-06-27. 
  7. ^ "Top Reasons for Product Managers to Embed". MySQL. Retrieved 2014-07-27. 
  8. ^ Category: Computer Articles (2014-05-21). "Dispelling the Myths". GrnLight.net. Retrieved 2014-07-27. 
  9. ^ "Sun Locks Up MySQL, Looks To Future Web Development". InformationWeek. Retrieved 2014-07-27. 
  10. ^ "Introduction: What can PHP do?". PHP Manual. Retrieved 2009-03-05. 
  11. ^ "GPL-Incompatible, Free Software Licenses". Various Licenses and Comments about Them. Free Software Foundation. Retrieved 2012-03-11. 
  12. ^ "About Perl". perl.org. Retrieved 2013-04-20. ""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"." 
  13. ^ Wall, Larry, Tom Christiansen and Jon Orwant (July 2000). Programming Perl, Third Edition. O'Reilly Media. ISBN 0-596-00027-8. 
  14. ^ Smith, Roderick W. (21 Jun 2002). Advanced Linux Networking. Addison-Wesley Professional. p. 594. ISBN 978-0-201-77423-8. 
  15. ^ "Programming Language Trends - O'Reilly Radar". Radar.oreilly.com. 2006-08-02. Retrieved 2013-07-17. 
  16. ^ "About Python". Python Software Foundation. Retrieved 24 April 2012. , second section "Fans of Python use the phrase "batteries included" to describe the standard library, which covers everything from asynchronous processing to zip files."
  17. ^ a b 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 20 (1). Facta Universitatis. p. 31–43. Retrieved 30 January 2014. 

External links[edit]