ΠΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ 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 (ΠΠΎΠ΄ΡΠ» Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ) ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° 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 ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°ΡΠ° RAM ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠ° apache2 ΠΈ Π»Π΅ΠΊΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° php ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅.
3. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Ρ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ RPI3).
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΈΠΌΠ° ΡΡΠΎΡΠΈΡΠΈ Π΄ΡΡΠ³ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ (ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ Π²Π΅ΡΠ΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅), ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ (ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ) MPM, ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° HostnameLookups ΠΈ Ρ.Π½., Π½ΠΎ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ
Π΄Π° ΠΎΡΡΠ°Π·Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π΅Π·ΠΈ ΡΠΎΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ
Π° Π½Π° ΠΌΠ΅Π½, ΠΈ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌ, ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
