Кіріспе

LAMP (Linux, Apache, MySQL, Perl/PHP/Python) – веб-хостингтің кең таралған шешімінің аббревиатурасы. Бұл вебтің ең танымал қолданбалары үшін ең көп қолданылатын бағдарламалық жиын. Оның жалпы бағдарламалық стек моделіндегі компоненттерді бір-бірімен алмастыруға болады. Аббревиатурадағы әр әріп оның төрт ашық кодты құрылыс бөлігін көрсетеді: Linux – операциялық жүйе, Apache HTTP Server – веб-сервер, MySQL – реляциялық деректер базасын басқару жүйесі, Perl, PHP немесе Python – бағдарламалау тілі. LAMP стек компоненттері көптеген Linux дистрибутивтерінің бағдарламалық пакеттерінің репозиторийлерінде кездеседі.

Тарих

LAMP аббревиатурасын Майкл Кунзе 1998 жылғы желтоқсанда шыққан неміс компьютерлік журналы Computertechnik-те «тегін және ашық кодты бағдарламалық жасақтама ең қымбат коммерциялық пакеттерге тиімді балама бола алады» екенін көрсеткен кезде ойлап тапты. Содан бері O'Reilly Media және MySQL бірлесіп осы аббревиатураны танымал етуге және оны қолдануды насихаттауға кірісті. Веб үшін жасалған алғашқы ашық кодты бағдарламалық жасақтама жиынтығы ретінде, термин мен ұғым кеңінен танымал болды. Бұл жиын WordPress және Drupal сияқты әртүрлі веб-фреймворктер мен қолданбаларды іске қосуға мүмкіндік береді.

Linux жүйесі

Linux – Unix сияқты компьютерлік операциялық жүйе, ол еркін және ашық кодты бағдарламалық жасақтаманы әзірлеу және тарату үлгісі бойынша құрастырылған. Көптеген Linux дистрибутивтері, Linux ядросы мен көбінесе пакеттік жүйе басқару құралына негізделген бағдарламалық жасақтамалар жиынтығы ретінде, өз пакеттері арқылы LAMP конфигурациясын толыққанды түрде орнатуға мүмкіндік береді. W3Techs мәліметі бойынша, 2013 жылдың қазанында веб-серверлер нарығының 58,5 пайызы Debian және Ubuntu-ға тиесілі болса, RHEL, Fedora және CentOS бірлесіп 37,3 пайызды құрады.

Апачилер

LAMP веб-серверінің рөлін дәстүрлі түрде Apache атқарды, кейіннен Nginx сияқты басқа веб-серверлер де қосылды. Apache, Apache Software Foundation қолдауымен ашық қауымдастықтағы әзірлеушілер тарапынан жасалып, күтіліп келеді. Apache лицензиясымен шығарылған Apache – ашық кодты бағдарламалық қамтамасы. Ол кең ауқымды мүмкіндіктерді қолдайды, олардың көпшілігі Apache-тің негізгі функционалдығын кеңейтетін компиляцияланған модульдер түрінде іске асырылады. Бұл мүмкіндіктер серверлік бағдарламалау тілдерін қолдаудан бастап, аутентификацияға дейін жетеді.

MySQL және деректер қорының баламалары

MySQL бастапқыда LAMP жүйесінде реляциялық деректерді басқару жүйесі ретінде пайда болды, бірақ кейіннен PostgreSQL, MariaDB (MySQL-дің бастапқы әзірлеушілері жасаған қауымдық нұсқасы) және тіпті MongoDB сияқты NoSQL деректер базаларымен алмастырылды. MySQL – көп жіпті, көп пайдаланушылы SQL деректерді басқару жүйесі. 2008 жылы Sun Microsystems, ал 2010 жылы Oracle Corporation компаниясы оны сатып алды. MySQL командасы бастапқы кезеңдерінен бастап өзінің бастапқы кодын GNU General Public License шарты бойынша, сондай-ақ түрлі меншік келісімдеріне сәйкес қолжетімді етіп келді. PostgreSQL – PostgreSQL Global Development Group ұйымы әзірлеген, ACID талаптарына сай объектілік-реляциялық деректерді басқару жүйесі. MongoDB – бұл NoSQL деректер базасы, ол дәстүрлі реляциялық деректер базасы құрылымын пайдаланып, JSON форматындағы динамикалық схемалы құжаттарды (BSON форматында) қолданады, бұл кейбір қолданбаларда деректерді интеграциялауды оңайлатып, жылдамдатады.

