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

PerlModule Apache::Registry
...
SetHandler perl-script                                                                                                                                                         
PerlHandler Apache::Registry                                                                                                                                                   
PerlRequire       /var/www/..../cgi-bin/startup.pl                                                                                                       
Options +ExecCGI                                                                                                                                                               
PerlSendHeader On

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:

use strict;
use File::Basename ();
use Time::Local ();
use IPC::Open2 qw(open2);

1;

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)