Mason CMS
Teil 2: CMS-Serie: Mason
- CMS-Serie: Mason
- Teil 2: CMS-Serie: Mason
- Teil 3: CMS-Serie: Mason
- Teil 4: CMS-Serie: Mason
Performance
Damit Webserver die wechselnde Last gut verkraften können, muss man in der Lage sein, die Last der ankommenden Anfragen auf verschiedene Webserver zu verteilen. Das Stichwort heißt hier Load-Balancing. So mag es notwendig sein, den Webserver und FastCGI und eventuell den Webshop auf separaten Maschinen zu betreiben. Distributed Computing wird aber erst mit FastCGI unterstützt.
Perl, CGI/FastCGI oder Standalone
Die Standard-Umgebung beinhaltet Mason 1.40, den Apache-2.2-Webserver und das mod_perl 2.04-Modul für Apache. Eine alternative Konfiguration basiert auf dem Einsatz von CGI beziehungsweise FastCGI. Mason läuft aber auch durchaus als eine Standalone-Applikation.
Der einfachste Weg, Mason mit CGI-Skripten laufen zu lassen, besteht im Aufrufen des CGIHandler- Moduls. Hier ein Beispiel, das auf das unbedingt Notwendige gekürzt wurde:
#!/usr/bin/perl
use HTML::Mason::CGIHandler;
my $h = HTML::Mason::CGIHandler->new
(
data_dir => '/home/
internetmagazin/code/mason_data',
);
$h->handle_request;
Die httpd.conf von Apache könnte dann wie folgt aussehen:
DocumentRoot /pfad/zum/komponenten/
rootverzeichnis
ScriptAlias /cgi-bin/ /pfad/zu/
cgi-bin/<LocationMatch "\.html$">
Action html-mason /cgi-bin/
mason_handler.cgi
AddHandler html-mason .html</LocationMatch><LocationMatch "^/
cgi-bin/">
RemoveHandler .html</LocationMatch><FilesMatch "
(autohandler|dhandler)$">
Order allow,deny
Deny from all</FilesMatch>
Auf diese Weise sorgt man dafür, dass Apache 2.2 das mason_handler.cgi-Skript immer aufruft, wenn eine URL auf .html endet. Damit Mason bestimmte Verzeichnisse ignoriert, genügt Folgendes:
<LocationMatch "^/(verzeichnis1|
verzeichnis2| verzeichnis3)/">
RemoveHandler.html</LocationMatch>
Mason standalone
Mason kann auch als eine Template-Engine genutzt werden (zum Beispiel mittels Text::Template). Mason bringt enorme Leistungsfähigkeit, aber auch zusätzliche Komplexität ins Spiel. Ein auf das wirklich Nötige gekürztes Skript, mit dem man Mason 1.4 standalone aufrufen kann, sieht zum Beispiel wie folgt aus:
#!/usr/bin/perl
use HTML::Mason;
use strict;
my $interp = HTML::Mason::Interp->
new ();
$interp->exec(<relativerpfad>,<args>...);