Některé hodnoty jsou již defaultně nastaveny na optimální hodnotu, přesto však stojí za povšimnutí, a proto se o nich zmiňuji. Navíc záleží na verzi serveru, případně, zda se jedná o verzi z nějakého balíčku. Jak jsem psal v článku Apache, MySQL, PHP - EasyPHP já používám balíček EasyPHP, kde se již nemusím starat o propojení Apache s PHP, MySQL a PHPMyAdminem.
V tomto článku vycházím ze serveru Apache verze 1.3.33 a PHP verze 4.3.10 na platformě Microsoft Windows. Uvedená nastavení by však měla být nezávislá jak na platformě, tak i zhruba na verzi, protože se jedná o základní položky.
Konfigurace Apache - httpd.conf
ServerRoot "C:/Program Files/Apache Group/Apache"
Cesta k instalaci, přesněji ke konfiguraci, logům a chybám. Většinou je nastavena na adresář, kde je Apache nainstalován a nastaví se při instalaci.
#Listen 3000
Napojení na specifickou IP adresu nebo port. Defaultně se nepoužívá Listen ale Port. Znak # způsobí, že se tato hodnota nepoužije (je to znak pro začátek komentáře).
Port 80
Na kterém portu webserver poslouchá. Pokud nechceme na jendom počítači rozběhnout více webových serverů nebo využít například SSL, můžeme použít základní konfiguraci.
ServerName www.samuraj-cz.com
Adresa serveru, využije se jen při speciálních situací, jinak na ní nezáleží. Při ladění můžeme použít třeba localhost.
DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"
Cesta ke kořenovému adresáři webu. Důležitá hodnota, standardně ukazuje do adresáře htdocs pod Apachem, ale není problém ji změnit. V souvislosti s touto cestou můžeme využít také aliasy.
Directory
Nastavení oprávnění k jednotlivým adresářům. Jedno z nejdůležitějších nastavení. V případě vývojového serveru není tolik důležité, ale u ostrého serveru na tomto nastavení záleží bezpečnost webu. Osobně nastavuji i ve vývojovém prostředí bezpečnější hodnoty.
Pravidla se zapisují mezi tagy Directory. Na začátku se uvádí cesta a jméno adresáře, pročež můžeme s výhodou použít regulární výrazy. Pokud na jeden adresář sedí více pravidel, tak se uplatňují v pořadí od nejméně specifických k nejvíce a jako poslední se použije soubor .htaccess (pokud existuje). Pro nastavení všech adresářů můžeme použít jako jméno /. Pravidla se uplatňují na specifikovaný adresář včetně všech podadresářů. Defaultně vypadá nastavení takto:
<Directory /> Options FollowSymLinks AllowOverride Options </Directory>
Toto nastavení je vhodné ještě více omezit a na všechny adresáře vše zakázat a teprve přesnějším určením adresáře povolovat.
<Directory /> Order Deny,Allow Deny from All </Directory>
Hlavní hodnoty, které můžeme pro nastavení adresářů použít jsou:
Options nastavuje, které serverové vlastnosti budou zapnuty pro daný adresář. Pro přidání vlastnosti se může použít + (ale to je defaultní a tudíž zbytečné) nebo - pro odebrání vlastnosti. Hodnoty:
- None – žadné vlastnosti nebudou zapnuty.
- All – zapíná vše, je to defaultní nastavení.
- ExecCGI – povolení spouštění CGI skriptů
- FollowSymLinks – server bude následovat symbolické linky
- Includes – povolení include na straně serveru
- Indexes – pokud v adrese není indexový soubor (index.html apod.), tak server vrátí výpis adresáře, na ostrém serveru je to velmi špatné a je vhodné vždy zakázat
AllowOverride říká, která nastavení mohou být měněna souborem .htaccess.
Order určuje pořadí, zda se nejprve zakazuje a potom povoluje nebo naopak.
Deny from All zakazuje přístup odkudkoliv
Nastavení pro práva v adresářích je mnohem více, zde jsem uvedl pouze ty základní. Základní nastavení pro kořenový adresář webu, a tedy pro všechny podadresáře na webu, je uvedeno dále, určitě jste si všimli, že není zrovna optimální.
<Directory "C:/Program Files/Apache Group/Apache/htdocs"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
Files
Stejně jako oprávnění na adresáře, můžeme nastavovat oprávnění na soubory, opětovně můžeme využít silný aparát regulárních výrazů.
Aliasy
Aliasy jsou jakési odkazy, pomocí kterých, můžeme do kořenového adresáře webu přidat adresář, který se nachází někde jinde. Pro použití aliasů je třeba, aby byl zapnutý modul mod_alias (to je defaultně). Je dobré v dalším kroku nastavit práva na tento adresář.
Alias /mysql/ "C:/Program Files/Apache Group/Apache/phpmyadmin/"
DirectoryIndex index.html index.shtml index.wml index.pwml index.php index.php3 index.php4
Položka DirectoryIndex obsahuje jména souborů, která jsou brána jako indexová a tedy při zadání adresy bez určení souboru se použije jeden z těchto (pokud existuje). Pokud chceme využít PHP nesmíme zapomenout na nastavení potřebných indexových souborů z PHP.
ErrorDocument 404 /404.phtml
Pomocí hodnoty ErrorDocument můžeme nastavit vlastní vzhled serverových chybových hlášení (chyby 404, 403, 401, 406, 500). Asi nejužitečnější je předělání chyby 404 File Not Found, aby při pokusu přistoupit na neexistující dokument webu, dostal uživatel odpověď s radou a ve stejném designu jako celý web.
Propojení Apache s PHP
Pokud chceme v Apachi rozběhnout PHP, musíme jej samozřejmě nainstalovat, a do konfigurace doplnit následující řádky. Toto nastavení je pro případ, kdy PHP pracuje ve formě webového modulu.
LoadModule php4_module "{cesta}/php/php4apache.dll" AddModule mod_php4.c AddType application/x-httpd-php .phtml .pwml .php3 .php4 .php .php2 .inc
Konfigurace PHP - php.ini
register_globals = Off
Registrování globálních proměnných pro vstupní data (POST, GET, cookies, proměnné prostředí). Z bezpečnostního hlediska je vhodné nechat tuto hodnotu vypnutou, k datům pak přistupujeme ne přímo (např. $name), ale pomocí asociativního pole (např. $_POST["name"]).
magic_quotes_gpc = Off
Pokud je zapnuto, automaticky přidává uvozovky k hodnotám z GET/POST/Cookie. Lepší je nechat vypnuto a ošetřit při použití dat (hlavně u vkládání do DB, aby nedošlo k SQL injection). Některé hostingy však mají tuto hodnotu zapnutou, proto je třeba s tímto v kódu počítat, abychom nepřidávali uvozovky dvakrát.
error_reporting = E_ALL
Typy zobrazování chybových zpráv (bitově). E_ALL zobrazují se všechny zprávy, vhodné pro vývoj a ladění. E_ALL & ~E_NOTICE – vše mimo upozornění, E_ALL & ~E_WARNINGS – vše mimo varování, apod.
display_errors = On
Zapnutí nebo vypnutí výstupu chybových zpráv. Na ostrém serveru se většinou používá pouze logování a ne výstup přímo na stránku.
session.gc_maxlifetime = 1440
Minimální délka session při neaktivitě. Po zadané době, pokud nedojde k obnovení, se mohou sessions mazat. Důležité je na toto pamatovat, pokud v aplikaci řešíme určitou délku session a při neaktivitě např. uživatele odhlásíme, tak pokud bude tato hodnota kratší než ta co používáme v kódu mohou se nám "ztrácet" sessions.
Mám takovy problem ...
Co mam dělat kdyz mi nejde zaptnout Apache 2.2
poradte mi prosim na nx9@centrum.cz
odpověď na [1]Rosta: Sehnat někoho, kdo tomu rozumí.
Nepíšete OS na kterém apache jede. Ale jede to na všem, jen se to musí umět. Nejlépe je použít hotový "balík", kde je obvykle APACHE, MySQL a PHP - např. XAMPP pro WINDOWS.
kde a jak mam nastavit aby mi apache cetl scripty zacinajici <? a koncici ?> . Skript se nezobrazi pokud neni zapsan takto<?php ?>. jak mam nastavit aby sla i ta zkracena verze zapisu? Dekuji za odpoved
standisek88@seznam.cz
Zdravím,
super články, jen poprosím o doplnění syntaxe v <Directory>
v závislosti na verzi apache (2.2, 2.4), aby to zbytečně nemátlo lidi, kteří začínají