ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ 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