Tato stránka vysvětluje, jak používat Webmin ke konfiguraci webového serveru Apache . Zahrnuje virtuální hostitele, řízení přístupu IP, omezení hesel a mnoho dalšího.
Úvod do Apache
Apache je nejoblíbenějším HTTP serverem na internetu díky nulovým nákladům, široké dostupnosti a rozsáhlé sadě funkcí. Všechny linuxové distribuce jej obsahují jako standardní balíček a lze jej nainstalovat nebo zkompilovat pro každou jinou unixovou variantu podporovanou Webminem. Má však velmi velký počet direktiv voleb definovaných v textovém konfiguračním souboru, a tak může být pro nezkušeného administrátora nastavení obtížné.
Během let od jeho prvního představení bylo vydáno mnoho verzí Apache. Od verze 1.0 až po současnou řadu 1.3 a 2.2, každá verze obsahuje více funkcí a možností. Základní funkčnost webového serveru a rozložení konfiguračních souborů zůstaly v podstatě stejné, i když se výrazně změnila vnitřní implementace.
Apache má modulární design, ve kterém je každý modul zodpovědný za nějakou část své celkové sady funkcí. Existuje několik standardních modulů, které jsou součástí téměř každé instalace Apache, a mnoho dalších, které jsou volitelné nebo je třeba je stáhnout samostatně. Moduly lze zkompilovat do spustitelného souboru webového serveru nebo je lze dynamicky načíst ze sdílených knihoven za běhu. Tuto modulární architekturu lze použít k úspoře paměti tím, že není nutné zavádět moduly, které neposkytují žádné užitečné funkce pro konkrétní systém.
Apache bere svou konfiguraci z více textových souborů, z nichž každý obsahuje řadu direktiv, obvykle jednu na řádek. Každá direktiva má název a jednu nebo více hodnot a nastavuje volbu, jako je cesta k souboru protokolu nebo typ MIME pro některý soubor. Direktivy, které Apache rozpozná, závisí na používaných modulech. Většina modulů přidává podporu pro několik direktiv pro konfiguraci funkcí, které poskytují.
Často budete chtít hostovat více než jeden web na jednom serveru. Apache lze nakonfigurovat tak, aby používal jinou konfiguraci v závislosti na webové stránce, kterou prohlížeč požadoval. Každé z těchto míst se nazývá virtuální hostitel a je definováno v konfiguračním souboru se speciální sekcí
Podobně lze v konfiguračním souboru definovat sekce
Další metodou vytváření direktiv, které se vztahují pouze na jeden adresář, je umístit je do speciálního konfiguračního souboru s názvem .htaccess který se nachází v samotném adresáři. Tyto soubory jsou často vytvářeny běžnými uživateli, aby mohli konfigurovat své vlastní webové stránky, aniž by potřebovali úplný přístup k hlavnímu konfiguračnímu souboru. To je velmi užitečné v systému, který hostí více stránek, z nichž každá je vlastněna jiným uživatelem Unixu, spíše než v systému s pouze jednou webovou stránkou, kterou nastavil vlastník serveru.
Modul Apache Webserver
Toto je jeden z nejsložitějších a nejvýkonnějších modulů Webmin, protože vám umožňuje konfigurovat téměř všechny funkce Apache. Dokáže určit verzi Apache nainstalovanou ve vašem systému a moduly, které používá, a podle toho upraví své uživatelské rozhraní tak, abyste mohli upravovat pouze ty direktivy, kterým webový server rozumí. Rozhraní je však obecně stejné pro všechny verze Apache.
Protože existuje tolik direktiv a modul se snaží umožnit konfiguraci všech z nich, seskupuje direktivy do kategorií jako Procesy a limity, Síť a adresy a CGI programy. Tyto kategorie jsou reprezentovány ikonami, které se objeví, když otevřete virtuální server, adresář nebo soubor voleb v modulu. Ve všech případech můžete zobrazit a upravit nastavení v každé kategorii kliknutím na její ikonu.
Apache má velké množství standardních modulů a ještě větší počet samostatných modulů, které byly vyvinuty jinými lidmi. Webmin nepodporuje úpravy direktiv ve většině těchto nestandardních, jako je mod_perl a mod_php. Bezpečně však bude ignorovat jakoukoli direktivu konfiguračního souboru, které nerozumí, takže žádná nastavení pro nepodporované moduly, která provedete ručně, nebudou poškozena.
Když otevřete modul Apache, zobrazí se níže zobrazená stránka s kartami:
Hlavní stránka modulu Apache WebserverNa první kartě jsou ikony pro různé kategorie globálních možností a také několik funkcí navíc. Ve druhé je seznam všech aktuálních virtuálních serverů a ve třetí je formulář pro přidání nového virtuálního hostitele. Pokud máte ve svém systému velmi velký počet virtuálních serverů (ve výchozím nastavení více než 100), zobrazí se místo toho vyhledávací formulář pro vyhledání serverů. První server bude vždy speciální Výchozí server , který obsahuje direktivy, které se vztahují na všechny ostatní virtuální servery, a zpracovává požadavky, které jiné servery ne.
Modul Apache přirozeně nebude fungovat, pokud nemáte na svém systému nainstalovaný Apache. V tomto případě se na hlavní stránce místo konfiguračního formuláře modulu nebo seznamu virtuálních serverů zobrazí chybové hlášení. Všechny linuxové distribuce obsahují balíček nebo balíčky pro něj na svém disku CD-ROM nebo na webových stránkách, takže než budete pokračovat, nainstalujte jej odtud pomocí modulu softwarových balíčků.
Protože modul předpokládá, že spustitelné a konfigurační soubory Apache budou v umístěních používaných balíčkem vaší distribuce, ohlásí stejnou chybu, že software není nainstalován, pokud jste jej zkompilovali a nainstalovali ručně. V takovém případě klikněte na Konfigurace modulu propojit a upravit cesty do správných umístění pro váš systém.
Na verzích Unixu, které standardně neobsahují Apache, Webmin předpokládá, že bude nainstalován ze standardní zdrojové distribuce z www.apache.org. Pokud jste nainstalovali webový server z volitelného balíčku, který byl zpřístupněn pro váš OS, pak si hlavní stránka bude stěžovat, že není nainstalován a budete muset upravit konfiguraci modulu.
Uživatelské rozhraní modulu je poměrně složité a má velké množství stránek, formulářů a podstránek kvůli složitosti a síle konfiguračních souborů Apache. Existují však prvky rozhraní, které se opakují na mnoha stránkách v celém modulu, například :
- Ikony kategorií Když kliknete na ikonu virtuálního serveru, adresáře nebo souboru voleb, v horní části stránky se zobrazí tabulka ikon s názvy jako MIME Types a CGI Programs. Pod každou z těchto ikon jsou pole a tabulky pro konfiguraci možností souvisejících s popiskem ikony, pod kterou se nacházejí. Toto běžně používané rozvržení rozděluje obrovské množství upravitelných možností Apache do kategorií, protože na jedné stránce je příliš mnoho polí pro zobrazení. Přesné ikony, které se zobrazují, a pole pod nimi se liší v závislosti na části konfigurace webového serveru, kterou upravujete, a na nainstalované verzi Apache. Jejich základní rozložení je však vždy stejné.
- Pole tabulek Na mnoha formulářích některá pole používají tabulky pro zadávání více hodnot, jako jsou typy MIME a jejich přidružené přípony souborů. Počet řádků, které může mít každá tabulka, není nijak omezen, ale Webmin v každém okamžiku zobrazí pouze jeden prázdný řádek v každé tabulce. Tím se sníží velikost formulářů, které mají mnoho tabulek, ale znamená to, že do tabulky můžete přidat pouze jeden nový řádek najednou. Chcete-li přidat více než jeden, budete muset formulář uložit a poté jej znovu zadat, což způsobí, že se pod tím, který jste právě vyplnili, zobrazí nový prázdný řádek.
Níže uvedené sekce podrobněji vysvětlují, na které ikony kliknout a které tabulky vyplnit, když děláte věci, jako je povolení skriptů CGI a nastavení typů MIME.
Spuštění a zastavení Apache
Než se prohlížeče budou moci připojit k webovému serveru Apache ve vašem systému, musí být spuštěn jeho serverový proces. Zda je aktuálně spuštěn, můžete zkontrolovat v horní části kterékoli ze stránek v modulu. Pokud jsou odkazy označené Použít změny a Zastavit Apache zobrazí, pak je aktuálně aktivní. Pokud se však objeví pouze odkaz *Spustit Apache*, ještě neběží.
Chcete-li jej spustit, klikněte na tlačítko Spustit Apache odkaz. Pokud vše půjde dobře, stránka, na které se právě nacházíte, bude znovu zobrazena a odkazy v horní části by se měly změnit, aby indikovaly, že je nyní spuštěna. V opačném případě se objeví chybové hlášení vysvětlující, co se pokazilo – s největší pravděpodobností bude příčinou chyba v konfiguračním souboru.
Chcete-li zastavit spuštěný webový server, klikněte na Zastavit Apache odkaz na kteroukoli stránku modulu. V nepravděpodobném případě, že Webmin nebude schopen zastavit server, zobrazí se stránka s chybovou zprávou. Pokud je úspěšně zastaven, znovu se zobrazí stejná stránka se změněnými odkazy nahoře, aby bylo vidět, že již neběží.
Když je Apache aktivní, každá stránka bude mít Použít změny odkaz v horní části, který lze použít k signalizaci webového serveru, aby znovu načetl aktuální konfiguraci. Po provedení jakýchkoli změn v tomto modulu (kromě změn v souborech .htaccess) je nutné kliknout na tento odkaz, aby byly aktivní. Na rozdíl od jiných modulů Webmin, které mají na hlavní stránce tlačítko Použít, tento jej má na každé stránce, abyste se nemuseli vracet do indexu pokaždé, když provedete změnu.
Úprava stránek na vašem webovém serveru
Tato část vysvětluje, jak najít a upravit soubory ve vašem systému, které se zobrazí, když se klient připojí k vašemu webovému serveru Apache. Pokud již víte, jak na to, klidně to přeskočte a přejděte k další části.
Když je Apache poprvé nainstalován z balíčku nebo ze zdroje, jeho počáteční konfigurace obvykle nebude mít nastaveny žádné virtuální servery. Místo toho bude existovat pouze výchozí server, který poskytuje stránky libovolnému klientovi, který se připojuje na port 80. Výchozí stránky můžete zobrazit spuštěním webového prohlížeče a přechodem na adresu URL http://_yourhostname_/ nebo http://_localhost_/ používáte prohlížeč na stejném systému jako Webmin. Stránka, která se objeví, bude pravděpodobně pouze stránka dodávaná s Apache nebo vaší distribucí Linuxu.
Kořenový adresář dokumentu, ze kterého Apache poskytuje soubory, se zobrazí na hlavní stránce modulu vedle Výchozího serveru ikona. Například na Redhat Linuxu je tento adresář ve výchozím nastavení /home/httpd/html. Soubory v tomto adresáři lze upravovat po přihlášení jako root nebo pomocí modulu Správce souborů Webmin. Jakékoli změny, které provedete, se okamžitě projeví na webu.
Pokud váš systém bude hostovat pouze jeden statický web, nemusí být nutné konfigurovat žádné další aspekty Apache. Stačí nahrát nebo zkopírovat HTML, obrázky a další soubory do adresáře a jeho podadresářů a vytvořit web, který chcete. Nejdůležitější soubor je index.html, který Apache obslouží vždy, když prohlížeč nepožaduje konkrétní stránku. Protože většina lidí nejprve přejde na http://_yourserver_/, stránka index.html bude první, kterou uvidí.
Chcete-li úpravy usnadnit, možná budete chtít změnit vlastnictví kořenového adresáře dokumentu a všech jeho souborů na uživatele bez oprávnění root. Musíte se však ujistit, že jsou stále čitelné pro uživatele, pod kterým běží proces serveru Apache, který se obvykle nazývá httpd. Nejjednodušší způsob, jak toho dosáhnout, je učinit všechny soubory a adresáře světově čitelnými a světově spustitelnými.
Vytvoření nového virtuálního hostitele
Pokud chcete ve svém systému hostovat více webových stránek, budete muset pro každou z nich vytvořit virtuální hostitele Apache. Než budete moci přidat web, musí být jeho adresa nejprve zaregistrována v DNS, buď na serveru DNS ve vašem systému, nebo na jiném hostiteli. Pokud mají soubory webu vlastnit jiný uživatel Unixu než ten, který vlastní kořenový adresář dokumentu, musí být také nejprve vytvořen.
Celý proces přidání virtuálního serveru, včetně výše uvedených kroků, je:
- Rozhodněte se o názvu hostitele, který bude použit v adrese URL nového webu, například www.example.com .
- Rozhodněte se, zda bude váš nový web založen na adrese IP nebo na názvu. Stránky založené na názvu budou fungovat dobře se všemi kromě starých prohlížečů, a proto jsou v dnešní době zdaleka nejlepší volbou. Stránky založené na IP budou fungovat s jakýmkoli prohlížečem, ale k přidání do vašeho systému potřebuje vlastní samostatnou IP adresu. Protože IP adres je často vzácné, má to smysl pouze v případě, že potřebujete nastavit virtuální FTP nebo POP3 server i pro doménu.
- Pokud bude váš web založen na IP, použijte modul Konfigurace sítě (pokrytý v části Konfigurace sítě) k přidání nové virtuální IP adresy do externího síťového rozhraní ve vašem systému. Ujistěte se, že bude aktivován při spouštění a je aktivní nyní. Pokud má váš systém pouze jednu statickou internetovou IP adresu přidělenou vaším ISP, pak žádné další virtuální IP adresy, které do něj přidáte, nebudou fungovat. V takovém případě budete muset místo toho použít virtuální server založený na názvech nebo požádat svého ISP, aby vám přidělil více adres.
- Pokud example.com doména již na serveru DNS existuje, přidejte záznam pro www.example.com s externí IP adresou vašeho systému (pro web založený na názvu) nebo s adresou zvolenou v předchozím kroku (pro web založený na IP). Pokud doména ještě neexistuje, budete ji muset přidat na server DNS a zaregistrovat u registrátora DNS, jako je Network Solutions. V obou případech stránka BIND DNS Server podrobně vysvětluje, jak přidat záznamy a domény.
- Pokud bude web používat standardní HTTP port 80 (což je téměř vždy to, co chcete), můžete přeskočit na krok 8. V opačném případě na hlavní stránce modulu Apache Webserver klikněte na Networking and Adresy zobrazíte formulář zobrazený na prvním snímku obrazovky níže.
- V prázdném řádku v Poslouchání adres a portů tabulky, vyberte Vše pod Adresou sloupec a zrušte výběr Výchozí pod Port sloupec. Poté do pole vedle zadejte číslo portu TCP svého webu a klikněte na tlačítko Uložit tlačítko v dolní části stránky.
- Na hlavní stránce modulu přejděte dolů na formulář *Vytvořit nový virtuální server* pod seznamem existujících virtuálních hostitelů.
- Pokud nastavujete virtuální server založený na IP, v části Adresa Měli byste zadat virtuální IP adresu, která byla přidána v kroku 3. Pokud nastavujete virtuální server založený na názvech, zadejte do pole externí IP adresu vašeho systému. Pokud byl váš server Apache nakonfigurován tak, aby přijímal připojení na základě názvu na jakékoli adrese IP, můžete vybrat možnost Jakýkoli místo toho možnost pro toto pole. Další podrobnosti naleznete ve vysvětlení níže. Pokud váš nový virtuální server bude používat jiný port než 80 a bude jediným serverem na tomto portu, můžete vybrat možnost Jakýkoli také tak, že zpracuje všechny požadavky, které přicházejí na port.
- Pokud nastavujete virtuální server založený na IP, zrušte zaškrtnutí políčka Přidat název adresy virtuálního serveru zaškrtávací políčko. U serverů založených na názvech by měla být ponechána povolená.
- Pokud bude nový virtuální hostitel používat nestandardní port, vyberte poslední možnost pro Port pole a zadejte číslo do pole vedle něj.
- V kořenovém adresáři dokumentu zadejte úplnou cestu k adresáři, který bude obsahovat soubory pro tento web. Může to být například /home/example/www .
- V poli Název serveru zadejte názvy hostitelů, které budou klienti používat k odkazování na tento web, například www.example.com . Můžete zadat více než jeden název, například web.example.com a example.com pokud se bude jednat o server založený na názvech, který by měl být přístupný na několika různých adresách URL.
- Pokud v systému nemáte samostatný soubor, který obsahuje všechny virtuální hostitele, ponechte možnost Přidat virtuální server do souboru pole nastaveno na Standardní soubor httpd.conf . Jinak můžete zvolit Vybraný soubor a zadejte cestu do pole vedle. Ujistěte se, že vybraný soubor skutečně používá Apache (např. direktivou Include v httpd.conf), jinak bude virtuální server k ničemu a ve Webminu se nezobrazí. Pokud pro ukládání virtuálních hostitelů vždy používáte stejný samostatný soubor, Soubor pro přidání virtuálních serverů pole vysvětleno v Konfigurace modulu Apache Webserver níže uvedená část může být užitečná. Pokud je nastavena, další možnost je přidat do pole *Přidat virtuální server do souboru* pro přidání do souboru nastaveného touto možností konfigurace modulu.
- Chcete-li, aby Webmin zkopíroval všechny direktivy z jiného virtuálního serveru na ten, který vytváříte, vyberte jej z Kopírovat direktivy z Jídelní lístek. To může být užitečné, pokud mají všichni vaši virtuální hostitelé podobnou konfiguraci.
- Po dokončení formuláře klikněte na Vytvořit knoflík. Nový virtuální server bude přidán do konfiguračního souboru Apache a do seznamu serverů na hlavní stránce.
- Klikněte na ikonu nového virtuálního serveru, čímž přejdete na stránku jeho možností, jak je znázorněno na druhém snímku obrazovky níže.
- Přejděte dolů na formulář v části Možnosti podle adresáře a do Cesta zadejte kořenový adresář dokumentu, který jste vybrali v kroku 11 pole. Ujistěte se, že Typ je nastaven na Adresář a Regexp? pole na Přesná shoda .
- Klikněte na tlačítko Vytvořit tlačítko pro přidání nové sekce do konfiguračního souboru pro adresář. To je nezbytné, abyste mohli klientům udělit práva k procházení souborů, které obsahuje, což výchozí konfigurace adresáře Apache popírá.
- Klikněte na novou ikonu pro adresář, který byl přidán na stránku možností virtuálního serveru. Tím se dostanete na stránku s možnostmi adresáře zobrazenou na třetím snímku obrazovky níže.
- Klikněte na Možnosti dokumentu a ve formuláři, který se zobrazí, změňte Možnosti adresáře pole na *Vybráno níže*. V části Nastavit pro adresář změňte položku pro Generovat indexy adresářů na Ano . Poté klikněte na tlačítko Uložit tlačítko v dolní části stránky.
- Chcete-li, aby byly všechny změny aktivní, klikněte na tlačítko Použít změny tlačítko v horní části libovolné stránky.
- Vy nebo uživatel, který vlastní virtuální server, můžete nyní začít přidávat soubory do kořenového adresáře dokumentů. Můžete to vyzkoušet otevřením adresy URL (například http://_www.example.com_/) ve webovém prohlížeči, abyste se ujistili, že vše funguje správně.
Když Apache obdrží požadavek HTTP, musí nejprve zjistit, pro který virtuální server je požadavek určen. Nejprve vyhledá virtuální server založený na názvu, jehož název hostitele odpovídá hostiteli požadovanému klientem a jehož adresa a port jsou stejné jako ty, ke kterým se klient připojil. Pokud není žádný nalezen, použije se místo něj první definovaný virtuální server pro adresu a port, nebo pokud žádný není, požadavek zpracuje výchozí server.
Virtuální servery založené na názvech lze používat pouze na adresách uvedených v části Adresy pro názvové virtuální servery na globální stránce Networking and Addresses. Pokud budete postupovat podle výše uvedených pokynů, bude adresa přidána do tohoto seznamu automaticky při vytváření nového virtuálního serveru. Pokud budou všechny virtuální servery ve vašem systému založeny na názvech, můžete otevřít tuto stránku, zadat * do pole a kliknout na Uložit takže Apache bude takové požadavky zpracovávat na jakékoli IP adrese. To také dává smysl, pokud má váš systém dynamicky přidělenou IP adresu a chcete obsluhovat více virtuálních hostitelů.
Jakmile je virtuální server vytvořen, můžete upravit jeho nastavení nebo jej odstranit podle následujících kroků :
- Na hlavní stránce modulu klikněte na ikonu virtuálního serveru. Tím se dostanete na stránku možností serveru zobrazenou na snímku obrazovky výše.
- Přejděte dolů na Podrobnosti virtuálního serveru formulář v dolní části stránky.
- Změňte Adresu , Port a další pole na cokoli chcete a klikněte na Uložit knoflík. Tato pole mají stejný význam jako ve formuláři pro vytvoření virtuálního serveru. Pokud se však adresa změní na virtuálním serveru založeném na názvech, možná ji budete muset změnit také na globální stránce Síť a adresy. Nebo pokud se chcete zbavit virtuálního serveru a všech konfiguračních direktiv, které obsahuje, klikněte na Odstranit virtuální server místo toho tlačítko.
- Zpět na hlavní stránku modulu klikněte na Použít změny odkaz pro aktivaci nových nastavení.
Nemůžete změnit nastavení výchozího serveru, ani jej nemůžete smazat.
Nastavení možností pro jednotlivé adresáře
Apache umožňuje zadat různé možnosti pro určité adresáře, buď pro všechny virtuální servery, nebo jen pro jeden. Včetně adresářů můžete ve skutečnosti nastavit možnosti, které se vztahují na tři typy objektů na vašem serveru Apache:
- Adresář Volby platí pro zadaný adresář a všechny soubory v něm nebo v podadresářích, které obsahuje.
- Soubory Možnosti platí pro soubory se zadaným názvem v libovolném adresáři.
- Umístění Možnosti se vztahují na všechny soubory nebo adresáře požadované adresou URL, jejíž cesta začíná zadaným umístěním. Například v adrese URL http://www.example.com/foo cesta by byla /foo .
Kdykoli Apache zpracuje požadavek, zkontroluje možnosti, které se na něj vztahují, v pevném pořadí. Ty z adresářových sekcí a soubory .htaccess jsou čteny jako první, takže jsou nejdříve zkontrolovány nejkonkrétnější adresáře. Poté následují soubory a poté sekce umístění. Poté se přečtou možnosti z virtuálního serveru, na který byl požadavek podán (pokud existují), a nakonec možnosti z výchozího serveru.
Stránka možností pro jednotlivé adresářeTo znamená, že volby nastavené pro adresář přepíší stejné volby nastavené v adresáři vyšší úrovně nebo na virtuálním serveru, jehož je členem. Chcete-li nastavit možnosti pro adresář, soubory nebo umístění URL, postupujte takto:
- Přestože se možnosti, které se chystáte nastavit, vztahují na adresář, musí být definovány pod jedním z virtuálních serverů nebo výchozím serverem. Pokud jsou pod virtuálním hostitelem, budou se vztahovat pouze na požadavky na soubory ve zvoleném adresáři nebo umístění URL na tento server. Pokud jsou však pod výchozím serverem, požadavky na soubory v adresáři na libovolného virtuálního hostitele budou provedeny. Na hlavní stránce modulu klikněte buď na Výchozí server ikonu nebo ikonu virtuálního serveru, na který chcete omezit možnosti adresáře. U adresářů je obvykle nejjednodušší umístit jejich volby pod výchozí server, protože každý virtuální hostitel má obvykle svůj vlastní samostatný kořenový adresář dokumentů. Možnosti umístění URL by však měly být umístěny pod virtuální server, ke kterému se vztahují, protože stejná cesta URL může být použita různými způsoby na více než jednom virtuálním hostiteli. Totéž platí pro možnosti souborů.
- Na stránce možností serveru, která se zobrazí (viz Obrázek 29-4), přejděte dolů na formulář *Vytvořit možnosti podle adresáře, souborů nebo umístění*.
- Z Typu vyberte jednu z výše popsaných možností.
- Pokud nastavujete možnosti pro adresář, zadejte jej do Cesta pole jako /home/example/www/images . Můžete také zadat cestu se zástupnými znaky, například /home/example/w* , což způsobí, že se volby použijí pro všechny adresáře, které se shodují. Pokud se nastavují možnosti pro umístění adresy URL, zadejte část adresy URL za názvem hostitele do pole Cesta, například /images . Můžete také použít zástupné znaky shellu jako * a ? také v URL. Pokud nastavujete možnosti pro soubory, zadejte název souboru do Cesta pole jako secret.html . V názvu souboru lze opět použít zástupné znaky, například secret*.
- Pokud chcete mít možnost používat složité regulární výrazy v adresáři, souboru nebo umístění URL, nastavte Regexp? Shodovat se s regulárním výrazem . To vám umožní používat znaky regulárních výrazů Perlu jako [, ], +, . a * v cestě.
- Klikněte na tlačítko Vytvořit tlačítko pro přidání nové sekce adresáře do konfigurace Apache. Znovu se zobrazí stránka možností virtuálního serveru, ale s novou ikonou pro adresář.
Nyní, když jste vytvořili novou ikonu pro adresář, umístění URL nebo název souboru, můžete nastavit možnosti, které se na ni vztahují. Jednou z nejběžnějších změn pro jednotlivé adresáře je konfigurace způsobu zobrazení souborů, když prohlížeč požaduje adresář s adresou URL jako http://www.example.com/images/. Ve výchozím nastavení, pokud je v adresáři soubor index.html, bude zobrazen, nebo pokud ne, zobrazí se místo něj stránka se seznamem všech souborů, které obsahuje.
Pokud chcete změnit název indexového souboru, styl výpisu adresáře nebo jakákoli jiná nastavení související s indexováním, postupujte takto :
- Na stránce možností virtuálního serveru klikněte na ikonu adresáře, který chcete konfigurovat. Tím se dostanete na stránku možností adresáře zobrazenou na obrázku 29-5.
- Klikněte na Indexování adresáře ikonu pro vyvolání formuláře pro nastavení možností indexování a výpisu.
- Chcete-li změnit vzhled výpisů adresářů, nastavte pole *Možnosti indexu adresáře* na Vybráno níže a změňte pole v poli pod ním. Výchozí nastavení vygeneruje velmi jednoduchý seznam souborů, ale můžete jej vylepšit nastavením následujících možností :
- Zobrazte luxusní indexy adresářů Pokud je povoleno, seznam souborů bude obsahovat jejich ikonu, velikost a datum úpravy.
- Zobrazit název HTML jako popis Pokud je povoleno, popis souborů HTML bude převzat z jejich značek
. - Výška ikony Tato možnost umožňuje změnit výšku ikon obsažených ve výpisu adresáře. Pokud je nastaveno na Výchozí , bude použita výška standardních možností Apache.
- Šířka ikony Stejně jako předchozí možnost, i tato umožňuje určit šířku ikon ve výpisu adresáře.
- Povolit uživatelům třídění sloupců Když je toto povoleno, uživatelé budou moci třídit seznam souborů kliknutím na záhlaví sloupců za předpokladu, že jsou zobrazeny.
- Zobrazit popisy souborů Pokud je povoleno, bude výpis adresáře obsahovat popis každého souboru převzatého z jeho MIME typu nebo názvu HTML.
- Výstup značek záhlaví HTML Je-li povoleno, bude výpis adresáře obsahovat běžné značky a , které by měly začínat každou HTML stránku. Chcete-li jej vypnout, pouze pokud poskytujete své vlastní soubory záhlaví a zápatí.
- Zobrazit časy posledních úprav Je-li povoleno, bude výpis adresáře obsahovat datum poslední změny pro každý soubor.
- Zobrazit velikosti souborů Je-li povoleno, bude výpis obsahovat velikost každého souboru.
- Zahrnout do odkazu ikonu Pokud je tato možnost povolena, ikona ve výpisu bude odkazem na samotný soubor. Jinak je odkazem pouze název souboru.
- Šířka názvu souboru Tato možnost řídí délku sloupce názvu souboru ve výpisu adresáře. Můžete buď zadat počet znaků, nebo * a upravit velikost sloupce na délku nejdelšího souboru.
- Šířka popisu Tato volba řídí délku sloupce popisu ve výpisu adresáře, pokud existuje. Můžete zadat počet znaků nebo * a upravit tak sloupec na délku nejdelšího popisu.
- Nejdříve zobrazit adresáře Pokud je povoleno, zobrazí se ve výpisu všechny adresáře nad soubory bez ohledu na jiné soubory. Dostupné možnosti závisí na verzi Apache, kterou máte nainstalovanou v systému. Výše uvedené jsou platné pro verzi 1.3.19, ale pokud máte novější verzi, může být k dispozici více možností.
- Pokud chcete, aby Apache vrátil soubor jiný než výchozí (obvykle index.html), když prohlížeč požaduje adresář, zadejte seznam názvů souborů do Index souborů adresáře pole. Lze zadat více než jeden a použije se první nalezený. Pokud nebude nalezen žádný z indexových souborů, bude do prohlížeče místo toho vrácen seznam adresářů využívající možnosti zvolené v kroku 3.
- Chcete-li, aby webový server při generování seznamu souborů v adresáři ignoroval určité soubory, zadejte jejich názvy souborů do Soubory k ignorování v indexu adresáře pole. V regulárních výrazech můžete použít zástupné znaky shellu, jako je *.doc .
- Chcete-li vložit soubor HTML na začátek seznamu adresáře, zadejte jeho název souboru (vzhledem k adresáři) do souboru záhlaví indexu adresáře pole.
- Podobně, chcete-li přidat soubor na konec seznamu adresáře, zadejte jej do souboru zápatí indexu adresáře pole.
- Chcete-li ovládat výchozí uspořádání adresáře, zrušte zaškrtnutí políčka Výchozí v Seřadit index adresáře podle pole a ze dvou nabídek vedle něj vyberte objednávku a sloupec, podle kterého chcete seřadit.
- Popisy souborů můžete nastavit vyplněním tabulky *Popisy indexu adresáře*. Do prázdného řádku tabulky zadejte do Popis krátkou zprávu popisující soubor a seznam názvů souborů nebo názvů zástupných znaků v Názvy souborů sloupec. Protože je vždy zobrazen pouze jeden prázdný řádek, budete muset po přidání každého popisu znovu navštívit tuto stránku, pokud chcete zadat více než jeden.
- Nakonec klikněte na tlačítko Uložit tlačítko ve spodní části stránky pro uložení změn a návrat na stránku možností adresáře. Chcete-li je aktivovat, klikněte na tlačítko Použít změny odkaz kdekoli v modulu Apache.
Většinu těchto možností lze nastavit pro celý virtuální server také kliknutím na ikonu Indexování adresářů na stránce možností virtuálního serveru. V tomto případě se použijí na všechny soubory požadované od virtuálního hostitele, pokud nejsou přepsány volbami pro adresář nebo umístění URL.
Na stránce možností adresáře je mnoho dalších ikon, na které můžete kliknout a nastavit možnosti, které se vztahují pouze na daný adresář, cestu URL nebo název souboru. Některé z nich jsou vysvětleny v jiných částech dále v této kapitole, například Aliasy a přesměrování a *Ochrana adresáře heslem*.
Adresář, názvy souborů nebo umístění URL, na které se nastavení vztahují, můžete změnit pomocí Možnosti platí pro formulář ve spodní části stránky možností adresáře. Má přesně stejná pole jako formulář pro vytvoření popsaný na začátku této části. If you make any changes, click the Save button to update the Apache configuration and then the Apply Changes link to make them active. Or to remove the directory configuration and all its options, click on Delete instead.
Creating aliases and redirects
Normally, there is a direct relationship between the path in URL and the file that is returned by the webserver. For example, if a browser requests http://www.example.com/images/foo.gifand the document root for www.example.com is /home/example/www , then the file /home/example/www/images/foo.gif would be read by the webserver and returned to the client.
This can be changed though by using what Apache calls aliases. An alias maps a particular URL path to a file or directory, which does not necessarily have to be under the document root. So in the example above, the /images URL path might actually be aliases to the directory /www/images , which would cause the file /www/images/foo.gif to be read instead.
Aliases can be defined globally or in a virtual server. To create one, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the alias under. If you want it to apply to all virtual servers (or you don't have any), click on the *Default Server *icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon. This will take you to the page in the screenshot below.
- Fill in the empty row in the Document directory aliases table with the URL path (under From ) and the file or directory that it should map to (under To ). If you are editing the default server, there may already be several entries in this table that are part of the standard Apache configuration. There will always be exactly one empty row in the table. If you need to add more than one alias, you will need to re-visit this page after filling in the row and saving.
- Click the Save button to have your new alias stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the alias active, click on the Apply Changes link at the top of the page.
The aliases and redirects form
Existing aliases can be editing by just changing the entries in the Document directory aliases table and then clicking Save . You should not change the alias for /icons in the default server though, as this is used by Apache when it generates icons for directory listings. If you want to delete an alias, just delete the contents of both its fields in the table.
Aliases can also be created that use Perl regular expressions to match more complex URL paths. These must be entered into the Regexp document directory aliases table on the Aliases and Redirects form, which has the same columns as the *Document directory aliases* table described above. The difference is that any regular expression can be entered into the From field, such as ^/images/(.*)\.gif$ . The To field can taken a string that refers to bracketed sections in the expression, such as /images/$1.jpg . This would convert any request for a GIF file into one for the JPEG with the same name.
Redirects are similar to aliases, but have a different purpose and work in a different way. Whenever a client requests a URL path that has been redirected, Apache will tell it to go to another URL (possibly on another server) instead. For example, you might redirect all requests to http://www.example.com/webmin/ to ''http://www.webmin.com/''. Unlike the way aliases behave, if a browser requests a page like /webmin/foo.gif it will not be redirected to ''http://www.webmin.com/foo.gif'' - it will just go to the URL ''http://www.webmin.com/'' instead.
Redirects are implemented by the webserver sending the special 302 status code to the browser, which tells it to go to a new location. It is quite possible for the new URL to be a redirect itself, and you can even create a loop of redirects - not that this is a good idea.
To set up redirection for a path on your server, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the redirect under. If you want it to apply to all virtual servers, click on the *Default Server *icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon to go to the page in Figure 29-6.
- In the empty row of the *URL redirects *table, enter the URL path on your server under the From column, such as /webmin . Under the To column, enter the URL that requests should be redirected to, such as http://www.webmin.com/ . The Status field is optional, but can be filled in if you want to change the HTTP status code that will be used for this redirect. The default is 302, which indicates a temporary redirection. However, you can 301 to tell browsers that the direction is permanent, or 303 to tell them that the original content has been replaced. There will always be exactly one empty row in the table. If you need to add more than one redirect, you will need to re-visit this page after filling in the row and saving.
- Click the Save button to have your new redirect stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the redirection active, click on the Apply Changes link at the top of the page.
As with aliases, existing redirects can be edited by just changing the entries in the URL redirects table and then clicking Save . To delete a redirect, just delete the contents of all of its fields in the table.
You can also create regular expression redirects that behave in a similar way to regexp aliases, using the Regexp URL redirects table on the same page. Under the From column you can enter a URL path expression such as ^/webmin/(.*)$ , and under the To column a URL that can refer to bracketed parts of the path, such as http://www.webmin.com/$1 . In this example, an request by a client for a page under /webmin would be redirected to the same file at www.webmin.com .
Also on the Aliases and Redirects page are two more tables labelled Permanent URL redirects and Temporary URL redirects . The first behaves exactly the same as a normal redirection, but with the status code always set to 301, indicating a permanent redirection. The second also behaves like a normal redirect, but always uses a status code of 302 (temporary redirection). This option is really quite useless, as normal redirections default to using status 302 if one is not specified.
Redirects can also be defined in the options for directories, URL locations, filenames and .htaccess files. When editing the options for one of these (described in the *Setting per-directory options* section), the exact same icon and table are available as when setting up aliases for a virtual server. Naturally, a redirect in a directory only makes sense if the URL path being redirected actually refers to that some file or sub-directory that it contains. The same goes for redirects in URL locations - the path being redirected must start with the location's path.
If Apache on your system has been compiled with or dynamically loads the proxy module (covered in the *Configuring Apache as a proxy server* section below), tables labelled *Map locale to remote URLs* and Map remote Location:headers to local will appear on the Aliases and Redirects form under the virtual server options page. These allow you to specify a URL path that when requested will cause Apache to itself request pages from another website and return them to the browser. Even though the URL that the user is accessing is on your server and their browser is connecting only to your system, the content is actually being loaded from elsewhere.
To set up this URL mapping, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the mapping under. If you want it to apply to all virtual servers, click on the *Default Server* icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon to go to the page in Figure 29-6.
- In the empty row in the Map locale to remote URLs table, enter a URL path on your server (like /webmin ) into the first field, and the full URL that you want the pages to be requested from into the second (like http://www.webmin.com/ ).
- In the empty row in the Map remote Location:headers to local table, enter the same full remote URL into the first field and the URL path on your server into the second. This second table controls the conversion of redirects issued by the remote server, and should almost always be set. If it is not set, whenever the remote server issues a redirect the browser will end up connecting directly to it instead of to your server.
- Click the Save button to have your new mapping stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the mapping active, click on the Apply Changes link at the top of the page.
You can test it out by going to the mapped URL path on your system, and you should see pages that have been requested from the remote server. The process is not totally transparent though, because it does not convert HTML files in any way. So if in the example above the remote server contained an HTML page with a link like , following it would take the browser to /foo.html on your system, not /webmin/foo.html as you might expect. There is no solution to this problem, apart from making sure that the remote server always uses relative links and image paths.
Running CGI programs
CGI stands for Common Gateway Interface, and is a standard method for webservers to run external programs, pass them details of a browser's request, and read back any content that the program generates. CGI programs are one of the simplest way of adding dynamic pages to your webserver, and are relatively easy to set up and develop. Server-side includes (covered in the next section) are even simpler, but very limited in what they can do.
A CGI program can be written in any language as long as it follows certain rules. The most common is Perl, but C, Python, PHP or any other language that can access environment variables and produce output can be used. You can even write shell scripts that are valid CGI programs. This section is not going to explain the details of how to write them though - there are plenty of books that cover that already.
CGI programs are just files on your system, like any other HTML or image file. The difference is that when they are requested by a browser, Apache executes them and returns their output instead of the contents of the file. Because you only want this to happen for programs and not for HTML files, the server must be configured to identify certain files as CGI programs. This is normally done in one of two ways - by putting all CGI programs into a certain directory, or by giving them all a file extension like .cgi.
The choice is yours, but the latter option is simpler to use as you can freely mix CGI scripts, HTML and image files in the same directory. To set it up, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to set up CGI programs for. Or click on the *Default Server *icon if you want to use them on all servers.
- Click on the icon for the directory that you want CGI programs to be enabled under. Typically each virtual server will have an icon for options for its document root directory, but if not you can create one by following the steps in the *Setting per-directory options* section above. If you only want to allow CGI programs to be run in some sub-directory of the website, you can create a new directory icon for that as well.
- On the directory options page, click on the Document Options icon and change the Directory options field from Default to Selected below . Then set the rows Execute CGI programs and Generate directory indexes to Yes , and click the Save button at the bottom of the page. This tells Apache that CGI programs can be executed in the directory.
- Back on the directory options page, click on the MIME Types icon. In the Content handlers table, select cgi-script from the first blank menu under the Handler column, and enter .cgi into the field next to it under the Extensions column. Then click the Save button at the end of the form. This tells Apache to treat all files in the directory ending in .cgi as CGI programs.
- Finally, click the Apply Changes link on any page. You should now be able to create a file with a .cgi extension in the chosen directory, and test it out in a web browser.
An alternative to this approach is to specify a directory in which all files are treated as CGI programs. This has the advantage that they can be given any name you like, instead of being forced to have a .cgi extension. You can also set permissions on this directory to restrict who is allowed to create CGI programs, while still allowing others to edit normal HTML pages.
To set up a directory for CGI scripts, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to set up a CGI directory for. Or click on the *Default Server* icon if you want to set it up for all servers.
- Click on the CGI Programs icon to bring up a page for setting various CGI options.
- The CGI directory aliases table works in a very similar to the Document directory aliases table described in the previous section. However, in addition to mapping a URL path to a directory on your server it also tells Apache that any files accessed through that path should be treated as CGI programs. In the first empty row of the table, enter a URL path like /cgi-bin/ into the From field and a directory like /home/example/cgi-bin/ into the To pole.
- Click the Save button at the bottom of the page to return to the virtual server options page. Then click the Apply Changes link to make the CGI directory active.
You should now be able to create CGI programs in the directory, and test them out in a web browser. On some Linux distributions, the default Apache configuration will already have a CGI directory available at the URL path /cgi-bin/, mapped to a directory like /home/httpd/cgi-bin/. If this is good enough for you, there is no need to follow the steps above - instead, you can just put CGI programs in that directory.
Normally, all CGI programs execute as the Unix user that the webserver runs as, typically named httpd or apache. On a system with multiple users who cannot be fully trusted, this is not a good thing - anything that one user's CGI program can do, everyone else's can as well. So for example if a user writes a CGI program that edits some file, he would have to make that file writeable by the httpd user, meaning that everyone else's CGI programs could write to it as well.
Fortunately, there is a solution. Apache comes with an optional program called suexec that can be used to have CGI programs run as some other Unix user, rather than as the webserver user. Typically the CGI programs under each virtual server will be run as the Unix user who owns that server's files. To set this up, the steps to follow are :
- Make sure that the suexec program exists on your system, and that it has setuid-root permissions. Apache typically expects to find it in /usr/sbin or /usr/local/apache/sbin, and most Linux distributions include it as a standard part of their Apache package. However, some do not have it setuid by default, so you may need to run chmod 6711 /usr/sbin/suexec to make it so.
- On the main page of the module, click on the icon for the virtual server that you want to have CGI programs run as a different user on. This will take you to the options page shown in Figure 29-4.
- Click on the User and Group icon on the virtual server options page.
- For the Run as Unix user field, select User name and enter the name of the user who owns the virtual server into the field next to it.
- Similarly, for Run as Unix group select Group name and enter the primary group of the user specified in the previous step.
- Click the Save button to return to the options page for the virtual server.
- To activate suexec for the first time, you need to stop and re-start Apache. Use the Stop Apache link at the top of the page to halt it, and then the Start Apache link to start it up again.
- To check that suexec is actually working, check the Apache error log file for a line containing suEXEC mechanism enabled that was logged when the webserver was re-started.
Because it can execute commands as any user on your system, suexec has many security restrictions to prevent misuse by normal users. It will only run CGI programs that are owned by the user and group specified in steps 4 and 5, and only if they are not writeable by any other user, or in a directory that is writeable by another user. The IDs of the user and group must be above minimums that are compiled into the program, to prevent programs owned by system users such as root or bin from being run. Finally, the program must reside under a directory that is compiled into suexec, and nowhere else on the filesystem.
This last restriction can be very annoying if you have a large number of virtual servers and want to enable the execution of CGI programs in their directories. The default allowed directory is typically the standard CGI directory for Apache, such as /home/httpd/cgi-bin. To change this, you will need to re-compile suexec with a different directory, such as /home.
Whenever suexec fails to run a CGI program, it fails with HTTP status code 500. Because there are many things that can go wrong, you should check the file suexec_log in the same directory as the other Apache logfiles to see why it is refusing to execute a particular program. For each failure, a line is written to this file explaining the problem, such as incorrect permissions or a file ownership mismatch.
Writing CGI programs can be difficult because when they fail, very little information is displayed in the browser. All you see is a message like 500 server error , which no explanation of the real cause. However, more detailed error information is written to the Apache error log file. This is usually named error_log, and can be found in the same directory as the Apache access log files. See the section below on Configuring logging for more details on how to find and change it.
Anything that a CGI programs outputs to STDERR will also be written to the error log, which is useful if you want your program to generate debugging information that is not sent to the web browser. Because many programming languages like Perl output error messages on STDERR if a script fails to compile or run, all such messages will also be written to the error log file.
The biggest problem with CGI programs is that the webserver has to launch a new process every time one is requested. If the CGI is written in Perl or PHP, the process then has to load the interpreter for that language which can itself be a large program. The end result is that processing a request for a CGI page takes much longer than a request for a static HTML or image file, and generates much more load on the server system.
For this reason, optional modules have been developed that allow the webserver to run Perl and PHP scripts using an interpreter that is part of the Apache process. These modules are called mod_perl and mod_php, and are included in the Apache package in many Linux distributions. Installing and configuring them is not covered in this chapter though.
Setting up server-side includes
Server-side includes allow you to create simple dynamic web pages without the complexity of writing an entire CGI program in a language like Perl. When active, some of the HTML files served by Apache are checked for special tags starting with appears in the HTML of page, it is replaced with the contents of the file something.html .
Server-side includes can also be used to access and set environment variables, to conditionally display HTML based on variables and to run CGI programs or shell commands and have their output included in the page. This section will not cover the tags that are available and the purposes though - instead, you should read the documentation on the Apache website or a good book on HTML.
Normally, allowing un-trusted users to create HTML pages containing server-side include tags is perfectly safe because they cannot be used to perform potentially dangerous operations like editing files on the server. The exception to this is the tag, which can be used to run an arbitrary shell command and have its output included in the web page. Because the command runs as the Unix user that Apache is running as (normally httpd), a user who is not allowed to create CGI programs may be able use this kind of tag to read or modify files that he would not normally be able to. For this reason, Apache can be configured to enable server-side includes with or without the risky exec tag.
Because checking an HTML file for server-side include tags is CPU intensive, they are often only activated for files with the .shtml extension. This way you can put static HTML in .html files and dynamic content into .shtml files, so that the server does not have to waste time looking for tags in files that do not contain them. However, it is also quite possible to have all .html files checked for server-side includes if you wish.
To turn on includes for a virtual server, the steps to follow are:
- On the module's main page, click on the icon of the virtual server that you want to enable server-side includes on. Or click on the Default Server icon to enable them for all virtual hosts.
- Click on the icon for the directory that you want server-side includes to be enabled under. Typically each virtual server will have an icon for options for its document root directory, but if not you can create one by following the steps in the *Setting per-directory options* section above. If you only want to enable server-side includes in some sub-directory of the website, you can create a new directory icon for that as well.
- On the directory options page, click on the Document Options icon and change the Directory options field from Default to Selected below . If you want to enable server-side includes without the exec tag, change the Server-side includes row to Yes . If you want to enable the potentially risky exec tag as well, change Server-side includes and execs row to Yes namísto. Either way, when they have been enabled click the Save button at the bottom of the page.
- Click on the MIME types icon on the directory options page. If you want to enable includes on all HTML files, find the *Content handlers* table to select server-parsed from the first empty menu under the Handler column, and enter .html into the field next to it under the Extensions column. This tells Apache that files ending in .html should be checked for server-side include tags. If you want to enable includes for only .shtml files, enter .shtml instead of .html under the Extensions column. Then in the Extra MIME types table enter text/plain into the first empty field under the Type column and .shtml into the field under Extensions next to it. This tells Apache that .shtml files should be checked for server-side include tags, and that they actually contain HTML.
- Finally, click the Save button at the bottom of the MIME Types page, and then the Apply Changes link back on the directory options page.
Once server-side includes are enabled, you can test them by creating an .html or .shtml file in the chosen directory with some special tags it in. Then open the page in your web browser to see the result. If for some reason server-side includes were not enabled properly, nothing will show up at all because the