Π‘ΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 15% Π½Π° всСх хостинговых услугах

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π½Π° любой Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills ΠΠ°Ρ‡Π°Ρ‚ΡŒ
Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Linux

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ LAMP Stack? АрхитСктура, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ руководство ΠΏΠΎ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ Π² производствСнной срСдС

Π‘Ρ‚Π΅ΠΊ LAMP β€” это ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, состоящий ΠΈΠ· Linux (опСрационная систСма), Apache (Π²Π΅Π±-сСрвСр), MySQL (рСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ PHP (сСрвСрный язык сцСнариСв). ВмСстС эти Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ уровня ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΡƒΡŽ срСду для создания, развёртывания ΠΈ обслуТивания динамичСских Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. АббрСвиатура описываСт ΠΊΠ°ΠΊ тСхнологичСский стСк, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ участвуСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Для любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ систСмного администратора, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ инфраструктуру Π²Π΅Π±-хостинга, LAMP остаётся Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ: ΠΎΠ½ Π»Π΅ΠΆΠΈΡ‚ Π² основС Π±ΠΎΠ»Π΅Π΅ 30% всСх сСрвСрных Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Π² ΠΌΠΈΡ€Π΅, обСспСчиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΊΠ°ΠΊ WordPress, Drupal ΠΈ Magento, ΠΈ являСтся Ρ†Π΅Π»Π΅Π²ΠΎΠΉ срСдой ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для тысяч PHP-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ПониманиС Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ устройства β€” Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² β€” ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΉ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ производствСнной систСмы.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ уровня стСка LAMP: тСхничСский Ρ€Π°Π·Π±ΠΎΡ€

Linux: Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ

Linux β€” это ядро ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ LAMP. Π•Π³ΠΎ Ρ€ΠΎΠ»ΡŒ Π½Π΅ пассивна: Linux управляСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ процСссов, распрСдСлСниСм памяти, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ сСтСвого стСка ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°ΠΌΠΈ бСзопасности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ тСхничСскиС аспСкты для Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ LAMP:

  • Π’Ρ‹Π±ΠΎΡ€ дистрибутива ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ubuntu LTS ΠΈ Debian ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ благодаря Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»Π°ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌ рСпозиториям ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². RHEL/AlmaLinux/Rocky Linux ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… срСдах, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… примСнСния SELinux.
  • Настройка ядра β€” Π² частности `vm.swappiness`, `net.core.somaxconn` ΠΈ `fs.file-max` β€” ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎΠ΅ влияниС Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Apache ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.
  • УсилСниС бСзопасности Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… слуТб, настройка `iptables` ΠΈΠ»ΠΈ `nftables`, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ `fail2ban`) являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ условиСм, Π° Π½Π΅ Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΠΎΠΉ ΠΌΠ΅Ρ€ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ любой Π²Π΅Π±-стСк для доступа ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.
  • Π’Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. XFS ΠΈ ext4 с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ монтирования `noatime` ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи Π½Π° диск, Ρ‡Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° MySQL выполняСт частыС нСбольшиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€ΠΈ запускС LAMP Π² срСдС VPS Π₯остинга Π²Ρ‹ сохраняСтС ΠΏΠΎΠ»Π½Ρ‹ΠΉ root-доступ для настройки всСх этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ срСды.

Apache: ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Π΅Π±-сСрвСра

