Domů arrow Pokročilé arrow Apache arrow Apache a programovací jazyky
Apache a programovací jazyky PDF Tisk E-mail
Zhlédnutí: 5536
Hodnocení čtenářů: / 1
SlabéVynikající 
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.

PHP

Zač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.

Python

Modul 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

def test1(req):
req.content_type = 'text/plain'
req.write ("Ahoj, tady test1.")
return apache.OK


def test2(req):
req.content_type = 'text/plain'
req.write("Ahoj, tady je test 2.")
return apache.OK

Tak PythonHandler může nabývat dvou podob

PythonHandler test::test1
PythonHandler test::test2

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>
SetHandler python-program
PythonHandler mod_python.publisher
PythonDebug On
</Directory>


Více informací o tomto modulu se lze dovědět na domovské stránce projektu.

Perl

Pokud 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
<VirtualHost ...>
PerlOptions +Enable
</VirtualHost>

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.

Ruby

Instalaci tohoto modulu provedeme příkazy:

./configure.rb --with-apxs=/cesta/k/apxs
make
make install

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:

  • syncheader- Header je poslán ihned, zbytek až po nabufferování;
  • nosync-obsah je odeslán až po dokončení skriptu;
  • sync-obsah je odeslán ihned


RubyTimeOut čas určuje dobu, po kterou může skript maximálně běžet. Poté je skript ukončen. Úroveň zabezpečení nastavíme direktivou RubySafeLevel úroveň, kde úroveň může být číslo od 0 do 4.

Ovladač pro vykonání skriptů v Ruby existuje pouze jeden(ruby-object):

SetHandler ruby-object

Naopak Ruby*Handlerů je k dispozici několik:

  • Authen-zajišťuje autentifikaci;
  • Authz-zajišťuje autorizaci;
  • Access-ovládá kontrolu přístupu;
  • Fixup;
  • Init;
  • CleanUp-běží na konci požadavku;
  • PostReadRequest;
  • Log;

Formát je RubyovlHandler skript, kde ovl nahradíme řetězcem z předchozího seznamu.

Mono

Jako 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
make
make install

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"
AddMonoApplications default "/mono:/srv/www/mono/mono"
<Directory /srv/www/mono/mono>
SetHandler mono
</Directory>
<Directory /srv/www/mono/linux>
SetHandler mono
MonoSetServerAlias linux
</Directory>

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
MonoMaxCPUTime pojmenovani max_casCPU

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
MonoListenAddress pojmenovani IP_adresa
MonoUnixSocket pomenovani /cesta/socketu

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.

Komentářů
Přidat Nový Hledat RSS
Přidat komentář
Jméno:
Email:
 
Website:
Název:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Předch.   Další >

Zapomenuté heslo
Nemáte účet? Vytvořte jej!
Skype: My status bartfil
Jabber: bartmann@rupyhost.cz

Doporučujeme

Příběhy psů z útulků