Konfigurace Apache
Jak už jsem se zmínil, Apache je vysoce konfigurovatelný. Nejdůležitější soubory se nacházejí v adresáři CESTA/etc.
Najdeme tam tyto:
httpd.conf
access.conf
srm.conf
httpd.conf - tento hlavní konfigurační soubor je poměrně slušně dokumentován
ServerType - standalone - server je spouštěn samostatně
ServerRoot - cesta ke konfiguračním souborům
ServerName - jméno serveru
ServerAdmin - root@server
DocumentRoot - cesta ke kořenovému adresáři s dokumenty
ErrorLog - logs/error_log --cesta, kde se mají ukládat chybové hlášky Apache
LogLevel - nastavení priority logů (stejně jako u syslogu)
AccessFileName - jméno souboru, který se má v každém adresáři hledat kvůli povolení přístupu (typicky .htaccess)
Timeout - timeout
MaxClients - maximální počet klientů
Listen - adresa a port
AddModule - aktivace načtených modulů,příp. zakompilovaných v apachi
LoadModule - načtení modulů dynamických (např. LoadModule proxy_module modules/ApacheModuleProxy.dll)
Další neméně důležitá věc je definování adresářů a jejich "práv".
Directory - označuje určitou skupinu, pro kterou budou platit nějaké pravidla (Options)
Options může nabývat hodnot:
None - žádné zvláštní práva a omezení
All - povoluje se vše kromě MultiViews - výchozí volba
ExecCGI - povoleno spouštění cgi skriptů
FollowSymLinks - server se bude odkazovat na symbolické linky v tomto adresáři
Indexes - pokud server nenajde soubor definovaný v DirectoryIndex
(většinou index.html, index.htm, index.php), je povolen výpis daného adresáře
Další jsou: Includes, IncludesNOEXEC, MultiViews,SymLinksIfOwnerMatch
Příklad nastavení adresáře /usr/local/httpd/htdocs
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>
Tyto volby povolují pouze odkazovat na symbolické odkazy a vypsat adresář při nenalezení DirectoryIndex. Např. uživatel z tohoto adresáře nemá právo spustit cgi skript.
Další příklad:
<Directory "/home/*/public_html">
Options FollowSymLinks ExecCGI Includes
</Directory>
SSL
ftp://ftp.modssl.org/source/mod_ssl-2.8.12-1.3.23.tar.gz
ftp://ftp.openssl.org/source/openssl-0.9.6g.tar.gz
K čemu je vlastně SSL?
SSL slouží k bezpečnému přenosu dat, toto spojení je šifrované. SSL používá dva klíča, tkzv. veřejný a šifrovaný. K tomu, abychom na našem Apachi mohli používat SSL potřebujeme openssl.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Instalace je poměrně jednoduchá
root$ ./config
root$ make
root$ make test
root$ make install
Tato posloupnost příkazů nainstaluje OpenSSL do standardního adresáře /usr/local/ssl
Pokud chceme OpenSSL nainstalovat někam jinam, slouží nám k tomu již známé přepínače.
root$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl
--prefix=DIR říká, že OpenSSL se nainstaluje do adresářů DIR/bin, DIR/lib, DIR/include/openssl.
Konfigurační soubory, které OpenSSL používá budou uloženy v DIR/ssl, pokud nepoužijeme parametr --openssldir, jako je uvedeno v předchozím příkladě.
Další možnosti konfigurace u configu jsou:
no-threads
threads
no-shared
shared
no-asm
386
no-<cipher>
Pokud máme zkompilovaný OpenSSL, můžeme se pustit do konfigurace mod_ssl.
$ cd mod_ssl-2.8.12-1.3.22
$ ./configure --with-apache=../apache_1.3.x --with-ssl=../openssl-0.9.x --prefix=/path/to/apache
$ cd apache_1.3.x
$ make
$ make certificate
$ make install
Parametry pro aktivování SSL
port - pro SSL je vyhrazen port 443
SSLEngine on - aktivuje ssl engine
SSLCertificateFile - cesta k veřejnému klíči
SSLCertificateKeyFile - cesta k tajnému klíči