Apache HTTP Server (httpd) β€” это Π΄Π²ΠΈΠΆΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов. Он ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ TCP-ΠΏΠΎΡ€Ρ‚Ρ‹ 80 ΠΈ 443, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ входящиС HTTP/HTTPS-запросы ΠΈ Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ обслуТиваСт статичСскиС Ρ„Π°ΠΉΠ»Ρ‹ с диска, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ динамичСскиС запросы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ PHP.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ руководств ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚:

  • Π’Ρ‹Π±ΠΎΡ€ MPM (модуля многопроцСссорной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ Apache. Π’Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° β€” `prefork`, `worker` ΠΈ `event` β€” ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°:
  • `prefork`: ΠΎΠ΄ΠΈΠ½ процСсс Π½Π° соСдинСниС. БовмСстим с `mod_php`, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ памяти. НС рСкомСндуСтся Π½Π° сСрвСрах с высоким ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ.
  • `worker`: ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ. Π‘ΠΎΠ»Π΅Π΅ эффСктивСн, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ потокобСзопасных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ PHP.
  • `event`: соврСмСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ keep-alive-соСдинСния Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, освобоТдая Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… запросов. Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для высоконагруТСнных Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ.
  • `mod_php` vs. PHP-FPM: запуск PHP Π² качСствС модуля Apache (`mod_php`) ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ связываСт ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» процСсса PHP с ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Apache. ИспользованиС PHP-FPM (FastCGI Process Manager) Ρ‡Π΅Ρ€Π΅Π· `mod_proxy_fcgi` раздСляСт ΠΈΡ…, обСспСчивая Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ настройку ΠΏΡƒΠ»Π° процСссов, ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ вСрсий PHP для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования памяти.
  • Π€Π°ΠΉΠ»Ρ‹ `.htaccess` ΡƒΠ΄ΠΎΠ±Π½Ρ‹, Π½ΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹: Apache ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… пСрСопрСдСлСния. Π’ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² Π±Π»ΠΎΠΊΠΈ `<Directory>` Π² основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ устанавливайтС `AllowOverride None` Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
  • Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ хостинг позволяСт ΠΎΠ΄Π½ΠΎΠΌΡƒ экзСмпляру Apache ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ дСсятки ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ с ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², SSL-сСртификатами ΠΈ конфигурациями Турналирования.

MySQL: ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…

MySQL β€” это систСма управлСния рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”), которая Ρ…Ρ€Π°Π½ΠΈΡ‚, индСксируСт ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ структурированныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL. Π’ контСкстС LAMP PHP-скрипты ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ MySQL Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ PDO ΠΈΠ»ΠΈ MySQLi для выполнСния запросов, Π° MySQL Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ PHP Π·Π°Ρ‚Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π² HTML ΠΈΠ»ΠΈ JSON.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ знания ΠΎ MySQL для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°:

  • Π’Ρ‹Π±ΠΎΡ€ Π΄Π²ΠΈΠΆΠΊΠ° хранСния: InnoDB являСтся Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ практичСски для всСх Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ LAMP. Он обСспСчиваСт ACID-совмСстимыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ строк ΠΈ ограничСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. MyISAM Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€” ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ для Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†.
  • `innodb_buffer_pool_size` β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ MySQL. Π•Π³ΠΎ слСдуСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 70–80% доступной RAM Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НСдостаточный Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ MySQL Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ с диска вмСсто памяти, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΠΊΠΎ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов.
  • MariaDB β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимая Π·Π°ΠΌΠ΅Π½Π° MySQL, поддСрТиваСмая ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ MySQL послС приобрСтСния Oracle. Она ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… (особСнно Π² слоТных ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ… ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ) ΠΈ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ MySQL ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах Linux.
  • ΠŸΡƒΠ» соСдинСний: постоянныС соСдинСния PHP (`PDO::ATTR_PERSISTENT`) ΠΈΠ»ΠΈ внСшний ΠΏΡƒΠ» соСдинСний, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ProxySQL, ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° установлСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ TCP-соСдинСния ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ рукопоТатия ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ PHP-запросС.
  • БтратСгия индСксирования: отсутствиС индСксов для часто Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… столбцов (особСнно Π² прСдлоТСниях `WHERE`, `JOIN` ΠΈ `ORDER BY`) являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ сниТСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ LAMP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `EXPLAIN` для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ»Π°Π½ΠΎΠ² выполнСния запросов.

PHP: ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния

PHP (PHP: Hypertext Preprocessor) β€” это сСрвСрный язык сцСнариСв, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ динамичСский ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Он ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Apache (Ρ‡Π΅Ρ€Π΅Π· `mod_php` ΠΈΠ»ΠΈ PHP-FPM), выполняСт Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ MySQL ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ HTML, JSON ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² Apache для доставки ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

