Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Здесь отображается высокоуровневый обзор строительных блоков LAMP и общей системной среды в сочетании с дополнительно используемыми веб-кешами .

LAMP ( L inux, A pache, M ySQL, P HP / P erl / P ython) - очень распространенный пример стека веб-сервисов , названный как акроним названий его исходных четырех компонентов с открытым исходным кодом : операционная система Linux система , HTTP-сервер Apache , система управления реляционными базами данных MySQL (RDBMS) и язык программирования PHP . Компоненты LAMP в значительной степени взаимозаменяемы и не ограничиваются исходным выбором. В качестве стека решений LAMP подходит для создания динамических веб-сайтов и веб-приложений . [1]

С момента своего создания модель LAMP была адаптирована к другим компонентам, хотя обычно состоит из бесплатного программного обеспечения с открытым исходным кодом . Например, эквивалентная установка в операционных системах семейства Microsoft Windows известна как WAMP, а эквивалентная установка в macOS известна как MAMP .

Обзор [ править ]

Первоначально получившая популярность от фразы «Linux, Apache, MySQL и PHP», аббревиатура «LAMP» теперь относится к общей модели программного стека. Модульность стека LAMP может различаться, но эта конкретная программная комбинация стала популярной, потому что ее достаточно для размещения широкого спектра фреймворков веб-сайтов, таких как Joomla , WordPress и Drupal . Компоненты стека LAMP присутствуют в репозиториях программного обеспечения большинства дистрибутивов Linux . [2]

Пакет LAMP можно комбинировать со многими другими бесплатными пакетами программного обеспечения с открытым исходным кодом, такими как следующие:

  • netsniff-ng для тестирования и повышения безопасности
  • Snort , система обнаружения вторжений (IDS) и предотвращения вторжений (IPS)
  • RRDtool для диаграмм
  • Nagios , Collectd или Cacti для мониторинга.

Другой пример: программное обеспечение, которое Википедия и другие проекты Wikimedia Foundation используют для своей базовой инфраструктуры, представляет собой настроенный стек LAMP с такими дополнениями, как Linux Virtual Server (LVS) для балансировки нагрузки и Ceph и Swift для распределенных хранилищ объектов. [ необходима цитата ]

Варианты [ править ]

С ростом использования архетипической LAMP появились вариации и ретронимы для других комбинаций операционной системы, веб-сервера, базы данных и языка программного обеспечения. Например, эквивалентная установка в семействе операционных систем Microsoft Windows известна как WAMP . Альтернативный вариант запуска IIS вместо Apache называется WIMP . Варианты, включающие другие операционные системы, включают MAMP ( macOS ), SAMP ( Solaris ), FAMP ( FreeBSD ), iAMP ( iSeries ) и XAMPP (кросс-платформенный).

Веб-сервер или система управления базами данных также различаются. LEMP - это версия, в которой Apache был заменен более легким веб-сервером Nginx . [3] Версия, в которой MySQL был заменен на PostgreSQL , называется LAPP, или иногда с сохранением исходного акронима, LAMP (Linux / Apache / Middleware (Perl, PHP, Python, Ruby) / PostgreSQL). [4]

Компоненты программного обеспечения [ править ]

Общий обзор определяющих компонентов LAMP (Firefox служит просто примером браузера).

Linux [ править ]

Linux - это Unix-подобная компьютерная операционная система, созданная по модели разработки и распространения бесплатного программного обеспечения с открытым исходным кодом . Большинство дистрибутивов Linux как коллекции программного обеспечения, основанного на ядре Linux и часто на системе управления пакетами , предоставляют полные настройки LAMP через свои пакеты . По данным W3Techs на октябрь 2013 года, 58,5% доли рынка веб-серверов делятся между Debian и Ubuntu , в то время как RHEL , Fedora и CentOS вместе разделили 37,3%. [5]

Apache [ править ]

Роль веб-сервера LAMP традиционно предоставлялась Apache, и с тех пор в него были включены другие веб-серверы, такие как Nginx .

