LAMP (Linux, Apache, MySQL, PHP/Perl/Python) é um acrônimo que denota um dos conjuntos de soluções mais comuns para muitas das aplicações mais populares na web. No entanto, LAMP agora se refere a um modelo de conjunto de software genérico e seus componentes são amplamente intercambiáveis.[1]

Cada letra da sigla representa um de seus quatro blocos de construção de código aberto:

Os componentes dos conjuntos LAMP estão presentes nos repositórios de software da maioria das distribuições Linux.[2]

História

editar

A sigla LAMP foi cunhada por Michael Kunze na edição de dezembro de 1998 da Computertechnik, uma revista de computação alemã, quando ele demonstrou que um pacote de software livre e de código aberto "poderia ser uma alternativa viável para pacotes comerciais caros". Desde então, a O'Reilly Media e o MySQL se uniram para popularizar a sigla e evangelizar seu uso.[3] O termo e o conceito se tornaram populares porque foi um dos primeiros conjuntos de software de código aberto para a web,[4] com recursos suficientes para hospedar uma variedade de estruturas da web, como o Joomla, o WordPress e o Drupal.[carece de fontes?]

Variantes

editar

O modelo LAMP foi adaptado para outros componentes, embora normalmente consistindo em software livre e de código aberto. Por exemplo, uma instalação equivalente na família de sistemas operacionais Microsoft Windows é conhecida como WAMP e uma instalação equivalente no macOS é conhecida como MAMP.[carece de fontes?]

Com o uso crescente do LAMP arquetípico, surgiram variações e retrônimos para outras combinações de sistema operacional, servidor web, banco de dados e linguagem de software. Por exemplo, uma instalação equivalente na família do sistema operacional Microsoft Windows é conhecida como WAMP. Uma alternativa para executar os serviços de informação de Internet (IIS) no lugar do Apache é chamada de WIMP. Variantes envolvendo outros sistemas operacionais incluem o MAMP (macOS), o SAMP (Solaris), o FAMP (FreeBSD), o iAMP (IBM i) e o XAMPP (plataforma cruzada).[carece de fontes?]

O servidor web ou sistema de gerenciamento de banco de dados também varia. O LEMP é uma versão em que o Apache foi substituído por um servidor web mais leve, o Nginx.[5] Uma versão em que o MySQL foi substituído pelo PostgreSQL é chamada de LAPP, ou às vezes mantendo a sigla original, LAMP (Linux / Apache / Middleware (Perl, PHP, Python, Ruby) / PostgreSQL).[6]

O pacote LAMP pode ser combinado com muitos outros pacotes de software gratuitos e de código aberto, incluindo:

Como outro exemplo, o software que a Wikipédia e outros projetos da fundação Wikimedia usam para sua infraestrutura subjacente é um conjunto LAMP personalizado com adições, como o servidor virtual Linux (LVS) para balanceamento de carga e a Ceph e a Swift para o armazenamento de objetos distribuídos.[carece de fontes?]

Componentes de software

editar
 Ver artigo principal: Linux

O Linux é um sistema operacional de computador semelhante ao Unix montado sob o modelo de desenvolvimento e distribuição de software livre e de código aberto. A maioria das distribuições Linux, como coleções de software baseadas no núcleo (kernel) Linux e frequentemente em um sistema de gerenciamento de pacotes, fornecem configurações LAMP completas por meio de seus pacotes. De acordo com a W3Techs em outubro de 2013, 58,5% da participação no mercado de servidores web era compartilhada entre o Debian e o Ubuntu, enquanto o RHEL, o Fedora e o CentOS juntos compartilhavam 37,3%.[7]

Apache

editar
 Ver artigo principal: Servidor Apache

A função de servidor web do LAMP é tradicionalmente fornecida pelo Apache e, desde então, incluiu outros servidores web, como o Nginx.

O servidor HTTP Apache tem sido o servidor web mais popular na Internet pública. Em junho de 2013, a Netcraft estimou que o Apache atendia 54,2% de todos os sites ativos e 53,3% dos principais servidores em todos os domínios.[8] Em junho de 2014, o Apache foi estimado servir 52,27% de todos os sites ativos, seguido pelo Nginx com 14,36%.[9]

O Apache é desenvolvido e mantido por uma comunidade aberta de desenvolvedores sob os auspícios da fundação Apache (Apache software foundation). Distribuído sob a licença Apache, o Apache é um software de código aberto. Uma grande variedade de recursos são suportados, e muitos deles são implementados como módulos compilados que estendem a funcionalidade central do Apache. Isso pode variar de suporte a linguagem de programação do lado do servidor à autenticação.

