LAMP ( L inux, A pache, M ySQL, P HP / P erl / P ython) - это аббревиатура, обозначающая один из наиболее распространенных стеков решений для многих самых популярных веб- приложений . Однако теперь LAMP относится к общей модели программного стека, и ее компоненты в значительной степени взаимозаменяемы. [1]
Каждая буква в аббревиатуре обозначает один из четырех строительных блоков с открытым исходным кодом :
- L inux для операционной системы
- Паче HTTP Server
- M ySQL для системы управления реляционными базами данных
- P Язык программирования HP
Компоненты стека LAMP присутствуют в репозиториях программного обеспечения большинства дистрибутивов Linux . [2]
История
Аббревиатура LAMP была придумана Майклом Кунце в декабрьском выпуске 1998 года немецкого компьютерного журнала Computertechnik , поскольку он продемонстрировал, что комплект бесплатного программного обеспечения с открытым исходным кодом «может быть реальной альтернативой дорогим коммерческим пакетам». С тех пор O'Reilly Media и MySQL объединились, чтобы популяризировать аббревиатуру и пропагандировать ее использование. [3] Термин и концепция стали популярными, потому что это был один из первых стеков программного обеспечения с открытым исходным кодом для Интернета [4] с достаточными возможностями для размещения различных веб-фреймворков, таких как Joomla , WordPress и Drupal . [ необходима цитата ]
Варианты
Модель LAMP была адаптирована к другим компонентам, хотя обычно состоит из бесплатного программного обеспечения с открытым исходным кодом . Например, эквивалентная установка в операционных системах семейства Microsoft Windows известна как WAMP, а эквивалентная установка в macOS известна как MAMP . [ необходима цитата ]
С ростом использования архетипической LAMP появились вариации и ретронимы для других комбинаций операционной системы, веб-сервера, базы данных и языка программного обеспечения. Например, эквивалентная установка в семействе операционных систем Microsoft Windows известна как WAMP . Альтернативный вариант запуска IIS вместо Apache называется WIMP . Варианты, включающие другие операционные системы, включают MAMP ( macOS ), SAMP ( Solaris ), FAMP ( FreeBSD ), iAMP ( IBM i ) и XAMPP (кросс-платформенный). [ необходима цитата ]
Веб-сервер или система управления базами данных также различаются. LEMP - это версия, в которой Apache был заменен более легким веб-сервером Nginx . [5] Версия, в которой MySQL был заменен на PostgreSQL , называется LAPP, или иногда с сохранением исходного акронима, LAMP (Linux / Apache / Middleware (Perl, PHP, Python, Ruby) / PostgreSQL). [6]
Пакет LAMP можно комбинировать со многими другими бесплатными пакетами программного обеспечения с открытым исходным кодом, включая:
- netsniff-ng для тестирования и повышения безопасности
- Snort , система обнаружения вторжений (IDS) и предотвращения вторжений (IPS)
- RRDtool для диаграмм
- Nagios , Collectd или Cacti для мониторинга.
В качестве другого примера, программное обеспечение, которое Википедия и другие проекты Wikimedia Foundation используют для своей базовой инфраструктуры, представляет собой настраиваемый стек LAMP с такими дополнениями, как Linux Virtual Server (LVS) для балансировки нагрузки и Ceph и Swift для распределенных хранилищ объектов. [ необходима цитата ]
Программные компоненты
Linux
Linux - это Unix-подобная компьютерная операционная система, созданная по модели разработки и распространения бесплатного программного обеспечения с открытым исходным кодом . Большинство дистрибутивов Linux как коллекции программного обеспечения, основанного на ядре Linux и часто на системе управления пакетами , предоставляют полные настройки LAMP через свои пакеты . По данным W3Techs в октябре 2013 года, 58,5% доли рынка веб-серверов делятся между Debian и Ubuntu , в то время как RHEL , Fedora и CentOS вместе разделили 37,3%. [7]
Apache
Роль веб-сервера LAMP традиционно предоставлялась Apache, и с тех пор в него были включены другие веб-серверы, такие как Nginx .
Apache HTTP Server был самым популярным веб - сервером в сети Интернет общего пользования . В июне 2013 года Netcraft оценила, что Apache обслуживает 54,2% всех активных веб-сайтов и 53,3% ведущих серверов во всех доменах. [8] По оценкам, в июне 2014 года Apache обслуживал 52,27% всех активных веб-сайтов, за ним следовал Nginx с 14,36%. [9]
Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation . Apache , выпущенный по лицензии Apache, является программным обеспечением с открытым исходным кодом . Поддерживается широкий спектр функций, и многие из них реализованы в виде скомпилированных модулей, расширяющих основные функции Apache. Они могут варьироваться от поддержки серверного языка программирования до аутентификации.
Альтернативы MySQL и базам данных
Первоначальная роль MySQL как системы управления реляционными базами данных LAMP с тех пор поочередно обеспечивалась другими, такими как PostgreSQL , MariaDB (разработанная сообществом вилка MySQL, разработанная его первоначальными разработчиками) и даже базами данных NoSQL, такими как MongoDB .
MySQL является многопоточной , многопользовательский , SQL системы управления базами данных , [10] приобрела Sun Microsystems в 2008 году, который затем был приобретенными корпорацией Oracle в 2010 году [11] С первых лет команда MySQL сделала свой исходный код доступны в соответствии с условиями Стандартной общественной лицензии GNU , а также в рамках различных соглашений о правах собственности .
PostgreSQL также является совместимой с ACID системой управления объектно-реляционными базами данных, разработанной PostgreSQL Global Development Group.
MongoDB - это база данных NoSQL веб-масштаба [12], которая отказывается от традиционной структуры реляционной базы данных в пользу JSON- подобных документов с динамическими схемами (называя формат BSON ), что упрощает и ускоряет интеграцию данных в определенные типы приложений.
PHP и альтернативы
Роль PHP как языка программирования приложений LAMP также выполнялась другими языками, такими как Perl и Python .
PHP - это язык сценариев на стороне сервера, предназначенный для веб-разработки, но также используемый как язык программирования общего назначения . Код PHP интерпретируется веб-сервером через модуль процессора PHP, который генерирует результирующую веб-страницу. Команды PHP могут быть дополнительно встроены непосредственно в исходный HTML- документ вместо вызова внешнего файла для обработки данных. Он также был расширен за счет включения возможности интерфейса командной строки и может использоваться в автономных графических приложениях . [13] PHP - это бесплатное программное обеспечение, выпущенное в соответствии с условиями лицензии PHP , которая несовместима с Стандартной общественной лицензией GNU (GPL) из-за ограничений, налагаемых лицензией PHP на использование термина PHP . [14]
Perl - это семейство универсальных интерпретируемых динамических языков программирования высокого уровня . Языки этого семейства включают Perl 5 и Raku . [15] Они предоставляют расширенные средства обработки текста без ограничений произвольной длины данных, как у многих современных инструментов командной строки Unix , [16] облегчая манипулирование текстовыми файлами . Perl 5 получил широкую популярность в конце 1990-х как язык сценариев CGI для Интернета, отчасти из-за его возможностей синтаксического анализа . [17]
Python - широко используемый интерпретируемый язык программирования общего назначения высокого уровня . [18] Python поддерживает несколько парадигм программирования , включая объектно-ориентированные , императивные , функциональные и процедурные парадигмы. Он имеет систему динамических типов , автоматическое управление памятью , стандартную библиотеку и строгое использование пробелов . [19] Как и другие динамические языки , Python часто используется как язык сценариев , но также используется в широком диапазоне контекстов, не связанных со сценариями.
Высокая доступность и балансировка нагрузки
Для веб-сайтов, которые обслуживают большое количество запросов или предоставляют услуги, требующие длительного времени безотказной работы , требуются специальные решения . Подходы к обеспечению высокой доступности для стека LAMP могут включать несколько веб-серверов и серверов баз данных в сочетании с дополнительными компонентами, которые выполняют логическую агрегацию ресурсов, предоставляемых каждым из серверов, а также распределение рабочей нагрузки между несколькими серверами. Агрегирование веб-серверов может быть обеспечено путем размещения перед ними балансировщика нагрузки , например, с помощью Linux Virtual Server (LVS). Для объединения серверов баз данных MySQL предоставляет механизмы внутренней репликации , которые реализуют отношения главный / подчиненный между исходной базой данных (главной) и ее копиями (подчиненными). [20]
Такие настройки высокой доступности могут также улучшить доступность экземпляров LAMP, обеспечивая различные формы избыточности , позволяя определенному количеству компонентов (отдельных серверов) испытывать простои, не прерывая пользователей услуг, предоставляемых в целом. Такие избыточные настройки могут также обрабатывать аппаратные сбои, приводящие к потере данных на отдельных серверах, таким образом, чтобы предотвратить фактическую потерю коллективно хранимых данных. Помимо более высокой доступности, такие установки LAMP способны обеспечить почти линейное улучшение производительности для служб, у которых количество внутренних операций чтения базы данных намного превышает количество операций записи / обновления. [20]
Смотрите также
- Список пакетов Apache – MySQL – PHP
- Список пакетов Nginx – MySQL – PHP
- LYME (программный пакет) - стек решений на основе Erlang
- MEAN (программный пакет) - программный стек JavaScript для создания динамических веб-сайтов и веб-приложений.
- Стек решений
- Система управления веб-контентом
- Установщик веб-платформы
Рекомендации
- ^ «ЛАМПА (Linux, Apache, MySQL, PHP)» . SearchEnterpriseLinux . Проверено 28 августа 2014 .
- ^ «Серверы Викимедиа - Мета» . meta.wikimedia.org . Проверено 17 февраля 2018 .
- ^ Кей, Рассел (25 сентября 2006 г.). «Как: ЛАМПА» . Компьютерный мир . Проверено 31 марта 2021 года .
- ^ "Стек ЛАМПА" . IBM Cloud Learn Hub . IBM . Проверено 31 марта 2021 года .
- ^ «Стек LEMP (Linux, Nginx, MySQL, PHP)» . lemp.io . Проверено 15 октября 2014 года .
- ^ «Избранные пользователи» . PostgreSQL. Архивировано из оригинального 22 января 2014 года . Проверено 22 января 2014 .
- ^ «Debian / Ubuntu расширяют доминирование на рынке веб-серверов Linux» . W³Techs. 21 октября 2013 г.
- ^ «Обзор веб-серверов, июнь 2013 г.» . Неткрафт . Проверено 27 июня 2014 года .
- ^ «Обзор веб-серверов, июнь 2014 г.» . Неткрафт . Проверено 27 июня 2014 года .
- ^ «Основные причины для встраивания продуктовых менеджеров» . MySQL. Архивировано из оригинального 2 -го июля 2014 года . Проверено 27 июля 2014 года .
- ^ «Sun блокирует MySQL, смотрит на будущее веб-разработки» . Информационная неделя. Архивировано из оригинального 28 февраля 2008 года . Проверено 27 июля 2014 года .
- ^ Эпизод 1 - Mongo DB Is Web Scale , получено 6 мая 2021 г.
- ^ «Введение: что умеет PHP?» . Руководство по PHP . Проверено 5 марта 2009 года .
- ^ «Несовместимые с GPL лицензии свободных программ» . Различные лицензии и комментарии о них . Фонд свободного программного обеспечения . Проверено 11 марта 2012 года .
- ^ «О Perl» . perl.org . Проверено 20 апреля 2013 года .
«Perl» - это семейство языков, «Perl 6» - это часть семейства, но это отдельный язык, у которого есть собственная команда разработчиков. Его существование не оказывает существенного влияния на дальнейшее развитие «Perl 5».
- ^ Уолл, Ларри , Том Кристиансен и Джон Орвант (июль 2000 г.). Программирование на Perl, третье издание . O'Reilly Media . ISBN 0-596-00027-8.CS1 maint: несколько имен: список авторов ( ссылка )
- ^ Смит, Родерик В. (21 июня 2002 г.). Продвинутая сеть Linux . Эддисон-Уэсли Профессионал. п. 594. ISBN 978-0-201-77423-8.
- ^ «Тенденции языков программирования - радар О'Рейли» . Radar.oreilly.com. 2 августа 2006 . Проверено 17 июля 2013 года .
- ^ «О Python» . Фонд программного обеспечения Python . Проверено 24 апреля 2012 года .
- ^ а б Симич, Драган; Ристич, Сречко; Обрадович, Слободан (апрель 2007 г.). «Измерение достигнутых уровней производительности веб-приложений с помощью распределенной реляционной базы данных» (PDF) . Электроника и энергетика . Facta Universitatis. п. 31–43 . Проверено 30 января 2014 .
Внешние ссылки
- Установите сервер LAMP в Ubuntu Linux
- Установите сервер LAMP в Debian GNU / Linux
- Установите сервер LAMP в SUSE Linux
- Установите сервер LAMP на Amazon AWS
- Установите сервер LAMP на CentOS 5.x.