User Tools

Site Tools


openbsd:apache:mod_perl_hasznalata

===== mod_perl használata ===== Alapértelmezetten az OpenBSD alaprendszerében található Apache 1.3 chroot-olva fut a ///var/www// könyvtárban. Röviden ez annyit jelent, hogy az Apache által kiszolgált oldalak és alkalmazásók a ///var/www// könyvtárat látják //root// (/) könyvtárként. A Perl CGI állományok esetében például a teljes ///usr/lib/perl// mappát be kellene másolni a ///var/www// könyvtár alá, hogy a Perl elérhető legyen a CGI programjaink számára. Ez eléggé kezelhetetlen, nem igazán helytakarékos. A //mod_perl// megfelelő beállítása esetén működésre bírhatjuk Perl-ben írt CGI programjainkat anélkül, hogy a releváns Perl binárisokat és libeket bemásolnánk az Apache chroot gyökérkönyvtárába, illetve növeli is a Perl CGI programok teljesítményét ez a modul. ==== Telepítés és konfigurálás ==== Telepítsük fel csomagból vagy a ports fából a mod_perl alkalmazást. Utána aktiváljuk az előírásoknak megfelelően: # mod_perl-enable Ezután állítsuk be azt a vhost-ot, ahol Perl alapú CGI állományokat szeretnénk futtatni. Vegyük fel az alábbi sorokat a vhost-ot definiáló konfigurációs fájlba <code> PerlModule Apache::Registry ... SetHandler perl-script PerlHandler Apache::Registry PerlRequire /var/www/..../cgi-bin/startup.pl Options +ExecCGI PerlSendHeader On </code> A legfontosabb opció a //startup.pl// fájl. Ezt a fájlt mi hozzuk létre és a tartalma nem más, mint a CGI scriptjeink által használt Perl modulok behívása. Erre azért van szükség, mert az Apache chroot előtt a mod_perl segítségével betölti a teljes Perl futtatókörnyezetet a memóriába, a mod_perl pedig a //PerlRequire// utasítás alapján betölti a szükséges modulokat. Chroot után ezek az állományok már nem lennének elérhetőek a mod_perl számára, ezért szükséges az Apache indulásakor az összes modul betöltése. Nálam a //cvsweb//-hez készült ez a vhost és a //startup.pl// az alábbi sorokat tartalmazza: <code> use strict; use File::Basename (); use Time::Local (); use IPC::Open2 qw(open2); 1; </code> Az utolsó sorban lévő //1;// feltétlenül szükséges, mert enélkül a //startup.pl// hamis értékkel tér vissza és a mod_perl leállítja az Apache-t. Láthatjuk, hogy az egyedüli nehézséget az összes használatban lévő modul megtalálása jelenti. Természetesen arra is figyeljünk, hogyha Perl scriptjeink meghívnak más binárisokat is, akkor azokat is be kell másolnunk a ///var/www// alá a szükséges lib-ekkel együtt.

openbsd/apache/mod_perl_hasznalata.txt · Utolsó módosítás: 2008/10/24 18:24 (külső szerkesztés)