ВСхничСскиС Π½ΡŽΠ°Π½ΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит Π·Π½Π°Ρ‚ΡŒ:

  • ВСрсия PHP ΠΈΠΌΠ΅Π΅Ρ‚ критичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. PHP 7.4 достиг ΠΊΠΎΠ½Ρ†Π° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² ноябрС 2022 Π³ΠΎΠ΄Π°. PHP 8.0 ΠΈ 8.1 Ρ‚Π°ΠΊΠΆΠ΅ достигли EOL. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ систСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° PHP 8.2 ΠΈΠ»ΠΈ 8.3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ„Π°ΠΉΠ±Π΅Ρ€Ρ‹ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с PHP 7.x.
  • OPcache β€” это кэш Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, встроСнный Π² PHP. ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ PHP-скрипты Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΎΠ±Ρ‰Π΅ΠΉ памяти, устраняя ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросах. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ OPcache с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ настройками `opcache.memory_consumption` ΠΈ `opcache.max_accelerated_files` ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя выполнСния PHP Π½Π° 30–70%.
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΡƒΠ»Π° PHP-FPM: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° `pm` управляСт Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы. `pm = dynamic` ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ; `pm = ondemand` экономит ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π° сСрвСрах с Π½ΠΈΠ·ΠΊΠΈΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ; `pm = static` обСспСчиваСт прСдсказуСмоС распрСдСлСниС рСсурсов для высоконагруТСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • ЭкосистСма Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²: Laravel, Symfony, CodeIgniter ΠΈ Slim ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ PHP-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. Laravel, Π² частности, стал Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ стандартом для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… PHP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, прСдлагая ORM (Eloquent), систСму ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΈ инструмСнты CLI (Artisan), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
  • Β«PΒ» Π³ΠΈΠ±ΠΊΠΎ: хотя PHP являСтся стандартом, послСдняя Π±ΡƒΠΊΠ²Π° Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ LAMP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Perl (распространён Π² ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… CGI-прилоТСниях ΠΈ биоинформатичСских инструмСнтах) ΠΈΠ»ΠΈ Python (Ρ‡Π΅Ρ€Π΅Π· `mod_wsgi` ΠΈΠ»ΠΈ WSGI-совмСстимый прокси), хотя стСки с ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Python Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ LEMP (Nginx) ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ WSGI-сСрвСры.

Как стСк LAMP ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запрос: ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€

ПониманиС ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° запроса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для диагностики ΡƒΠ·ΠΊΠΈΡ… мСст ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ уязвимостСй бСзопасности.

  1. DNS-Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя Π² IP-адрСс сСрвСра. TTL ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Π° Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π° этом этапС.
  2. TCP-Ρ€ΡƒΠΊΠΎΠΏΠΎΠΆΠ°Ρ‚ΠΈΠ΅ + согласованиС TLS: для HTTPS TLS-Ρ€ΡƒΠΊΠΎΠΏΠΎΠΆΠ°Ρ‚ΠΈΠ΅ происходит Π΄ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ HTTP-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π—Π΄Π΅ΡΡŒ происходят ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сСртификата, согласованиС Π½Π°Π±ΠΎΡ€Π° ΡˆΠΈΡ„Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСссии.
  3. Apache ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ HTTP-запрос: MPM `event` Apache Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ запрос Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Apache Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ запроса, примСняСт ΠΏΡ€Π°Π²ΠΈΠ»Π° `mod_rewrite`, провСряСт `.htaccess` (Ссли Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ) ΠΈ опрСдСляСт, слСдуСт Π»ΠΈ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ статичСский Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ PHP.
  4. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ PHP: для динамичСских запросов Apache ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ запрос Π² PHP-FPM Ρ‡Π΅Ρ€Π΅Π· FastCGI. PHP-FPM Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ доступный Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΈΠ· своСго ΠΏΡƒΠ»Π°, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ скрипт (ΠΈΠ· OPcache, Ссли доступно) ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния.
  5. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запроса MySQL: PHP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ выполняСт SQL-запросы Ρ‡Π΅Ρ€Π΅Π· PDO. MySQL провСряСт кэш запросов (устарСл Π² MySQL 8.0), Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ запрос, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ»Π°Π½Π° выполнСния, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° InnoDB ΠΈΠ»ΠΈ с диска ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
  6. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚Π°: PHP собираСт ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ HTML ΠΈΠ»ΠΈ JSON, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ примСняя Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ шаблонов, ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ сТатиС.
  7. Apache доставляСт ΠΎΡ‚Π²Π΅Ρ‚: Apache примСняСт Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `mod_deflate` для сТатия gzip), устанавливаСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° (cache-control, content-type, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ бСзопасности) ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎ установлСнному TCP-соСдинСнию.

