ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ apache2

МногиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ apache2 Π² качСствС Π²Π΅Π±-сСрвСра. Однако ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ задумываСтся ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ прямо ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц сайта, скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ скриптов (Π² частности php), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ростС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ЦП ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠžΠ—Π£.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°Π½ΡƒΠ°Π», Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.
ВсС Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использовались Π½Π° Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ.

1. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ являСтся банальноС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅:

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

apache2ctl -M

Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ модуля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

a2dismod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

БоотвСтствСнно для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ модуля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

a2enmod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании a2dismod, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· самого слова ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Ρ‹ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ apache2ctl -M ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ proxy_module, Ρ‚ΠΎ для Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€” a2dismod proxy

НаиболСС Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ систСму модулями (ΠΏΠΎ Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ) ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • PHP, Ruby, Perl ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… скриптовых языков
  • SSL
  • Rewrite
  • CGI

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅, послС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ модуля, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€” apache2ctl configtest, которая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сайтов ΠΈ Ссли ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±Ρ‹Π» для Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ.

2. БмСна MPM(Multi-Processing Module) и использованиС php-fpm

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, послС установки, apache2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ MPM Prefork (1 ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° 1 соСдинСниС), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Но для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MPM Worker, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сразу нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎ соСдинСниС.

Для Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

a2dismod mpm_prefork  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ prefork
a2dismod php7.3  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ prefork
a2enmod mpm_worker  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ worker

Однако ΠΏΡ€ΠΈ использовании Worker Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚.ΠΊ. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php7.3 зависит ΠΎΡ‚ модуля Prefork.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ установим ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php7.3-fpm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ php-скриптов:

apt-get update && apt-get install php7.3-fpm  //УстанавливаСм
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //ДобавляСм Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ запускаСм
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для Π½Π΅Π³ΠΎ

Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС php-fpm Ρ‚Π°ΠΊΠΆΠ΅ снизит ΠΎΠ±ΡŠΡ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠžΠ—Π£ процСссом apache2 ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ускорит ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ php-скриптов.

3. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌΠΈ простыми дСйствиями ΠΌΡ‹ смогли ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС RPI3).

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π΅ΡΡ‚ΡŒ сотни Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ€ΠΎΠ΄Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сТатия (Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ своём ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), измСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ) MPM, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ HostnameLookups ΠΈ Ρ‚.Π΄., Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я постарался ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС всСго ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅, ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com