PHP және баламалары

PHP-нің LAMP-тің қолданбалы бағдарламалау тілі ретіндегі рөлін Perl және Python сияқты басқа тілдер де атқарды. PHP – веб-дамытуға арналған, бірақ сонымен қатар жалпы мақсаттағы бағдарламалау тілі ретінде де қолданылатын серверлік скрипт тілі. PHP коды веб-серверде PHP процессор модулі арқылы түсіндіріледі, ол нәтижесінде веб-бетті құрайды. PHP командаларын деректерді өңдеу үшін сыртқы файлды шақырудың орнына HTML бастапқы құжатына тікелей енгізуге болады. Ол сондай-ақ командалық желі интерфейсі мүмкіндігін қамтиды және дербес графикалық қолданбаларда қолданылуы мүмкін. PHP – PHP лицензиясының шарттарымен таратылатын ақысыз бағдарламалық қамтамасыз ету, ол PHP терминін пайдалануға қойылған шектеулерге байланысты GNU General Public License (GPL) лицензиясымен үйлесімсіз. Perl – жоғары деңгейдегі, жалпы мақсаттағы, интерпретацияланатын, динамикалық бағдарламалау тілдерінің отбасы. Бұл отбасыға Perl 5 және Raku кіреді. Олар көптеген заманауи Unix командалық қабық құралдарындағы кездейсоқ дерек ұзындығы шектеулерінен айырмашылығы, мәтіндік файлдарды өңдеуді жеңілдететін, жоғары деңгейдегі мәтін өңдеу мүмкіндіктерін ұсынады. Perl 5 1990-шы жылдардың соңында веб үшін CGI скрипт тілі ретінде кеңінен танымал болды, бұл оның талдау қабілеттерімен байланысты. Python – кеңінен қолданылатын, жоғары деңгейдегі, интерпретацияланатын, жалпы мақсаттағы бағдарламалау тілі. Python бірнеше бағдарламалау парадигмаларын қолдайды, оның ішінде объектіге бағытталған, императивті, функционалдық және процедуралық парадигмалар бар. Ол динамикалық типтеу жүйесімен, автоматты жад басқарумен, стандартты кітапханамен және ақ орынды қатаң пайдаланумен сипатталады. Басқа динамикалық тілдер сияқты, Python көбінесе скрипт тілі ретінде қолданылады, бірақ скрипт емес жағдайларда да қолданылады.

Жоғары қол жетімділік және жүктемені теңестіру

Көптеген сұранымдарды өңдейтін немесе жоғары жұмыс уақытын талап ететін қызметтерді ұсынатын веб-сайттар үшін ерекше тәсілдер қажет. LAMP стекі үшін жоғары қолжетімділік тәсілдеріне бірнеше веб- және деректер қоры серверлері, әр сервер ұсынатын ресурстарды логикалық түрде біріктіретін қосымша компоненттер, сондай-ақ жұмыс жүктемесін бірнеше серверге бөлу кіруі мүмкін. Веб-серверлерді біріктіру үшін, мысалы, Linux Virtual Server (LVS) пайдаланып, олардың алдына жүктемені теңестіруші орнатуға болады. Деректер қоры серверлерін біріктіру үшін MySQL бастапқы деректер қоры (мастер) мен оның көшірмелері (слейв) арасындағы мастер-слейв қатынасын іске асыратын ішкі көшіру (репликация) механизмдерін ұсынады. Мұндай жоғары қолжетімділік конфигурациялары LAMP инстанцияларының қолжетімділігін әртүрлі артықшылықтарды қамтамасыз ету арқылы жақсарта алады, бұл кейбір компоненттердің (жеке серверлердің) жұмысын тоқтатса да, көрсетіліп жатқан қызметтерді пайдаланушылар үшін үзіліссіз қамтамасыз етуге мүмкіндік береді. Мұндай артық конфигурациялар жеке серверлерде деректер жоғалуына себеп болатын аппараттық ақауларды да шеше алады, осылайша коллективті түрде сақталған деректердің жоғалуына жол бермейді. Жоғары қолжетімділіктен басқа, мұндай LAMP конфигурациялары деректер қорында оқу операцияларының саны жазу/жаңарту операцияларының санынан әлдеқайда көп болатын қызметтердің өнімділігін шамамен сызықтық түрде арттыруға қабілетті.