Apache HTTP Server был самым популярным веб - сервером в сети Интернет общего пользования . В июне 2013 года Netcraft оценила, что Apache обслуживает 54,2% всех активных веб-сайтов и 53,3% основных серверов во всех доменах. [6] По оценкам, в июне 2014 года Apache обслуживал 52,27% всех активных веб-сайтов, за ним следует Nginx с 14,36%. [7]

Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation . Apache - это программное обеспечение с открытым исходным кодом, выпущенное по лицензии Apache . Поддерживается широкий спектр функций, и многие из них реализованы в виде скомпилированных модулей, расширяющих основные функции Apache. Они могут варьироваться от поддержки языка программирования на стороне сервера до схем аутентификации.

MySQL и альтернативы [ править ]

Первоначальная роль MySQL как системы управления реляционными базами данных (СУБД) LAMP с тех пор поочередно обеспечивалась другими СУБД, такими как MariaDB или PostgreSQL, или даже базами данных NoSQL, такими как MongoDB.

MySQL является многопоточной , многопользовательский , SQL системы управления базами данных (СУБД), [8] приобрела Sun Microsystems в 2008 году, который затем был приобретенными корпорацией Oracle в 2010 году [9] С ранних лет, команда MySQL сделала его исходный код доступен в соответствии с условиями Стандартной общественной лицензии GNU , а также в соответствии с различными соглашениями о правах собственности .

MariaDB - это форк MySQL, разработанный сообществом под руководством его первоначальных разработчиков.

PostgreSQL также является совместимой с ACID системой управления объектно-реляционными базами данных, разработанной PostgreSQL Global Development Group.

MongoDB - это база данных NoSQL веб-масштаба, которая отказывается от традиционной структуры реляционной базы данных на основе таблиц в пользу документов, подобных JSON, с динамическими схемами (называя формат BSON ), что упрощает и ускоряет интеграцию данных в определенные типы приложений.

PHP и альтернативы [ править ]

Роль PHP как языка программирования приложений LAMP также выполнялась другими языками, такими как Perl и Python .

PHP - это язык сценариев на стороне сервера, предназначенный для веб-разработки, но также используемый как язык программирования общего назначения . Код PHP интерпретируется веб-сервером через модуль процессора PHP, который генерирует результирующую веб-страницу. Команды PHP могут быть дополнительно встроены непосредственно в исходный HTML- документ вместо вызова внешнего файла для обработки данных. Он также был расширен за счет включения возможности интерфейса командной строки и может использоваться в автономных графических приложениях . [10] PHP - бесплатное программное обеспечение, выпущенное в соответствии с условиями лицензии PHP., что несовместимо с Стандартной общественной лицензией GNU (GPL) из-за ограничений, накладываемых лицензией PHP на использование термина PHP . [11]

Perl - это семейство интерпретируемых динамических языков программирования высокого уровня общего назначения . Языки этого семейства включают Perl 5 и Raku . [12] Они предоставляют расширенные средства обработки текста без ограничений произвольной длины данных, как у многих современных инструментов командной строки Unix , [13] облегчая манипулирование текстовыми файлами . Perl 5 приобрел широкую популярность в конце 1990-х как язык сценариев CGI для Интернета, отчасти из-за его возможностей синтаксического анализа . [14]

Python - широко используемый интерпретируемый язык программирования общего назначения высокого уровня . [15] Python поддерживает несколько парадигм программирования , включая объектно-ориентированные , императивные , функциональные и процедурные парадигмы. Он имеет систему динамических типов , автоматическое управление памятью , стандартную библиотеку и строгое использование пробелов . [16] Как и другие динамические языки , Python часто используется как язык сценариев., но также используется в широком диапазоне контекстов, не связанных с написанием сценариев.

Высокая доступность и балансировка нагрузки [ править ]

Для веб-сайтов, которые обслуживают большое количество запросов или предоставляют услуги, требующие длительного времени безотказной работы , требуются специальные решения . Подходы к обеспечению высокой доступности для стека LAMP могут включать несколько веб-серверов и серверов баз данных в сочетании с дополнительными компонентами, которые выполняют логическое агрегирование ресурсов, предоставляемых каждым из серверов, а также распределение рабочей нагрузки по нескольким серверам. Агрегирование веб-серверов может быть обеспечено путем размещения перед ними балансировщика нагрузки , например, с помощью Linux Virtual Server (LVS). MySQL обеспечивает внутреннюю репликацию для объединения серверов баз данных.механизмы, которые реализуют отношения главный / подчиненный между исходной базой данных (мастер) и ее копиями (подчиненными). [17]

