stringtranslate.com

LAMP (пакет программного обеспечения)

Общий обзор структурных элементов LAMP и общей системной среды

A LAMP ( Linux , Apache , MySQL , Perl / P HP/ P ython) — один из самых распространенных программных стеков для самых популярных веб- приложений . Его общая модель программного стека имеет в значительной степени взаимозаменяемые компоненты. [1]

Каждая буква в аббревиатуре обозначает один из четырех ее структурных элементов с открытым исходным кодом :

Компоненты стека LAMP присутствуют в репозиториях программного обеспечения большинства дистрибутивов Linux .

История

Аббревиатура LAMP была придумана Михаэлем Кунце в выпуске Computertechnik за декабрь 1998 года , немецком компьютерном журнале, когда он продемонстрировал, что пакет бесплатного и открытого программного обеспечения «может быть реальной альтернативой дорогим коммерческим пакетам». [2] С тех пор O'Reilly Media и MySQL объединились, чтобы популяризировать аббревиатуру и пропагандировать ее использование. [3] Один из первых стеков программного обеспечения с открытым исходным кодом для Интернета, термин и концепция стали популярными. Стек способен размещать различные веб-фреймворки и приложения, такие как WordPress и Drupal . [4]

Варианты

Модель LAMP была адаптирована к другим компонентам, хотя обычно состоит из бесплатного и открытого программного обеспечения . С ростом использования архетипического LAMP появились вариации и ретронимы для других комбинаций операционной системы, веб-сервера, базы данных и языка программного обеспечения. Например, эквивалентная установка в семействе операционных систем Microsoft Windows известна как WAMP . Альтернативный запуск IIS вместо Apache называется WIMP . Варианты, включающие другие операционные системы, включают DAMP, который использует операционную систему Darwin. [5]

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

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

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

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

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

линукс

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

Апачи

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

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

MySQL и альтернативы базам данных

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

MySQL — многопоточная , многопользовательская система управления базами данных SQL , [ 9] приобретенная корпорацией Sun Microsystems в 2008 году, которая затем была приобретена корпорацией Oracle в 2010 году. [10] С первых лет своей деятельности команда MySQL сделала свой исходный код доступным на условиях GNU General Public License , а также в соответствии с различными соглашениями о правах собственности .

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

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

PHP и альтернативы

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

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

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

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

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

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

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

Смотрите также

Ссылки

  1. ^ "LAMP (Linux, Apache, MySQL, PHP)". SearchEnterpriseLinux . Архивировано из оригинала 28 ноября 2021 г. . Получено 15 декабря 2021 г. .
  2. ^ Кунце, Михаэль (декабрь 1998 г.). "LAMP: Freeware Web Publishing System with Database Support". c't . Архивировано из оригинала 3 февраля 1999 г. Получено 15 июня 2024 г.
  3. ^ Кей, Рассел (25 сентября 2006 г.). «How To: LAMP». Computerworld . Архивировано из оригинала 11 июля 2021 г. . Получено 15 декабря 2021 г. .
  4. ^ "LAMP stack". IBM cloud learn hub . IBM. Октябрь 2015. Архивировано из оригинала 15 декабря 2021 г. Получено 15 декабря 2021 г.
  5. ^ Макинтош, Джейсон; Топорек, Чак; Стоун, Крис (2003). Mac OS X в двух словах. O'Reilly & Associates . С. 327–333. ISBN 978-0-596-00370-8.
  6. ^ "LEMP stack (Linux, Nginx, MySQL, PHP)". lemp.io. Архивировано из оригинала 19 ноября 2021 г. Получено 16 декабря 2021 г.
  7. ^ "Избранные пользователи". PostgreSQL. Архивировано из оригинала 22 января 2014 года . Получено 22 января 2014 года .
  8. ^ "Debian/Ubuntu расширяют господство на рынке веб-серверов Linux". W³Techs . Получено 16 декабря 2021 г. .
  9. ^ "Основные причины внедрения менеджерами по продуктам". MySQL. Архивировано из оригинала 2 июля 2014 г. Получено 27 июля 2014 г.
  10. ^ "Sun закрывает MySQL, смотрит в будущее веб-разработки". InformationWeek. Архивировано из оригинала 28 февраля 2008 года . Получено 27 июля 2014 года .
  11. ^ "Введение: Что может PHP?". PHP Manual . Архивировано из оригинала 15 декабря 2021 г. Получено 16 декабря 2021 г.
  12. ^ "GPL-несовместимые, лицензии свободного программного обеспечения". Различные лицензии и комментарии о них . Free software foundation. Архивировано из оригинала 16 декабря 2021 г. Получено 16 декабря 2021 г.
  13. ^ "About Perl". perl.org. Архивировано из оригинала 22 ноября 2021 г. Получено 16 декабря 2021 г."Perl" — это семейство языков, "Perl 6" — часть семейства, но это отдельный язык, имеющий собственную команду разработчиков. Его существование не оказывает существенного влияния на продолжающуюся разработку "Perl 5".
  14. ^ Уолл, Ларри ; Том Кристиансен; Джон Орвант (июль 2000 г.). Программирование на Perl, третье издание . O'Reilly Media . ISBN 0-596-00027-8.
  15. ^ Смит, Родерик В. (21 июня 2002 г.). Расширенные сетевые возможности Linux . Addison-Wesley Professional. стр. 594. ISBN 978-0-201-77423-8.
  16. ^ "Тенденции языка программирования – радар O'Reilly". Radar.oreilly.com. 2 августа 2006 г. Архивировано из оригинала 24 сентября 2021 г. Получено 16 декабря 2021 г.
  17. ^ "About Python". Python software foundation. Архивировано из оригинала 16 декабря 2021 г. Получено 16 декабря 2021 г.
  18. ^ ab Simic, Dragan; Ristic, Srecko; Obradovic, Slobodan (апрель 2007 г.). «Измерение достигнутых уровней производительности веб-приложений с распределенной реляционной базой данных» (PDF) . Электроника и энергетика . Facta Universitatis. стр. 31–43. Архивировано (PDF) из оригинала 7 октября 2021 г. . Получено 16 декабря 2021 г. .

Внешние ссылки