| Apache a programovací jazyky |
|
|
|
| Zhlédnutí: 5536 | ||||||||
| Napsal filbar | ||||||||
| Pátek, 13 červenec 2007 | ||||||||
| Aktualizováno ( Úterý, 10 červenec 2007 ) | ||||||||
|
Ve www serveru Apachi lze standardně provozovat pouze statické www stránky, což je v dnešní době poněkud málo. Proto vzniklo množství rozšiřujících modulů, pomocí kterých lze pod Apachem provozovat www stránky napsané třeba v PHP, Pythonu, ASP, Ruby či Perlu. A právě o zprovoznění těchto modulů si povíme v tomto článku. PHPZačneme tím nejpopulárnějším jazykem pro programování www aplikací PHP. Protože se jedná o jazyk primárně určený pro tvorbu www aplikací, modul pro Apache je součástí tohoto jazyka. Pokud jej instalujete z balíčkovacího systému vaši distribuce, tak hledejte balíček jako mod_php. V případě instalace ze zdrojových kódů postupujeme jako obvykle příkazy ./configure && make && make install. Pouze při více instalacích Apache je nutné přidat ke skriptu configure parametr --with-apxs2=/cesta/k/apxs, aby se modul zkompiloval se správnou verzí Apache. Rovněž je užitečné prohlédnout si výstup z ./configure --help, abychom si do PHP přidali potřebné součástí, jako je např.:podpora pro databázi MySQL. Více se o instalaci PHP dočtete hned v prvním dílu našeho seriálu o Apachi. Modul přidává do Apache dvě nové direktivy a to php_admin_value a php_value, které slouží ke změně hodnot nastavených v hlavním konfiguračním souboru php.ini. Zde si je ale nutné dát pozor, protože ne všechny volby jdou takto předefinovat. Více se dovíte v dokumentaci php. PythonModul pro jazyk Python je nutné stáhnout zvlášť ze stránek modpython. Instalace probíhá obvyklým způsobem, pouze jak jsem již vícekrát zmiňoval je nutné si dát pozor jestli náhodou nemáme v systému nainstalované více Apachů a předat správnou instalaci parametrem --with-apxs=/cesta/k/apxs a modul načíst do Apache příkazem LoadModule python_module modules/mod_python.so. Následně je nutné zaktualizovat databázi MIME typů v Apachi direktivou AddHandler mod_python .py Python je nejlepší nastavit v direktivě Directory. Z nejběžnějších voleb lze vyjmenovat PythonDebug On/Off, která nastavuje vypisování ladících informací do www stránek, což se nám může hodit zejméne při vývoji. Dále pro úpravu proměnné PythonPath lze použít stejnojmennou direktivu, např.: PythonPath "['/srv/www/python'] + sys.path". Direktiva PythonHandler určuje, která funkce se má volat při načtení skriptu v Pythonu. Pokud máme následující program test.py:
from mod_python import apache Tak PythonHandler může nabývat dvou podob
PythonHandler test::test1 V prvním případě se nám vypíše Ahoj, tady test1. a ve druhém Ahoj, tady je test 2.. Speciální verze vypadá PythonHandler mod_python.publisher Pokud je handler nastaven takto, každou funkci lze volat pomocí URL. Funkci handler zavoláme zadáním test.py/test1. Že se zavolala správná funkce se přesvědčíme tím, že se na obrazovce vypsal řetězec Ahoj, tady test1.0. Obecná syntaxe této direktivy vypadá PythonHandler balicek.modul::funkce Jednoduchá sekce v konfiguračním souboru Apache může vypadat nějak takto:
<Directory /srv/www/python>
PerlPokud bychom hledali v adresáři s rozbalenými zdrojovými soubory skript configure neuspějeme. Instalace probíhá Perlím způsobem. Místo configure tedy musíme zadat perl Makefile.PL a pokud chceme přesněji určit instalaci Apache provedeme to přidáním MP_APXS=/cesta/k/apxs. Dále již pokračujeme klasicky make && make install. Po instalaci opět nesmíme zapomenout načíst modul do Apache: LoadModule perl_module modules/mod_perl.so Pro uživatelé znalé Perlu je dobrou zprávou, že v sekci <Perl> </Perl> je možné Apache konfigurovat pomocí syntaxe Perlu. Dále lze použít ještě speciálních značek =pod, =over apache, =back, =cut. Přičemž platí, že to co je mezi značkami =over apache a =back a za značkou =cut je pro Apache neviditelné. Podrobnější volby lze nastavovat pomocí direktivy PerlOptions, kde platí, že znakem + před volbou, jí povolujeme a znakem - jí zakazujeme. Pokud tedy chceme mít v celém web serveru Perl zakazaný a jenom u konkrétních webů povolený, použijeme něco takového:
PerlOptions -Enable Jako parametry direktivy PerlOptions, můžeme použít také různé handlery Perlu. Z dalších voleb je k dispozici třeba Parent, Clone(povolujeme klonování interpretů Perlu), nebo InheritSwitches(dědění voleb). Pokud potřebujeme upravit nějaké vnitřní cesty, nebo přepínače Perlu, použijeme právě PerlSwitches. Cestu k adresářům, ve kterých se nacházejí moduly Perlu zadáme pomocí přepínače -I/cesta/k/modulům. Součástí modulu Perlu jsou dva ovladače modperl a perl-script. Prvně jmenovaný inicializuje minimum proměnných, takže je lepší pro výkon: SetHandler modperl Další dvě direktivy řídí kdy se mají načíst konfigurace ze souboru, který je uveden v jejich parametru. Pokud použijeme direktivu PerlConfigRequire, soubor se načte co nejdříve. V případě direktivy PerlPostConfigRequire se provede jak jenom nejpozději to půjde. Stejný vztah platí pro PerlLoadModule a PerlModule, které řídí načítání modulů Perlu. Další skupina direktiv slouží k předávání proměnných z Apache do prostředí Perlových skriptů. Proměnnou prostředí nastavíme s PerlSetEnv PROMENNA_PROSTREDI hodnota, ke které se ze skriptu dostaneme pomocí $ENV{'PROMENNA_PROSTREDI'}. Normální proměnnou předáme zápisem PerlSetVar promenna hodnota. Druhým způsobem je použít PerlAddVar, kdy emulujeme pole, tj. jedna proměnná může mít víc hodnot. Externí proměnnou definovanou např. v shellu lze také použít v Perlu, pokud do konfigurace Apache přidáme PerlPassEnv PROMENNA. RubyInstalaci tohoto modulu provedeme příkazy:
./configure.rb --with-apxs=/cesta/k/apxs a do konfiguračního souboru Apache nezapomeneme přídat řádek: LoadModule ruby_module modules/mod_ruby.so Konfigurace je velmi podobná nastavení modulu pro Perl, obsahuje však méně direktiv. Cestu, knihovny určíme direktivou RubyAddPath, podobná direktiva RubyRequire určuje které knihovny se mají použít. Proměnné nastavíme pomocí RubySetEnv promenna hodnota, případně RubyPassEnv promenna, když máme proměnnou definovanou externě. Tvorbu výstupu ovlivníme direktivou RubyOutputMode, která může mít tři podoby parametru:
Ovladač pro vykonání skriptů v Ruby existuje pouze jeden(ruby-object): SetHandler ruby-object Naopak Ruby*Handlerů je k dispozici několik:
Formát je RubyovlHandler skript, kde ovl nahradíme řetězcem z předchozího seznamu. MonoJako poslední jsme si nechali modul pro Linuxovou implementaci platformy .NET a jejich ASP stránek. Instalace probíhá standardním způsobem:
./configure --with-apxs=/cesta/k/apxs a přídáním řádku LoadModule mono_module modules/mod_mono.so do konfiguračního souboru Apache. Mono obsahuje jenom jeden handler, který se jmenuje mono: SetHandler mono Direktivou AddMonoApplications určujeme mapování adresáře v adrese, na adresu na disku. Jedná se vlastně o něco podobného jako je direktiva Alias. Mimo to ještě do prvního parametru přijde pojmenování tohoto aliasu. Výchozí je default. Pojmenování použijeme např.:, když chceme spustit více než jednu instanci mono-serveru, kdy jej zadáme do MonoSetServerAlias:
AddMonoApplications linux "/linux:/srv/www/mono/linux" V této ukázce tak bude pro adresář mono i pro linux spouštěn pokaždé nový mono server. Jestliže používáme výchozí mono server, tak MonoSetServerAlias nemusíme, tak jako v případě adresáře mono, uvádět. Pokud chceme mít více adresářů obsluhovaných jedním mono-serverem, tak je možné použít pojmenování default vícekrát. Z pokročilých voleb lze omezit třeba paměť a procesor:
MonoMaxMemory pojmenovani max_pameti Pojmenování je jméno přiřazení pomocí AddMonoApplications. Mezi další ovlivnitelné věci patří port a adresa, na které má mono-server, naslouchat, či umístění vytvářeného socketu:
MonoListenPort pojmenovani port Při instalaci v nestandardním umístění cestu k souboru mono-serveru předáme Apachi direktivou MonoServerPath pojmenovani /cesta/k/mod-mono-server.exe, čí v případě, že používáme verzi starší než 1.1.17 také MonoExecutablePath pojmenovani /cesta/k/mono. Tím bychom tento díl uzavřeli a příště nás čeká již poslední díl o Apachi, kde se budeme zabývat nastavením výkonu Apache.
Powered by !JoomlaComment 3.22
3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| < Předch. | Další > |
|---|