MySQL e alternativas de banco de dados

editar
 Ver artigos principais: MySQL, MariaDB e MongoDB

A função original do MySQL como o sistema de gerenciamento de banco de dados relacional do LAMP tem sido provisionada alternadamente por outros como o PostgreSQL, o MariaDB (uma ramificação do MySQL desenvolvida pela comunidade desenvolvido por seus desenvolvedores originais) e até mesmo bancos de dados NoSQL como o MongoDB.

O MySQL é um sistema de gerenciamento de banco de dados de linguagem de consulta estruturada (SQL) multi segmentado e multiusuário,[10] foi adquirido pela Sun Microsystems em 2008, que foi então adquirida pela corporação Oracle em 2010.[11] Desde seus primeiros anos, a equipe do MySQL disponibilizou seu código fonte sob os termos da licença pública geral GNU (GPL), bem como sob uma variedade de acordos proprietários.

O PostgreSQL também é um sistema de gerenciamento de banco de dados relacional ao objeto compatível com atomicidade, consistência, isolamento e durabilidade (ACID) desenvolvido pelo grupo de desenvolvimento global PostgreSQL.

O MongoDB é um banco de dados NoSQL que evita a estrutura de banco de dados relacional tradicional em favor de documentos do tipo JSON com esquemas dinâmicos (chamando o formato BSON), tornando a integração de dados em certos tipos de aplicativos mais fácil e rápida.

PHP e alternativas

editar
 Ver artigos principais: PHP, Perl e Python

O papel da PHP como linguagem de programação de aplicativos do LAMP também foi desempenhado por outras linguagens, como a Perl e a Python.

A PHP é uma linguagem de script do lado do servidor projetada para desenvolvimento web, mas também usada como uma linguagem de programação de propósito geral. O código da PHP é interpretado por um servidor web por meio de um módulo processador de PHP, que gera a página web resultante. Os comandos da PHP podem opcionalmente ser embutidos diretamente em um documento HTML fonte em vez de chamar um arquivo externo para processar dados. Ela também evoluiu para incluir um recurso de interface de linha de comando e pode ser usada em aplicativos gráficos independentes.[12] A linguagem de programação de aplicativos PHP é um software livre liberado sob os termos da licença PHP, que é incompatível com a licença pública geral GNU (GPL) devido às restrições que a licença PHP coloca no uso do termo PHP.[13]

A Perl é uma família de linguagens de programação dinâmicas, interpretadas e de alto nível. As linguagens nesta família incluem a Perl 5 e a Raku.[14] Elas fornecem recursos avançados de processamento de texto sem os limites de comprimento de dados arbitrários de muitas ferramentas de linha de comando Unix contemporâneas,[15] facilitando a manipulação de arquivos de texto. A Perl 5 ganhou grande popularidade no final de 1990 como uma linguagem de script de interface comum de ligação (CGI) para a Web, em parte devido às suas habilidades de análise. [16]

A Python é uma linguagem de programação interpretada de alto nível e de uso geral amplamente usada.[17] A Python suporta múltiplos paradigmas de programação, incluindo paradigmas orientados a objetos, imperativos, funcionais e procedurais. Possui um sistema de tipo dinâmico, gerenciamento de memória automático, uma biblioteca padrão e uso estrito de espaços em branco.[18] Como outras linguagens dinâmicas, a Python é frequentemente usada como uma linguagem de script, mas também é usada em uma ampla variedade de contextos sem script.

Alta disponibilidade e balanceamento de carga

editar
 Ver artigos principais: Balanceamento de carga e Replicação de dados

Soluções específicas são necessárias para sites que atendem a um grande número de solicitações ou fornecem serviços que exigem alto tempo de atividade. Abordagens de alta disponibilidade para o conjunto LAMP podem envolver vários servidores web e de banco de dados, combinados com componentes adicionais que executam agregação lógica de recursos fornecidos por cada um dos servidores, bem como distribuição da carga de trabalho em vários servidores. A agregação de servidores web pode ser fornecida colocando um balanceador de carga na frente deles (usando o servidor virtual Linux(LVS), por exemplo). Para a agregação de servidores de banco de dados, o MySQL fornece mecanismos de replicação interna que implementam uma relação "mestre"/"servo" entre o banco de dados original ("mestre") e suas cópias ("servos").[19]

