БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Linux

Какво Π΅ LAMP стСк? АрхитСктура, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° производствСно внСдряванС

Π‘Ρ‚Π΅ΠΊΡŠΡ‚ LAMP Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ софтуСр с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС ΠΎΡ‚ Linux (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма), Apache (ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€), MySQL (Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ) ΠΈ PHP (ΡΡŠΡ€Π²ΡŠΡ€Π΅Π½ скриптов Π΅Π·ΠΈΠΊ). Π—Π°Π΅Π΄Π½ΠΎ Ρ‚Π΅Π·ΠΈ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ слоя ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ пълна, самостоятСлна срСда Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΈ обслуТванС Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ ΡƒΠ΅Π± прилоТСния. ΠΠΊΡ€ΠΎΠ½ΠΈΠΌΡŠΡ‚ описва Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ тСхнологичния стСк ΠΈ послСдоватСлния ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки, Π² ΠΊΠΎΠΉΡ‚ΠΎ участва всСки слой.

Π—Π° всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ систСмСн администратор, оцСняващ инфраструктурата Π·Π° ΡƒΠ΅Π± хостинг, LAMP остава Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€Π°Ρ‰Π°Ρ‚Π° Π±Π°Π·ΠΎΠ²Π° линия: Ρ‚ΠΎΠΉ стои Π² основата Π½Π° Π½Π°Π΄ 30% ΠΎΡ‚ всички ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ Π² свСтовСн ΠΌΠ°Ρ‰Π°Π±, Π·Π°Ρ…Ρ€Π°Π½Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ WordPress, Drupal ΠΈ Magento ΠΈ Π΅ стандартната Ρ†Π΅Π»Π΅Π²Π° срСда Π·Π° хиляди PHP Ρ€Π°ΠΌΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΌΡƒ структура β€” Π½Π΅ само Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΌΡƒ β€” Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎΡ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π°, високопроизводитСлна производствСна систСма.

Π§Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ слоя Π½Π° стСка LAMP: ВСхничСска Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ°

Linux: ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ слой

Linux Π΅ ядрото Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма ΠΈ потрСбитСлската срСда, Π²ΡŠΡ€Ρ…Ρƒ която сС изпълнява всСки Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° LAMP. Ролята ΠΌΡƒ Π½Π΅ Π΅ пасивна: Linux управлява ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСситС, Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΡ‚ΠΎ I/O, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° мрСТовия стСк ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° сигурност, ΠΊΠΎΠΈΡ‚ΠΎ пряко влияят Π½Π° всСки Π΄Ρ€ΡƒΠ³ слой.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ тСхничСски ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ Π½Π° 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 ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° чСсти ΠΌΠ°Π»ΠΊΠΈ I/O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с LAMP Π² срСда Π·Π° VPS Π₯остинг, Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚Π΅ пълСн root Π΄ΠΎΡΡ‚ΡŠΠΏ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° всички Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ β€” Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ сподСлСнитС срСди ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° осигурят.

Apache: Блоят Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π°

Apache HTTP Server (httpd) Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки. Π’ΠΎΠΉ ΡΠ»ΡƒΡˆΠ° Π½Π° TCP ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ 80 ΠΈ 443, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° входящитС HTTP/HTTPS заявки ΠΈ ΠΈΠ»ΠΈ обслуТва статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ диска, ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈΡ‚Π΅ заявки към ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° PHP.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π° пропускат:

  • Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° MPM (Multi-Processing Module) Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Apache. Π’Ρ€ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ β€” `prefork`, `worker` ΠΈ `event` β€” ΠΈΠΌΠ°Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° паралСлност:
  • `prefork`: Π•Π΄ΠΈΠ½ процСс Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с `mod_php`, Π½ΠΎ изисква ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚. Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅ Π³ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с висока паралСлност.
  • `worker`: Многонишков. По-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½, Π½ΠΎ изисква бСзопасни Π·Π° нишки PHP Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ.
  • `event`: Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡΡ‚ стандарт. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° keep-alive Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π² спСциална нишка, освобоТдавайки Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ нишки Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ заявки. Най-подходящ Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.
  • `mod_php` срСщу 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 Π΅ систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (RDBMS), която ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°, индСксира ΠΈ ΠΈΠ·Π²Π»ΠΈΡ‡Π° структурирани Π΄Π°Π½Π½ΠΈ Π½Π° прилоТСния с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° 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 срСщу LEMP срСщу MEAN: Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅

ЀункцияLAMPLEMPMEAN
Π£Π΅Π± ΡΡŠΡ€Π²ΡŠΡ€ApacheNginxNode.js (Π²Π³Ρ€Π°Π΄Π΅Π½)
Π‘Π°Π·Π° Π΄Π°Π½Π½ΠΈMySQL / MariaDBMySQL / MariaDBMongoDB
Π•Π·ΠΈΠΊPHP (ΠΈΠ»ΠΈ Perl/Python)PHP Ρ‡Ρ€Π΅Π· PHP-FPMJavaScript (Node.js)
МодСл Π½Π° паралСлностБазиран Π½Π° процСси/Π½ΠΈΡˆΠΊΠΈΠ£ΠΏΡ€Π°Π²Π»ΡΠ²Π°Π½ ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, асинхронСнУправляван ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, асинхронСн
ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ Π½Π° статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Π”ΠΎΠ±Ρ€ΠΎΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ£ΠΌΠ΅Ρ€Π΅Π½ΠΎ
Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с PHPНативнаЧрСз FastCGI (PHP-FPM)НСприлоТимо
ИзползванС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π£ΠΌΠ΅Ρ€Π΅Π½ΠΎ Π΄ΠΎ високоНиско Π΄ΠΎ ΡƒΠΌΠ΅Ρ€Π΅Π½ΠΎΠ£ΠΌΠ΅Ρ€Π΅Π½ΠΎ
БлоТност Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π°Π£ΠΌΠ΅Ρ€Π΅Π½Π°Π£ΠΌΠ΅Ρ€Π΅Π½Π°ΠŸΠΎ-висока
Най-подходящ Π·Π°CMS, наслСдСни PHP прилоТСния, WordPressPHP прилоТСния с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, 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 прСкратяванС. ΠŸΡ€Π°Π²ΠΈΠ»Π½ΠΎ настроСна срСда с Dedicated Servers ΠΈ NVMe ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ осигурява I/O пропускатСлната способност, която Ρ‚Π΅Π·ΠΈ натоварвания изискват.

RESTful ΠΈ GraphQL API

PHP Ρ€Π°ΠΌΠΊΠΈ ΠΊΠ°Ρ‚ΠΎ Laravel ΠΈ Lumen сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° API Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅. LAMP-Π±Π°Π·ΠΈΡ€Π°Π½ API ΡΡŠΡ€Π²ΡŠΡ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ 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 инсталация Π½Π΅ Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° производствСна срСда. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈ Π·Π° ΡƒΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅ са Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ:

Ниво Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма

  • Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ root SSH Π²Ρ…ΠΎΠ΄; ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΉΡ‚Π΅ само удостовСряванС с ΠΊΠ»ΡŽΡ‡
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ `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 стСка сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π° Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ Π² прСдимство.
  • Π‘Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΈΠ»ΠΈ edge-compute Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ: PHP ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Π±Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ срСди (AWS Lambda Ρ‡Ρ€Π΅Π· Bref, Cloudflare Workers Ρ‡Ρ€Π΅Π· СкспСримСнтални срСди Π·Π° изпълнСниС), Π½ΠΎ опСративният ΠΌΠΎΠ΄Π΅Π» Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ традиционния LAMP ΡΡŠΡ€Π²ΡŠΡ€.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ Π»ΠΈ Π΅ LAMP Π·Π° вашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?

ИзискванСLAMP Π΅ подходящРазглСдайтС Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°
PHP-Π±Π°Π·ΠΈΡ€Π°Π½ CMS (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 Π΅ с ΠΈΠ·Ρ‚Π΅ΠΊΡŠΠ» ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠ°Ρ‡ΠΎΠ²Π΅ Π·Π° сигурност β€” Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с EOL PHP вСрсии Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ риск Π·Π° сигурността.

Мога Π»ΠΈ Π΄Π° работя с мноТСство PHP вСрсии Π½Π° Π΅Π΄ΠΈΠ½ LAMP ΡΡŠΡ€Π²ΡŠΡ€?

Π”Π°. Използвайки PHP-FPM, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с мноТСство PHP-FPM ΠΏΡƒΠ»ΠΎΠ²Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, всСки ΡΠ²ΡŠΡ€Π·Π°Π½ с Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ сокСт ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° PHP вСрсия. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ хостовС Π½Π° Apache слСд Ρ‚ΠΎΠ²Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ Π΄Π° проксират към подходящия PHP-FPM сокСт. Π’ΠΎΠ²Π° Π΅ стандартният ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° хостинг Π½Π° мноТСство прилоТСния с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ изисквания Π·Π° PHP вСрсия Π½Π° Π΅Π΄ΠΈΠ½ ΡΡŠΡ€Π²ΡŠΡ€.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ Π»ΠΈ Π΅ LAMP Π·Π° производствСни прилоТСния с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ?

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