stringtranslate.com

ЛАМПА (комплект программного обеспечения)

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

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

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

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

История

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

Варианты

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

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

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

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

Программные компоненты

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

Линукс

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

Апач

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

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

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

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

MySQL — это многопоточная , многопользовательская система управления базами данных SQL , [7] приобретенная Sun Microsystems в 2008 году, которая затем была приобретена Oracle Corporation в 2010 году . [8] С первых лет своего существования команда 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 вместо вызова внешнего файла для обработки данных. Он также был усовершенствован и теперь включает возможности интерфейса командной строки и может использоваться в автономных графических приложениях . [9] PHP — это свободное программное обеспечение, выпущенное на условиях лицензии PHP , которая несовместима с лицензией GNU General Public License (GPL) из-за ограничений лицензии PHP, налагаемых на использование термина PHP . [10]

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

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

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

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

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

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

Рекомендации

  1. ^ «LAMP (Linux, Apache, MySQL, PHP)» . SearchEnterpriseLinux . Архивировано из оригинала 28 ноября 2021 года . Проверено 15 декабря 2021 г.
  2. Кей, Рассел (25 сентября 2006 г.). «Как: ЛАМПА». Компьютерный мир . Архивировано из оригинала 11 июля 2021 года . Проверено 15 декабря 2021 г.
  3. ^ "Стек ЛАМПЫ" . Центр облачного обучения IBM . ИБМ. Октябрь 2015 г. Архивировано из оригинала 15 декабря 2021 г. Проверено 15 декабря 2021 г.
  4. ^ «Стек LEMP (Linux, Nginx, MySQL, PHP)» . lemp.io. Архивировано из оригинала 19 ноября 2021 года . Проверено 16 декабря 2021 г.
  5. ^ «Избранные пользователи». ПостгреSQL. Архивировано из оригинала 22 января 2014 года . Проверено 22 января 2014 г.
  6. ^ «Debian/Ubuntu расширяет доминирование на рынке веб-серверов Linux» . W³Techs . Проверено 16 декабря 2021 г.
  7. ^ «Основные причины для внедрения менеджеров по продуктам» . MySQL. Архивировано из оригинала 2 июля 2014 года . Проверено 27 июля 2014 г.
  8. ^ «Sun блокирует MySQL, смотрит на будущее веб-разработки» . Информационная неделя. Архивировано из оригинала 28 февраля 2008 года . Проверено 27 июля 2014 г.
  9. ^ «Введение: что может PHP?». Руководство по PHP . Архивировано из оригинала 15 декабря 2021 года . Проверено 16 декабря 2021 г.
  10. ^ «GPL-несовместимые лицензии свободного программного обеспечения» . Различные лицензии и комментарии к ним . Фонд свободного программного обеспечения. Архивировано из оригинала 16 декабря 2021 года . Проверено 16 декабря 2021 г.
  11. ^ «О Перле». perl.org. Архивировано из оригинала 22 ноября 2021 года . Проверено 16 декабря 2021 г.«Perl» — это семейство языков, «Perl 6» — часть семейства, но это отдельный язык, имеющий собственную команду разработчиков. Его существование не оказывает существенного влияния на дальнейшее развитие «Perl 5».
  12. ^ Уолл, Ларри ; Том Кристиансен; Джон Орвант (июль 2000 г.). Программирование на Perl, третье издание . О'Рейли Медиа . ISBN 0-596-00027-8.
  13. Смит, Родерик В. (21 июня 2002 г.). Продвинутая сеть Linux . Аддисон-Уэсли Профессионал. п. 594. ИСБН 978-0-201-77423-8.
  14. ^ «Тенденции в языке программирования - радар О'Рейли» . Радар.oreilly.com. 2 августа 2006 г. Архивировано из оригинала 24 сентября 2021 г. Проверено 16 декабря 2021 г.
  15. ^ «О Питоне». Основа программного обеспечения Python. Архивировано из оригинала 16 декабря 2021 года . Проверено 16 декабря 2021 г.
  16. ^ аб Симич, Драган; Ристич, Сречко; Обрадович, Слободан (апрель 2007 г.). «Измерение достигнутого уровня производительности веб-приложений с распределенной реляционной базой данных» (PDF) . Электроника и энергетика . Факта Университета. п. 31–43. Архивировано (PDF) из оригинала 7 октября 2021 года . Проверено 16 декабря 2021 г.

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