LAMP

Acrónimo

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

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

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

Linux

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

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

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

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

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

Referências

Ligações externas