LAMP қалыпты веб-хостинг шешімі: Linux, Apache, MySQL, Perl/PHP/Python. Ашық кодты бағдарламалық құралдар жиынтығы коммерциялық бағдарламаларға арзан балама болып табылады.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
LAMP (Linux, Apache, MySQL, Perl/PHP/Python) – веб-хостингтің кең таралған шешімінің аббревиатурасы. Бұл вебтің ең танымал қолданбалары үшін ең көп қолданылатын бағдарламалық жиын. Оның жалпы бағдарламалық стек моделіндегі компоненттерді бір-бірімен алмастыруға болады. Аббревиатурадағы әр әріп оның төрт ашық кодты құрылыс бөлігін көрсетеді: Linux – операциялық жүйе, Apache HTTP Server – веб-сервер, MySQL – реляциялық деректер базасын басқару жүйесі, Perl, PHP немесе Python – бағдарламалау тілі. LAMP стек компоненттері көптеген Linux дистрибутивтерінің бағдарламалық пакеттерінің репозиторийлерінде кездеседі.
Acronym for a common web hosting solution
LAMP (Linux, Apache, MySQL, Perl/PHP/Python) is an acronym denoting one of the most common software stacks for the web's most popular applications. Its generic software stack model has largely interchangeable components. Each letter in the acronym stands for one of its four open source building blocks:
Linux for the operating system
Apache HTTP Server
MySQL for the relational database management system
Perl, PHP, or Python for the programming language
The components of the LAMP stack are present in the software repositories of most Linux distributions.
Тарих
LAMP аббревиатурасын Майкл Кунзе 1998 жылғы желтоқсанда шыққан неміс компьютерлік журналы Computertechnik-те «тегін және ашық кодты бағдарламалық жасақтама ең қымбат коммерциялық пакеттерге тиімді балама бола алады» екенін көрсеткен кезде ойлап тапты. Содан бері O'Reilly Media және MySQL бірлесіп осы аббревиатураны танымал етуге және оны қолдануды насихаттауға кірісті. Веб үшін жасалған алғашқы ашық кодты бағдарламалық жасақтама жиынтығы ретінде, термин мен ұғым кеңінен танымал болды. Бұл жиын WordPress және Drupal сияқты әртүрлі веб-фреймворктер мен қолданбаларды іске қосуға мүмкіндік береді.
The acronym LAMP was coined by Michael Kunze in the December 1998 issue of Computertechnik, a German computing magazine, as he demonstrated that a bundle of free and open source software "could be a feasible alternative to expensive commercial packages". Since then, O'Reilly Media and MySQL teamed up to popularize the acronym and evangelize its use. One of the first open source software stacks for the web, the term and the concept became popular. The stack is capable of hosting a variety of web frameworks and applications, such as WordPress and Drupal.
Linux жүйесі
Linux – Unix сияқты компьютерлік операциялық жүйе, ол еркін және ашық кодты бағдарламалық жасақтаманы әзірлеу және тарату үлгісі бойынша құрастырылған. Көптеген Linux дистрибутивтері, Linux ядросы мен көбінесе пакеттік жүйе басқару құралына негізделген бағдарламалық жасақтамалар жиынтығы ретінде, өз пакеттері арқылы LAMP конфигурациясын толыққанды түрде орнатуға мүмкіндік береді. W3Techs мәліметі бойынша, 2013 жылдың қазанында веб-серверлер нарығының 58,5 пайызы Debian және Ubuntu-ға тиесілі болса, RHEL, Fedora және CentOS бірлесіп 37,3 пайызды құрады.
Linux is a Unix like computer operating system assembled under the model of free and open source software development and distribution. Most Linux distributions, as collections of software based around the Linux kernel and often around a package management system, provide complete LAMP setups through their packages. According to W3Techs in October 2013, 58.5% of web server market share is shared between Debian and Ubuntu, while RHEL, Fedora and CentOS together shared 37.3%.
Апачилер
LAMP веб-серверінің рөлін дәстүрлі түрде Apache атқарды, кейіннен Nginx сияқты басқа веб-серверлер де қосылды. Apache, Apache Software Foundation қолдауымен ашық қауымдастықтағы әзірлеушілер тарапынан жасалып, күтіліп келеді. Apache лицензиясымен шығарылған Apache – ашық кодты бағдарламалық қамтамасы. Ол кең ауқымды мүмкіндіктерді қолдайды, олардың көпшілігі Apache-тің негізгі функционалдығын кеңейтетін компиляцияланған модульдер түрінде іске асырылады. Бұл мүмкіндіктер серверлік бағдарламалау тілдерін қолдаудан бастап, аутентификацияға дейін жетеді.
The role of LAMP's web server has been traditionally supplied by Apache, and has since included other web servers such as Nginx. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation. Released under the Apache License, Apache is open source software. A wide variety of features are supported, and many of them are implemented as compiled modules which extend the core functionality of Apache. These can range from server side programming language support to authentication.
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 форматында) қолданады, бұл кейбір қолданбаларда деректерді интеграциялауды оңайлатып, жылдамдатады.
MySQL's original role as the LAMP's relational database management system has since been alternately provisioned by others like PostgreSQL, MariaDB (a community developed fork of MySQL developed by its original developers), and even NoSQL databases like MongoDB. MySQL is a multithreaded, multi user, SQL database management system, acquired by Sun Microsystems in 2008, which was then acquired by Oracle Corporation in 2010. Since its early years, the MySQL team has made its source code available under the terms of the GNU General Public License, as well as under a variety of proprietary agreements. PostgreSQL is also an ACID compliant object relational database management system developed by PostgreSQL Global Development Group. MongoDB is a NoSQL database that eschews the traditional relational database structure in favor of JSON like documents with dynamic schemas (calling the format BSON), making the integration of data in certain types of applications easier and faster.
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 көбінесе скрипт тілі ретінде қолданылады, бірақ скрипт емес жағдайларда да қолданылады.
PHP's role as the LAMP's application programming language has also been performed by other languages such as Perl and Python. PHP is a server side scripting language designed for web development but also used as a general purpose programming language. PHP code is interpreted by a web server via a PHP processor module, which generates the resulting web page. PHP commands can optionally be embedded directly into an HTML source document rather than calling an external file to process data. It has also evolved to include a command line interface capability and can be used in standalone graphical applications. PHP is free software released under the terms of PHP License, which is incompatible with the GNU General Public License (GPL) due to the restrictions PHP License places on the usage of the term PHP. Perl is a family of high level, general purpose, interpreted, dynamic programming languages. The languages in this family include Perl 5 and Raku. They provide advanced text processing facilities without the arbitrary data length limits of many contemporary Unix command line tools, facilitating manipulation of text files. Perl 5 gained widespread popularity in the late 1990s as a CGI scripting language for the Web, in part due to its parsing abilities. Python is a widely used general purpose, high level, interpreted, programming language. Python supports multiple programming paradigms, including object oriented, imperative, functional and procedural paradigms. It features a dynamic type system, automatic memory management, a standard library, and strict use of whitespace. Like other dynamic languages, Python is often used as a scripting language, but is also used in a wide range of non scripting contexts.
Жоғары қол жетімділік және жүктемені теңестіру
Көптеген сұранымдарды өңдейтін немесе жоғары жұмыс уақытын талап ететін қызметтерді ұсынатын веб-сайттар үшін ерекше тәсілдер қажет. LAMP стекі үшін жоғары қолжетімділік тәсілдеріне бірнеше веб- және деректер қоры серверлері, әр сервер ұсынатын ресурстарды логикалық түрде біріктіретін қосымша компоненттер, сондай-ақ жұмыс жүктемесін бірнеше серверге бөлу кіруі мүмкін. Веб-серверлерді біріктіру үшін, мысалы, Linux Virtual Server (LVS) пайдаланып, олардың алдына жүктемені теңестіруші орнатуға болады. Деректер қоры серверлерін біріктіру үшін MySQL бастапқы деректер қоры (мастер) мен оның көшірмелері (слейв) арасындағы мастер-слейв қатынасын іске асыратын ішкі көшіру (репликация) механизмдерін ұсынады. Мұндай жоғары қолжетімділік конфигурациялары LAMP инстанцияларының қолжетімділігін әртүрлі артықшылықтарды қамтамасыз ету арқылы жақсарта алады, бұл кейбір компоненттердің (жеке серверлердің) жұмысын тоқтатса да, көрсетіліп жатқан қызметтерді пайдаланушылар үшін үзіліссіз қамтамасыз етуге мүмкіндік береді. Мұндай артық конфигурациялар жеке серверлерде деректер жоғалуына себеп болатын аппараттық ақауларды да шеше алады, осылайша коллективті түрде сақталған деректердің жоғалуына жол бермейді. Жоғары қолжетімділіктен басқа, мұндай LAMP конфигурациялары деректер қорында оқу операцияларының саны жазу/жаңарту операцияларының санынан әлдеқайда көп болатын қызметтердің өнімділігін шамамен сызықтық түрде арттыруға қабілетті.
Specific approaches are required for websites that serve large numbers of requests, or provide services that demand high uptime. High availability approaches for the LAMP stack may involve multiple web and database servers, combined with additional components that perform logical aggregation of resources provided by each of the servers, as well as distribution of the workload across multiple servers. The aggregation of web servers may be provided by placing a load balancer in front of them, for example by using Linux Virtual Server (LVS). For the aggregation of database servers, MySQL provides internal replication mechanisms that implement a master/slave relationship between the original database (master) and its copies (slaves). Such high availability setups may also improve the availability of LAMP instances by providing various forms of redundancy, making it possible for a certain number of components (separate servers) to experience downtime without interrupting the users of services provided as a whole. Such redundant setups may also handle hardware failures resulting in data loss on individual servers in a way that prevents collectively stored data from actually becoming lost. Beside higher availability, such LAMP setups are capable of providing almost linear improvements in performance for services having the number of internal database read operations much higher than the number of write/update operations.