LAMP vs. LEMP vs. MEAN: сравнСниС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€

Π₯арактСристикаLAMPLEMPMEAN
Π’Π΅Π±-сСрвСрApacheNginxNode.js (встроСнный)
Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…MySQL / MariaDBMySQL / MariaDBMongoDB
Π―Π·Ρ‹ΠΊPHP (ΠΈΠ»ΠΈ Perl/Python)PHP Ρ‡Π΅Ρ€Π΅Π· PHP-FPMJavaScript (Node.js)
МодСль параллСлизмаНа основС процСссов/ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉΠ½ΠΎ-ориСнтированная, асинхроннаяБобытийно-ориСнтированная, асинхронная
ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ статичСских Ρ„Π°ΠΉΠ»ΠΎΠ²Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅Π£ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅
Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с PHPНативнаяЧСрСз FastCGI (PHP-FPM)НС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ
ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памятиУмСрСнноС β€” высокоСНизкоС β€” ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅Π£ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройкиУмСрСннаяУмСрСннаяВысокая
Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ дляCMS, ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ PHP-прилоТСния, WordPressВысоконагруТСнныС PHP-прилоТСния, APIΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, SPA
ΠŸΠΎΡ€ΠΎΠ³ вхоТдСнияНизкийНизкий β€” ΡƒΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉΠ£ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ β€” высокий

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ наблюдСниС: LEMP (Linux, Nginx, MySQL, PHP) β€” это Π½Π΅ Π·Π°ΠΌΠ΅Π½Π° LAMP, Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для высококонкурСнтного обслуТивания статичСских Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ эффСктивного использования памяти. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉΠ½ΠΎ-ориСнтированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Nginx ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ тысячи ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… keep-alive-соСдинСний с Π΄ΠΎΠ»Π΅ΠΉ памяти, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ MPM `prefork` Apache. Однако ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `.htaccess` ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ `mod_rewrite` Apache Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Π² стилС ΠΎΠ±Ρ‰Π΅Π³ΠΎ хостинга ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ зависящих ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования стСков LAMP

БистСмы управлСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ

WordPress, Joomla ΠΈ Drupal созданы ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для стСка LAMP. WordPress Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ обСспСчиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΎΠ»Π΅Π΅ 43% всСх Π²Π΅Π±-сайтов Π² ΠΌΠΈΡ€Π΅, ΠΈ вся Π΅Π³ΠΎ экосистСма ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (Π±ΠΎΠ»Π΅Π΅ 60 000 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²) ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ срСду LAMP. Запуск WordPress Π½Π° Ρ‡Ρ‘ΠΌ-Π»ΠΈΠ±ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ стСка LAMP ΠΈΠ»ΠΈ LEMP, создаёт риски совмСстимости с ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ прямыС запросы MySQL ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° пСрСзаписи, спСцифичныС для Apache.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ для элСктронной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠΈ

Magento (Adobe Commerce), WooCommerce ΠΈ OpenCart ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° LAMP. Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ элСктронной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠΈ особСнно Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹: ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ACID-совмСстимых Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (InnoDB), управлСния сСссиями, слоТных ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… объСдинСний для запросов ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ SSL. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнная срСда Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСрвСров с NVMe-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ обСспСчиваСт ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ эти Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

RESTful ΠΈ GraphQL API

PHP-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Laravel ΠΈ Lumen, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для создания API-бэкСндов. API-сСрвСр Π½Π° основС LAMP, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ JSON Ρ‡Π΅Ρ€Π΅Π· HTTP, являСтся распространённой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ для бэкСндов ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, SaaS-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² микросСрвисов. МодСль ΠΏΡƒΠ»Π° процСссов PHP-FPM обСспСчиваСт Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ запросов, Π° Ρ‚ΠΈΠΏ столбца JSON Π² MySQL (доступСн начиная с MySQL 5.7) позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ полуструктурированныС Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ рСляционной цСлостности.

ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Π²Π΅Π±-инфраструктуры Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π·Π°Ρ… PHP 5.x ΠΈΠ»ΠΈ 7.x, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ пСрСнСсСны. LAMP остаётся СдинствСнной ТизнСспособной срСдой выполнСния для этих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… стСков LAMP с использованиСм Docker (с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ `php:7.4-apache`) обСспСчиваСт ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±Π΅Π· нСобходимости измСнСния ΠΊΠΎΠ΄Π°.

