11. Virtual Host
Pozwala definiować inną konfigurację dla
domen. Określa jakie domeny są obsługiwane
na jakim interfejsie sieciowym bądź porcie.
Listen 80
NameVirtualHost *:80
<VirtualHost *:80>
ServerName server.domain.com
ServerAlias www.server.domain.com
...
</VirtualHost>
12. Serwowanie plików
<VirtualHost *:80>
DocumentRoot /var/www/vhost/html
<Directory /var/www/vhost/html>
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location /files>
Options Indexes FollowSymLinks
</Location>
</VirtualHost>
13. Serwowanie aplikacji
mod_proxy
Moduł odpowiedzialny za funkcjonalność
prośredniczenia żądań do innych aplikacji.
<VirtualHost *:80>
ServerName vhost.example.com
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ProxyPreserveHost On
</VirtualHost>
15. Serwowanie aplikacji
mod_rewrite
Moduł pozwala na przepisywanie jednych
adresów po spełnienie odpowiednich
warunków.
Flagi reguł:
● L (last) - ignoruje dalsze reguły
● NC - dopasowanie ścieżki bez
rozróżniania wielkości liter
● NE - nie escapuje znaków
● P - przekazanie do mod_proxy
● R - przekierowanie (ang. redirect)
● E= - ustawia zmienną środowiskową
28. Silnik Apache
mpm_prefork
● podstawowy silnik (najstarszy)
● wiele procesów potomnych
● bez watków = thread-safe
● więcej pamięci
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
29. Silnik Apache
mpm_worker
● w httpd od 2.0
● kilka procesów potomnych
● każdy potomny ma kilka wątków
● mniej pamięci, ale nie "thread-safe"
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
</IfModule>
30. Optymalizacja WSGI
(z moich obserwacji)
WSGIDaemonProcess spowalnia bo jest dodatkowa komunikacja po unix'owym
plikowym socket'ie. Dlatego lepiej aby mpm sterował ilością procesów i wątków.
prefork + szybkie zabijanie = średnio pamięci + dobra odpowiedź + zwieszki!
prefork + wolne zabijanie = dużo pamięci + dobra odpowiedź
prefork + dużo na starcie + wolne zabijanie =
= wolny start + bardzo dużo pamięci + najszybsza odpowiedź
worker + szybkie zabijanie = mało pamięci + średnia odpowiedź
worker + wolne zabijanie = średnio pamięci + dobra odpowiedź
worker + dużo na starcie + wolne zabijanie = średnio pamięci + szybka odpowiedź
Zwracać uwagę na sprzęt (ilość rdzeni, pamięć) oraz charakter ruchu.