LAMP (pacote de software) - LAMP (software bundle)

Uma visão geral de alto nível dos blocos de construção do LAMP e do ambiente geral do sistema

LAMP ( L inux, A pache, M ySQL, P HP / P erl / P ython) é um acrônimo que denota uma das pilhas de soluções mais comuns para muitos dos aplicativos mais populares da web . No entanto, LAMP agora se refere a um modelo de pilha de software genérico e seus componentes são amplamente intercambiáveis.

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

Os componentes da pilha LAMP estão presentes nos repositórios de software da maioria das distribuições Linux .

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, O'Reilly Media e MySQL se uniram para popularizar a sigla e evangelizar seu uso. O termo e o conceito se tornaram populares porque foi uma das primeiras pilhas de software de código aberto para a web, com recursos suficientes para hospedar uma variedade de estruturas da web, como Joomla , WordPress e Drupal .

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 .

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 o IIS no lugar do Apache é chamada de WIMP . Variantes envolvendo outros sistemas operacionais incluem MAMP ( macOS ), SAMP ( Solaris ), FAMP ( FreeBSD ), iAMP ( IBM i ) e XAMPP (plataforma cruzada).

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

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 Wikipedia e outros projetos da Wikimedia Foundation usam para sua infraestrutura subjacente é uma pilha LAMP personalizada com adições como Linux Virtual Server (LVS) para balanceamento de carga e Ceph e Swift para armazenamento de objetos distribuídos.

Componentes de software

Uma visão geral de alto nível dos componentes determinantes do LAMP (o Firefox serve apenas como um exemplo de navegador ).

Linux

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 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 é compartilhada entre Debian e Ubuntu , enquanto RHEL , Fedora e CentOS juntos compartilham 37,3%.

Apache

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

O Apache HTTP Server tem sido o servidor da 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. Em junho de 2014, o Apache foi estimado para servir 52,27% de todos os sites ativos, seguido pelo Nginx com 14,36%.

O Apache é desenvolvido e mantido por uma comunidade aberta de desenvolvedores sob os auspícios da Apache Software Foundation . Lançado 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 para autenticação.

MySQL e alternativas de banco de dados

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

MySQL é um de vários segmentos , multi-usuário , SQL sistema de gerenciamento de banco de dados , adquirida pela Sun Microsystems em 2008, que foi então adquirida pela Oracle Corporation em 2010. Desde seus primeiros anos, a equipe MySQL fez o seu código fonte disponível sob os termos da GNU General Public License , bem como sob uma variedade de acordos proprietários .

PostgreSQL também é um sistema de gerenciamento de banco de dados objeto-relacional compatível com ACID desenvolvido pelo PostgreSQL Global Development Group.

MongoDB é um banco de dados NoSQL em escala da web que evita a estrutura de banco de dados relacional tradicional em favor de documentos semelhantes a 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

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

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 PHP é interpretado por um servidor da web por meio de um módulo processador de PHP, que gera a página da web resultante. Comandos PHP podem opcionalmente ser embutidos diretamente em um documento de origem HTML em vez de chamar um arquivo externo para processar dados. Ele também evoluiu para incluir um recurso de interface de linha de comando e pode ser usado em aplicativos gráficos independentes . PHP é um software livre liberado sob os termos da Licença PHP , que é incompatível com a GNU General Public License (GPL) devido às restrições que a Licença PHP coloca no uso do termo PHP .

Perl é uma família de linguagens de programação dinâmicas , interpretadas e de alto nível . Os idiomas desta família incluem Perl 5 e Raku . Eles fornecem recursos de processamento de texto avançados sem os limites de comprimento de dados arbitrários de muitas ferramentas de linha de comando Unix contemporâneas , facilitando a manipulação de arquivos de texto . O Perl 5 ganhou grande popularidade no final dos anos 1990 como uma linguagem de script CGI para a Web, em parte devido às suas habilidades de análise .

Python é uma linguagem de programação interpretada de alto nível e de uso geral amplamente usada . Python suporta múltiplos paradigmas de programação , incluindo paradigmas orientados a objetos , imperativos , funcionais e procedurais . Ele apresenta um sistema de tipo dinâmico , gerenciamento automático de memória , uma biblioteca padrão e uso restrito de espaços em branco . Como outras linguagens dinâmicas , o Python é freqüentemente usado como uma linguagem de script , mas também é usado 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 . As abordagens de alta disponibilidade para a pilha LAMP podem envolver vários servidores da web e de banco de dados, combinados com componentes adicionais que realizam 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, por exemplo, usando Linux Virtual Server (LVS). Para a agregação de servidores de banco de dados, o MySQL fornece mecanismos de replicação internos que implementam uma relação mestre / escravo entre o banco de dados original (mestre) e suas cópias (escravos).

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, essas configurações de LAMP são capazes de fornecer melhorias quase lineares no desempenho de serviços com um 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.

Veja também

Referências

links externos