Π‘Ρ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования

LAMP являСтся стандартной локальной срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для PHP-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Docker Compose, Vagrant ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты, ΠΊΠ°ΠΊ XAMPP ΠΈ Laragon. Π—Π΅Ρ€ΠΊΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ производствСнной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ LAMP Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ класс сбоСв развёртывания Β«Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΌΠΎΠ΅ΠΉ машинС».

УсилСниС бСзопасности для производствСнных Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ LAMP

Установка LAMP ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги ΠΏΠΎ ΡƒΡΠΈΠ»Π΅Π½ΠΈΡŽ бСзопасности ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ:

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы

  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄ ΠΏΠΎ SSH ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ root; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π° основС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ
  • НастройтС `ufw` ΠΈΠ»ΠΈ `firewalld` для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ² 22, 80 ΠΈ 443
  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ автоматичСскиС обновлСния бСзопасности для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ОБ
  • УстановитС ΠΈ настройтС `fail2ban` для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΈΠ² SSH ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Apache

  • УстановитС `ServerTokens Prod` ΠΈ `ServerSignature Off` для подавлСния раскрытия вСрсии
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ листинг ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² (`Options -Indexes`)
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ бСзопасности: `X-Content-Type-Options`, `X-Frame-Options`, `Content-Security-Policy`, `Strict-Transport-Security`
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΡŒΡ‚Π΅ HTTPS с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ SSL-сСртификатом β€” установка SSL-сСртификатов ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° для любого производствСнного развёртывания

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ MySQL

  • ЗапуститС `mysql_secure_installation` сразу послС установки
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ привилСгиями β€” Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `root` для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  • ΠŸΡ€ΠΈΠ²ΡΠΆΠΈΡ‚Π΅ MySQL ΠΊ `127.0.0.1`, Ссли ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ доступ явно Π½Π΅ трСбуСтся
  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для возмоТности восстановлСния Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ PHP

  • УстановитС `expose_php = Off` Π² `php.ini`
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ опасныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: `exec`, `passthru`, `shell_exec`, `system`, Ссли ΠΎΠ½ΠΈ явно Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ
  • УстановитС `display_errors = Off` ΠΈ `log_errors = On` Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅
  • НастройтС `open_basedir` для ограничСния доступа PHP ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ прилоТСния
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ PHP Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ выпускС

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

АрхитСктура ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ стСк LAMP Π±Π΅Π· уровня ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ упускаСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • OPcache: Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ PHP. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивноС СдинствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ PHP.
  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Redis ΠΈΠ»ΠΈ Memcached Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² памяти для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄Π°Π½Π½Ρ‹Ρ… сСссий ΠΈ вычислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. WordPress с кэшСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Redis ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство запросов MySQL Π½Π° 80%+ Π½Π° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… страницах.
  • ΠŸΠΎΠ»Π½ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Varnish Cache ΠΏΠ΅Ρ€Π΅Π΄ Apache ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ HTML-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° PHP ΠΈΠ»ΠΈ MySQL Π²ΠΎΠΎΠ±Ρ‰Π΅, обрабатывая дСсятки тысяч запросов Π² сСкунду Π½Π° скромном ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ.
  • Apache `mod_cache`: для Π±ΠΎΠ»Π΅Π΅ простых ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Apache ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΈ динамичСский ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ с настраиваСмыми TTL.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов (`slow_query_log = 1`, `long_query_time = 1`) ΠΈ рСгулярно провСряйтС Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `mysqldumpslow` ΠΈΠ»ΠΈ `pt-query-digest`
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `EXPLAIN ANALYZE` для понимания ΠΏΠ»Π°Π½ΠΎΠ² выполнСния запросов ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ схСмы
  • Π’Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ для чтСния для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ с ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π½ΠΈΠ΅ΠΌ чтСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ запросов ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими экзСмплярами MySQL