Такие настройки высокой доступности могут также улучшить доступность экземпляров LAMP, обеспечивая различные формы избыточности , позволяя определенному количеству компонентов (отдельных серверов) испытывать простои, не прерывая пользователей услуг, предоставляемых в целом. Такие избыточные настройки могут также обрабатывать аппаратные сбои, приводящие к потере данных на отдельных серверах, таким образом, чтобы предотвратить фактическую потерю коллективно хранимых данных. Помимо более высокой доступности, такие установки LAMP способны обеспечить почти линейное повышение производительности для служб, у которых количество внутренних операций чтения базы данных намного превышает количество операций записи / обновления. [17]

См. Также [ править ]

  • Комплект для археологических записей
  • Система управления контентом
  • Динамическая веб-страница
  • Список пакетов Apache – MySQL – PHP
  • Список пакетов Nginx – MySQL – PHP
  • LYME (программный пакет)  - стек решений на основе Erlang
  • MEAN (программный пакет)  - программный стек JavaScript для создания динамических веб-сайтов и веб-приложений.
  • Система управления веб-контентом
  • Установщик веб-платформы

Ссылки [ править ]

  1. ^ «ЛАМПА (Linux, Apache, MySQL, PHP)» . SearchEnterpriseLinux . Проверено 28 августа 2014 .
  2. ^ "Серверы Викимедиа - Мета" . meta.wikimedia.org . Проверено 17 февраля 2018 .
  3. ^ «Стек LEMP (Linux, Nginx, MySQL, PHP)» . lemp.io . Проверено 15 октября 2014 года .
  4. ^ «Избранные пользователи» . PostgreSQL. Архивировано из оригинального 22 января 2014 года . Проверено 22 января 2014 года .
  5. ^ «Debian / Ubuntu расширяет господство на рынке веб-серверов Linux» . W³Techs. 21 октября 2013 г.
  6. ^ «Обзор веб-сервера, июнь 2013 г.» . Netcraft . Проверено 27 июня 2014 .
  7. ^ «Обзор веб-сервера, июнь 2014 г.» . Netcraft . Проверено 27 июня 2014 .
  8. ^ «Основные причины, по которым менеджеры по продукту встраивают» . MySQL. Архивировано из оригинального 2 -го июля 2014 года . Проверено 27 июля 2014 года .
  9. ^ "Sun блокирует MySQL, смотрит в будущее веб-разработки" . Информационная неделя. Архивировано из оригинального 28 февраля 2008 года . Проверено 27 июля 2014 года .
  10. ^ "Введение: что умеет PHP?" . Руководство по PHP . Проверено 5 марта 2009 года .
  11. ^ «Несовместимые с GPL лицензии свободных программ» . Различные лицензии и комментарии о них . Фонд свободного программного обеспечения . Проверено 11 марта 2012 года .
  12. ^ "О Perl" . perl.org . Проверено 20 апреля 2013 года . «Perl» - это семейство языков, «Perl 6» - это часть семейства, но это отдельный язык, у которого есть собственная команда разработчиков. Его существование не оказывает существенного влияния на дальнейшее развитие «Perl 5».
  13. ^ Уолл, Ларри , Том Кристиансен и Джон Орвант (июль 2000 г.). Программирование на Perl, третье издание . O'Reilly Media . ISBN 0-596-00027-8.CS1 maint: multiple names: authors list (link)
  14. Смит, Родерик В. (21 июня 2002 г.). Продвинутая сеть Linux . Эддисон-Уэсли Профессионал. п. 594. ISBN 978-0-201-77423-8.
  15. ^ "Тенденции языка программирования - Радар О'Рейли" . Radar.oreilly.com. 2 августа 2006 . Проверено 17 июля 2013 года .
  16. ^ «О Python» . Фонд программного обеспечения Python . Проверено 24 апреля 2012 года .
  17. ^ a b Симич, Драган; Ристич, Сречко; Обрадович, Слободан (апрель 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.