Essas configurações de alta disponibilidade também podem melhorar a disponibilidade de instâncias LAMP, fornecendo várias formas de redundância, tornando possível para um certo número de componentes (servidores separados) experimentar o tempo de inatividade sem interromper os usuários dos serviços fornecidos como um todo. Essas configurações redundantes também podem lidar com falhas de hardware que resultam em perda de dados em servidores individuais de uma forma que evita que os dados armazenados coletivamente sejam realmente perdidos. Além de maior disponibilidade, tais configurações LAMP são capazes de fornecer melhorias quase lineares no desempenho de serviços com o número de operações de leitura de banco de dados interno muito maior do que o número de operações de gravação/atualização.[19]

Ver também

editar

Referências

editar
  1. «LAMP (Linux, Apache, MySQL, PHP. Search enterprise Linux (em inglês). Consultado em 15 de dezembro de 2021. Cópia arquivada em 28 de novembro de 2021 
  2. Servidores Wikimedia - Meta. meta.wikimedia.org (em inglês). [S.l.: s.n.] Consultado em 15 de dezembro de 2021. Cópia arquivada em 10 de novembro de 2021 
  3. Kay, Russell (25 de setembro de 2006). «Como fazer: LAMP». Computer world (em inglês). Consultado em 15 de dezembro de 2021. Cópia arquivada em 11 de julho de 2021 
  4. «Conjunto LAMP». Hub de aprendizado na nuvem IBM (em inglês). IBM. Consultado em 15 de dezembro de 2021. Cópia arquivada em 15 de dezembro de 2021 
  5. «Conjunto LEMP (Linux, Nginx, MySQL, PHP)» (em inglês). lemp.io. Consultado em 16 de dezembro de 2021. Cópia arquivada em 19 de novembro de 2021 
  6. «Usuários em destaque» (em inglês). PostgreSQL. Consultado em 22 de janeiro de 2014. Arquivado do original em 22 de janeiro de 2014 
  7. «Debian/Ubuntu ampliam o domínio no mercado de servidores web Linux» (em inglês). W³Techs. 16 de dezembro de 2021 
  8. «Pesquisa de servidor web de junho de 2013» (em inglês). Netcraft. Consultado em 16 de dezembro de 2021. Cópia arquivada em 6 de março de 2021 
  9. «Pesquisa de servidor web de junho de 2014» (em inglês). Netcraft. Consultado em 16 de dezembro de 2021. Cópia arquivada em 21 de agosto de 2021 
  10. «Principais motivos para os gerentes de produto incorporarem» (em inglês). MySQL. Consultado em 27 de julho de 2014. Arquivado do original em 2 de julho de 2014 
  11. «A Sun "bloqueia" o MySQL e prevê um futuro desenvolvimento web» (em inglês). Information week. Consultado em 27 de julho de 2014. Arquivado do original em 28 de fevereiro de 2008 
  12. «Introdução: O que a PHP pode fazer?». Manual PHP (em inglês). Consultado em 16 de dezembro de 2021. Cópia arquivada em 15 de dezembro de 2021 
  13. «Licenças de software livre incompatíveis com a GPL». Várias licenças e comentários sobre elas (em inglês). Fundação do software livre (FSF). Consultado em 16 de dezembro de 2021. Cópia arquivada em 16 de dezembro de 2021 
  14. «Sobre a Perl» (em inglês). perl.org. Consultado em 16 de dezembro de 2021. Cópia arquivada em 22 de novembro de 2021. A "Perl" é uma família de linguagens, a "Perl 6" faz parte da família, mas é uma linguagem separada que tem sua própria equipe de desenvolvimento. Sua existência não tem impacto significativo no desenvolvimento contínuo da "Perl 5". 
  15. Wall, Larry; Tom Christiansen; Jon Orwant (julho de 2000). Programação em Perl, terceira edição (em inglês). [S.l.]: O'Reilly Media. ISBN 0-596-00027-8 
  16. Smith, Roderick W. (21 de junho de 2002). Rede Linux avançada (em inglês). [S.l.]: Addison-Wesley Professional. p. 594. ISBN 978-0-201-77423-8 
  17. «Tendências de linguagem de programação - Radar O'Reilly» (em inglês). radar.oreilly.com. 2 de agosto de 2006. Consultado em 16 de dezembro de 2021. Cópia arquivada em 24 de setembro de 2021 
  18. «Sobre a Python» (em inglês). Fundação do software Python. Consultado em 16 de dezembro de 2021. Cópia arquivada em 16 de dezembro de 2021 
  19. a b Simic, Dragan; Ristic, Srecko; Obradovic, Slobodan (abril de 2007). «Medição dos níveis de desempenho alcançados dos aplicativos da web com banco de dados relacional distribuído» (PDF). Eletrônica e energética (em inglês). Facta Universitatis. p. 31–43. Consultado em 16 de dezembro de 2021. Cópia arquivada (PDF) em 7 de outubro de 2021 

Ligações externas

editar