Настройка Apache

  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ `mod_deflate` для сТатия gzip тСкстовых ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (HTML, CSS, JavaScript, JSON)
  • НастройтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ `mod_expires` ΠΈ `Cache-Control` для статичСских рСсурсов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°
  • НастройтС `MaxRequestWorkers`, `ServerLimit` ΠΈ `ThreadsPerChild` Π½Π° основС доступной RAM ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°

Π Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ стСка LAMP: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ список для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°

ΠŸΠ΅Ρ€Π΅Π΄ запуском развёртывания LAMP Π½Π° VPS с cPanel ΠΈΠ»ΠΈ Π½Π° чистом Linux VPS ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

  • ОБ Linux ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°; настроСны автоматичСскиС обновлСния бСзопасности
  • Apache Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с MPM `event` ΠΈ PHP-FPM (Π½Π΅ `mod_php`)
  • ВСрсия PHP β€” 8.2 ΠΈΠ»ΠΈ 8.3; OPcache Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΈ настроСн
  • MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ InnoDB; `innodb_buffer_pool_size` настроСн ΠΏΠΎΠ΄ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ RAM
  • ВсС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ MySQL с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ привилСгиями
  • HTTPS ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ примСняСтся с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сСртификатом; HTTP пСрСнаправляСт Π½Π° HTTPS
  • Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ бСзопасности ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Apache
  • `fail2ban` Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΈ отслСТиваСт ΠΆΡƒΡ€Π½Π°Π»Ρ‹ доступа Apache
  • ΠŸΡ€Π°Π²ΠΈΠ»Π° брандмауэра Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹
  • АвтоматичСскоС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈ протСстировано
  • Π–ΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок прилоТСния настроСно Π½Π° запись Π² Ρ„Π°ΠΉΠ», Π° Π½Π΅ Π² Π²Ρ‹Π²ΠΎΠ΄ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

Когда LAMP Π½Π΅ являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ

LAMP Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ. РаспознайтС сцСнарии, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ подходящими ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹:

  • ДвунаправлСнная связь Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Ρ‡Π°Ρ‚, ΠΆΠΈΠ²Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, совмСстноС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅): Node.js с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ WebSocket ΠΈΠ»ΠΈ сСрвСры Π½Π° основС Go подходят Π»ΡƒΡ‡ΡˆΠ΅. Бинхронная модСль выполнСния PHP ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» процСсса Π½Π° запрос ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ нСсовмСстимы с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ постоянных соСдинСний.
  • Доставка статичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° с Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ высоким ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ: CDN ΠΈΠ»ΠΈ Nginx, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€Π΅Π²Π·ΠΎΠΉΠ΄Ρ‘Ρ‚ Apache ΠΏΡ€ΠΈ Π΄ΠΎΠ»Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚ рСсурсов.
  • Π’Ρ‹Π²ΠΎΠ΄ машинного обучСния ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с ускорСниСм GPU: стСки Π½Π° основС Python с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ инфраструктурой GPU Π₯остинга ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.
  • ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ с ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…: Ссли ваша Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ…, Π³Ρ€Π°Ρ„ΠΎΠ²Ρ‹Ρ…, Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов), ориСнтированная Π½Π° MySQL модСль стСка LAMP становится ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ прСимущСством.
  • БСссСрвСрныС развёртывания ΠΈΠ»ΠΈ развёртывания Π½Π° Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ…: PHP ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² бСссСрвСрных срСдах (AWS Lambda Ρ‡Π΅Ρ€Π΅Π· Bref, Cloudflare Workers Ρ‡Π΅Ρ€Π΅Π· ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ срСды выполнСния), Π½ΠΎ опСрационная модСль ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сСрвСра LAMP.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ LAMP для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°?

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅LAMP подходитРассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ
CMS Π½Π° основС PHP (WordPress, Drupal)ДаНСт
ВысококонкурСнтныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ врСмСниНСтNode.js, Go
RESTful API с PHP-фрСймворкомДаНСт
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ GPU/MLНСтPython + GPU стСк
ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ PHP 5.x/7.xДаНСт
БтатичСский сайт Π±Π΅Π· сСрвСрной логикиНСтCDN + статичСский хостинг
ЭлСктронная коммСрция (WooCommerce, Magento)ДаНСт
ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ с ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π½ΠΎΠΉ Π‘Π”Π§Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСрвисы
НСбольшой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌΠ”Π°ΠΠ΅Ρ‚

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹

  • MPM ΠΈ PHP-FPM β€” это Π½Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Apache уровня Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ уровня ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ с `prefork`+`mod_php` Π½Π° `event`+`PHP-FPM` Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° сСрвСр поступит ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.
  • OPcache β€” это бСсплатная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НСт вСской ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ PHP Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π±Π΅Π· Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройки Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
  • `innodb_buffer_pool_size` β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивноС СдинствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ MySQL. УстановитС Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ любого прилоТСния.
  • MariaDB β€” законная, Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ прСвосходящая Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° MySQL для стСков LAMP. РассматривайтС Π΅Ρ‘ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Π½Π΅ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΡƒΡŽ ΠΌΡ‹ΡΠ»ΡŒ.
  • УсилСниС бСзопасности β€” это Π½Π΅ Π·Π°Π΄Π°Ρ‡Π° послС запуска. Установка LAMP ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, открытая для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π·ΠΎΠ½Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚ послС запуска.
  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π° Π½Π΅ оптимизация. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ вашСго прилоТСния (OPcache, Redis, Varnish) Π΄ΠΎ написания ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΊΠΎΠ΄Π° прилоТСния.
  • Для производствСнных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ всСми этими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, срСда VPS Π₯остинга с root-доступом являСтся минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ инфраструктурой β€” ΠΎΠ±Ρ‰ΠΈΠΉ хостинг Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнный стСк LAMP.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ стСками LAMP ΠΈ LEMP?

