Skola:sps
Obsah |
Apache
Čo je Apache?
Apache je najznámejší a najrozšírenejší webový server na internete. Názov Apache bol zvolený na počesť amerického kmeňa indiánov kvôli ich bojovým schopnostiam a vojnovej stratégii.[1]
Konfigurácia Apache
Stiahneme si TCL a naimportujeme do Virtual Box-u.
Inštalácia a spustenie
- inštalácia Apache
~$ tce-load -wi apache2 apache2-mod-php5 █
- spustenie Apache
~$ sudo /usr/local/apache2/bin/apachectl start █
Hlavný konfiguračný súbor pre Apache2 je httpd.conf a v distribúcii Tiny Core sa nachádza v /usr/local/apache2/conf/.
Všetko čo je v tomto súbore napísané bez symbolu # na začiatku považuje apache za nastavenie, každý takýto riadok sa nazýva direktíva.
Direktívy zapisujeme v tvare:
Direktiva parameter1 parameter2
Direktívy môžeme zapisovať aj do sekcií
Základné sekcie
http://httpd.apache.org/docs/2.2/sections.html
Základné direktívy[2]
AccessFileName .htaccess | definuje názov distribuovaného konfiguračného súboru |
ServerRoot "/usr/local/apache2" | definuje koreň adresárového stromu kde sa nachádzajú konfiguračné súbory, logy a error logy. Na koniec cesty sa nedáva |
Listen 12.34.56.78:80 Listen 80 |
umožňuje "počúvať" na inom ako defaultnom porte a ip adrese |
LoadModule foo_module modules/mod_foo.so | podpora Dynamic Shared Object (DSO), umožňuje pridať moduly, staticky kompilované moduly (tie v `httpd -l`) tu pridávať netreba |
User tc Group staff |
pod akým používateľom sa spúšťa apache (najprv ho aj tak treba spustiť ako root) |
ServerAdmin you@example.com | kontakt na admina |
ServerName www.example.com:80 | názov servra, ak nie je registrovaný v DNS tak IP adresa |
DocumentRoot "/usr/local/apache2/htdocs" | Priečinok z ktorého sa nahrávajú súbory, defaultne sa nahrávaju z tohto adresára ale je možné použiť symbolické linky alebo alias-y pre presmerovanie na iné miesta |
DirectoryIndex index.html | Určuje čo sa zobrazí po zadaní URL ak nie je zadaný súbor. |
Nakonfigurujte server tak, aby sa ako index zobrazil súbor index.php, ak sa na servri nenachádza, nech sa zobrazí index.html.
Každý priečinok do ktorého má apache prístup môže byť nakonfigurovaný podľa toho čo bude v ňom a jeho podpriečinkoch.
Direktívy pre daný priečinok píšeme do sekcie Directory.
Options[3]
Hodnoty direktívy Options sú "None", "All" alebo akákoľvek kombinácia nasledujúcich: "Indexes", "Includes", "FollowSymLinks", "SymLinksIfOwnerMatch", "ExecCGI", "MultiViews". Poznámka: "MultiViews" musí byť vymenovaná explicitne, voľba "All" nestačí.
- None
- All
- všetko okrem MultiViews
- Indexes
- ak v adresári chýba DirectoryIndex (napr. index.html) tak mod_autoindex vráti formátovaný výpis adresára
- Includes
- server-side include pomocou mod_include je povolený
- FollowSymLinks
- server "nasleduje" symbolické linky v adresári
- SymLinksIfOwnerMatch
- server "nasleduje" len symbolické linky ktorých cieľ vlastní používateľ s rovnakým id ako vlastník linku
- ExecCGI
- spúšťanie CGI skriptov pomocou mod_cgi je povolené
- MultiViews
- prevod obsahu povolený pomocou mod_negotiation
Pre pridávanie a odoberanie možností pri direktíve options môžeme použiť + a -. Možnosti s +/- a tie bez nesmieme miešať.
Nakonfigurujte apache tak, aby v /usr/local/apache2/htdocs umožňoval výpis adresára ale neumožňoval nasledovanie symbolických linkov a v /usr/local/apache2/htdocs/1 naopak.
Vytvorte súbor u1.html v priečinku /home/tc a zabezpečte aby ho Apache zobrazil po zadaní adresy ServerName/1
AllowOverride[4]
Definuje ktoré direktívy je povolené nastaviť v .htaccess
- None
- All
- Názov_direktívy
Order[5]
Definuje poradie vyhodnocovania direktív allow/deny
- allow, deny
- deny, allow
Allow
povolí prístup z danej adresy, Allow from all povolí prístup všetkým
Deny
zakáže prístup z danej adresy, Deny from all zakáže prístup všetkým
Zakážte prístup na server z jednej konkrétnej IP adresy.
Pre súbor admin.php povoľte len lokálny prístup.
Moduly
mod_rewrite[6]
Zabezpečuje zmenu prichádzajúcich URL requestov pomocou regulárnych výrazov. Pre povolenie musíme nastaviť RewriteEngine on (buď v .htaccess pre konkrétny adresár alebo v sekcii Directory v /usr/local/apache2/conf/httpd.conf)
RewriteCond
[NC] | "no case" pre pattern podmienky |
[OR] | alebo dalsia podmienka |
V RewriteCond môžeme použiť aj premenné servra. Viac info tu
RewriteRule
- flags
[R] | odošle HTTP response 302 (MOVED TEMPORARILY) |
[F] | odošle HTTP response 403 (FORBIDDEN) |
[G] | odošle HTTP response 410 (GONE) |
[L] | "last rule", po tomto pravidle sa nevykoná žiadne ďalšie prepisovanie |
[P] | "force proxy", daná URL bude považovaná za request pre proxy a presmerovaná do modulu mod_proxy |
[QSA] | použijeme ak chceme znovu použiť "query string" alebo jeho časť |
Regulárne výrazy
- text
. | jeden ľubovoľný znak |
[znaky] | jeden zo znakov |
[^znaky] | žiadny zo znakov |
text1 ¦ text2 | text1 alebo text2 |
- kvantifikátory
? | 0 alebo 1 |
* | 0 alebo N (N>0) |
+ | 1 alebo N (N>1) |
- zgrupovanie textu
(text) | zgrupovanie textu |
- ukotvenie
^ | začiatok riadka |
$ | koniec riadka |
Zabezpečte, aby sa po vyžiadaní súboru hello.html používateľom prehliadača lynx vrátil súbor helloLynx.html
Zabezpečte aby sa po zadaní adresy ServerName/category/192/category-name-sk zobrazila stránka ServerName/index.php?page=category&cat_id=192&page_lang=sk&seo_string=category-name&id=192
mod_deflate
Umožňuje ušetriť traffic kompresiou odosielaných súborov.
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
- Kompresia všetkých súborov, pre overenie nastavíme logovanie [8]
<IfModule deflate_module>
DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /usr/local/apache2/logs/deflate_log deflate
SetOutputFilter DEFLATE
</IfModule>
Upravte direktívy v texte vyššie tak, aby sa na servri komprimovali len súbory s príponou .php alebo html súbory
Zdroje
- ↑ http://www.apache.org/foundation/faq.html#name
- ↑ /usr/local/apache2/conf/httpd.conf
- ↑ http://httpd.apache.org/docs/2.2/mod/core.html#options
- ↑ http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
- ↑ http://www.maxi-pedia.com/Order+allow+deny
- ↑ http://www.widexl.com/tutorials/mod_rewrite.html
- ↑ http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
- ↑ http://www.howtoforge.com/apache2_mod_deflate