[Документация Yandex Cloud](../index.md) > [Облачная терминология](index.md) > Облачные вычисления и сервера > LAMP и LEMP

# Стеки LAMP и LEMP

LAMP и LEMP — это наборы технологий с открытым исходным кодом для разработки сайтов. LAMP включает в себя ОС [Linux](https://www.linux.org/), [HTTP-сервер Apache®](https://httpd.apache.org/), систему управления базами данных (СУБД) [MySQL®](https://www.mysql.com/) и язык программирования [PHP](https://www.php.net/), [Perl](https://www.perl.org/) или [Python](https://www.python.org/). Стек LEMP отличается тем, что вместо сервера Apache® используется сервер [Nginx](https://nginx.org/) (Engine-X).

LAMP-стек впервые был описан в 1998 году в немецком журнале о компьютерах и технике, но фактически использовался с 1995 года. Автор той статьи Майкл Кунце обратил внимание, что этот пакет программного обеспечения с открытым исходным кодом может стать более дешевой альтернативой коммерческим пакетам. Первыми идею подхватили разработчики MySQL®, которые популяризировали аббревиатуру и такой способ разработки.

Сегодня, помимо стека технологий, LAMP и LEMP также могут обозначать подход и совокупность идей для разработки сайтов или описывать инфраструктуру веб-приложения. Компоненты стеков изначально не были задуманы для работы в связке, однако благодаря их гибкости, открытому исходному коду и высокой производительности LAMP и LEMP теперь входят в большинство дистрибутивов ОС семейства Linux.

## Взаимодействие компонентов {#how-work}

Рассмотрим каждый компонент стеков:

* **Linux** — семейство операционных систем на базе ядра Linux. Большинство современных технологий работает на подобных ОС: от терминалов оплаты до серверов сайтов с миллиардами пользователей. Даже все 500 самых мощных [компьютеров](https://ru.wikipedia.org/wiki/Top500) работают на Linux.
* **Apache®** и **Nginx** — самые популярные серверы для разработки веб-приложений, которые отличаются рядом [особенностей](#differences).
* **MySQL®** — реляционная СУБД, которая используется в основном для работы со средними и большими проектами. MySQL® легко настраивается и взаимодействует практически со всеми технологиями для разработки.
* **PHP** — интерпретируемый язык веб-разработки. Интерпретируемость означает, что код, которым сервер отвечает пользователю, генерируется во время обращения. Это позволяет запускать приложение на любой платформе с установленным интерпретатором. По такому принципу работают и другие языки, которые чаще всего используются для работы в стеках.

Все эти технологии объединяет одна особенность — открытый исходный код. Это дает возможность бесплатно их использовать, настраивать под конкретные задачи и подключать к их развитию независимых разработчиков со всего мира.

Принцип работы сайта на LAMP- и LEMP-стеке довольно простой:

1. Все компоненты запускаются на ОС Linux.
1. Сервер Apache® или Nginx получает запрос и выдает требуемый контент, если он статичен (страницы, которые не меняются).
1. Если запрос требует динамические веб-страницы, то он передается на обработку PHP-компоненту.
1. PHP-компонент создает требуемый динамический контент (например, чек совершенной покупки). При необходимости на этом шаге происходит обращение к базе данных MySQL®.
1. PHP-компонент передает результат серверу, а сервер — пользователю в формате веб-страницы.

## Преимущества {#advantage}

Среди преимуществ такого подхода к разработке веб-приложений можно выделить:

* **Открытый исходный код.** Все компоненты стеков бесплатны. От разработчика понадобится только его опыт, время и оборудование.
* **Гибкость**. Вы можете использовать другие компоненты для разработки или совмещать LAMP и LEMP с ними, если конечный продукт того требует.
* **Безопасность**. Стеки имеют проверенную архитектуру и надежные методы шифрования, которые зарекомендовали себя в бизнесе.
* **Экономия времени**. Похожее решение почти наверняка когда-то было создано с помощью этих технологий, поэтому вы можете сэкономить значительную часть времени, не делая все с нуля.
* **Простота разработки**. Все компоненты легко настраиваются и взаимодействуют между собой, а если возникнут какие-то сложности, то в сети есть огромная база вспомогательных материалов и сообщество опытных разработчиков.

Из-за большой вариативности и гибкости найти нерешаемые недостатки практически невозможно, но иногда важно учитывать особенности каждого стека.

## Что выбрать? {#differences}

LAMP и LEMP отличаются только разновидностью сервера, но иногда это очень существенно. Поэтому требуется учитывать специфику разрабатываемого проекта. Сервер Apache® изначально разрабатывался по принципу «все в одном», а Nginx был призван исправить недостатки конкурента, но со временем оба продукта сильно усложнились.

Область сравнения | LAMP (Apache®) | LEMP (Nginx)
------------------|---------------|-------------
Установка и настройка | Прост в использовании, имеет множество модулей и вспомогательных материалов | Возможны трудности с установкой и настройкой
Производительность | Обрабатывает запросы последовательно, поэтому менее производителен | Обрабатывает запросы параллельно и может обеспечить лучшую производительность на часто посещаемых сайтах
Обработка PHP-запросов | Есть встроенный модуль | Нужно устанавливать отдельное приложение
Операционные системы | Стабилен на всех ОС семейств Linux и Windows | Возможны проблемы с работой на Windows
Работа с разными видами контента | Быстро обрабатывает динамический контент, но статический — в 2,5 раза медленнее конкурента | Высокая производительность с любым контентом, но для динамического требуется дополнительная настройка
Конфигурирование | Есть возможность конфигурирования на уровне директорий и без перезагрузки сервера. Удобно для администрирования нескольких сайтов на одном сервере | Требуется менять основной конфигурационный файл и перезагружать сервер, однако это повышает производительность и безопасность

Впрочем, для обычного небольшого веб-приложения эти отличия малозаметны, а для крупных продуктов серверы Apache® и Nginx можно использовать вместе. Например, популярен вариант, когда Nginx обрабатывает только те запросы, в которых он наиболее эффективен, а остальные отправляются на Apache®.

## Другие виды стеков для разработки веб-приложений {#alternative-stacks}

LAMP и LEMP до сих пор остаются самыми популярными стеками, но сегодня существуют и другие, выстроенные по той же концепции. Они различаются по комплектующим:

1. **Операционная система.** Изначально программы стека разрабатывались под Linux, но сегодня есть варианты адаптированные для пользователей Windows, Mac OS X, BSD, Solaris и другие.
1. **Сервер.** Вместо Apache® и Nginx иногда используются серверы LiteSpeed или Internet Information Services.
1. **База данных.** Возможны варианты, например, с PostgreSQL, MongoDB или MS SQL Server.
1. **Язык программирования.** Вместо PHP или в сочетании с ним иногда используются Python, Perl и Ruby.

## Применение LAMP и LEMP в реальных проектах {#usage}

Сегодня на стеке LAMP или LEMP работает большинство существующих сайтов. Например, если вы используете сайт с _системой управления содержимым_ (CMS) WordPress, а это около 40% всех сайтов в интернете, то он был разработан с помощью этих технологий. Помимо WordPress, со стеками работают такие CMS как Drupal, Joomla, LMS и многие другие. В сумме это более 60% всего интернета.

Если сравнивать стеки по отдельности, то в последние годы сервер Nginx немного обогнал Apache® по популярности. По [данным](https://w3techs.com/technologies/overview/web_server) 2024 года, на Nginx работает 34,2% всех сайтов, а на Apache® — 29,8%. На третьем месте оказался сервер Cloudflare, который набрал 21,9%. В 2022 году тройка была такой же, но Apache® отставал немного меньше — 31,4% против 33,6% у Nginx и 21,6% у Cloudflare.

## Перспективы развития технологий LAMP и LEMP {#future}

Несмотря на то, что у стеков нет серьезных проблем, разработчики компонентов продолжают их улучшать, а пользователи — находить новые решения. Можно отметить следующие тенденции развития:

* Наблюдается рост популярности Nginx сервера.
* Вместо PHP разработчики все чаще предпочитают использовать Python, Ruby или Node.js.
* Злоумышленники продолжают искать способы взлома, поэтому продолжается и работа над системами защиты.
* Вместе с ростом популярности веб-приложений и развитием технологий, растут и требования к масштабируемости. Новые версии компонентов должны это учитывать.
* Со стеками все чаще используют такие технологии контейнеризации, как Docker и [Kubernetes](../managed-kubernetes/index.md).
* Для повышения масштабируемости, гибкости и безопасности разработчики все чаще переносят свои проекты на облачные платформы.

## Применение LAMP и LEMP в Yandex Cloud {#yc}

Yandex Cloud предоставляет множество инструментов для разработки веб-приложений. На облачной платформе вы можете найти технологии стеков по отдельности или в виде образов для развертывания готовой виртуальной машины:

* [Публичный образ](https://yandex.cloud/ru-kz/marketplace/products/yc/lamp) с набором предустановленных программных компонентов LAMP.
* [Публичный образ](https://yandex.cloud/ru-kz/marketplace/products/yc/lemp) с набором предустановленных программных компонентов LEMP.

Также вы можете воспользоваться пошаговыми руководствами по созданию сайтов:

* [Руководство](../tutorials/web/lamp-lemp/index.md) по созданию сайта на LAMP- или LEMP-стеке с помощью облачных технологий.
* [Руководство](../tutorials/web/load-balancer-website/index.md) по созданию отказоустойчивого сайта с балансировкой нагрузки на LAMP- или LEMP-стеке.