LAMP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Apache Π² качСствС Π²Π΅Π±-сСрвСра, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ LEMP замСняСт Apache Π½Π° Nginx. Nginx ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая потрСбляСт мСньшС памяти ΠΏΡ€ΠΈ высоком ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ справляСтся с обслуТиваниСм статичСских Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Apache β€” Π΅Π³ΠΎ зрСлая систСма `.htaccess` ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ экосистСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для WordPress ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… CMS-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, зависящих ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MySQL ΠΈΠ»ΠΈ MariaDB Π² стСкС LAMP?

MariaDB β€” это Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-совмСстимая Π·Π°ΠΌΠ΅Π½Π° MySQL, поддСрТиваСмая ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ MySQL. Она ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ…, Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ MySQL ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Debian ΠΈ Ubuntu. Для Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ MariaDB являСтся Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ развёртываниям MySQL Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MariaDB.

ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ PHP слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² стСкС LAMP Π² 2025 Π³ΠΎΠ΄Ρƒ?

PHP 8.2 ΠΈΠ»ΠΈ 8.3 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ обслуТиваСмыми выпусками. PHP 8.3 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы классов ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок. Π›ΡŽΠ±Π°Ρ вСрсия Π½ΠΈΠΆΠ΅ 8.1 достигла ΠΊΠΎΠ½Ρ†Π° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ бСзопасности β€” запуск вСрсий PHP с ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступном сСрвСрС являСтся критичСским риском бСзопасности.

МоТно Π»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ нСсколько вСрсий PHP Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС LAMP?

Π”Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PHP-FPM, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ нСсколько ΠΏΡƒΠ»ΠΎΠ² PHP-FPM, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ привязанный ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ сокСту ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с Ρ€Π°Π·Π½ΠΎΠΉ вСрсиСй PHP. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ хосты Apache Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ для проксирования ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ сокСту PHP-FPM. Π­Ρ‚ΠΎ стандартный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для размСщСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ трСбованиями ΠΊ вСрсии PHP Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ LAMP для высоконагруТСнных производствСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?

Π”Π°, ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройкС. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ PHP-FPM с OPcache, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Redis, MySQL с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнным Π±ΡƒΡ„Π΅Ρ€Π½Ρ‹ΠΌ ΠΏΡƒΠ»ΠΎΠΌ InnoDB ΠΈ полностраничного кэша, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Varnish, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ дСсятки тысяч запросов Π² сСкунду Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. Π£Π·ΠΊΠΈΠΌ мСстом Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ LAMP являСтся Π½Π΅ сам стСк, Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ конфигурация β€” Π² частности, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, нСиндСксированныС запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Apache, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с MPM `prefork`.