Perl do chwili obecnej często jest nazywany "klejem łączącym sieć web", dzięki możliwością przetwarzania tekstu (głównie chodzi o bardzo zaawansowane wyrażenia regularne) bardzo dobrze nadaje się do pisania aplikacji konwertujących dane tekstowe. Rozpoczęcie przygody z Perlem oraz serwisami internetowymi jest dosyć proste (zakładam, że czytelnik ma jakiekolwiek obycie z systemem Linux - w tym wypadku Debian i coś tam słyszał o Apache). By móc wykonywać skrypty Perla po stronie serwera należy:
- Skonfigurować serwer http np. Apache 2 (zakładamy, że moduł CGI jest ładowany automatycznie do apache - isnieje plik: /etc/apache2/mods-enabled/cgi.load)
- Napisać skrypt CGI oraz go umieścić na serwerze
Konfiguracja wirtualnego hosta
Pliki znajdują się w katalogu /etc/apache2/hosts-enabled/ .<VirtualHost *:80> ServerAdmin admin@host.pl DocumentRoot /home/services/service ServerName service.0x1fff.com ServerSignature Off LogLevel warn TransferLog /var/log/apache2/cgi_service_access.log ErrorLog /var/log/apache2/cgi_service_error.log AddHandler cgi-script .cgi .pl #ScriptAlias /cgi-bin/ /home/services/service/cgi-bin/ <Directory "/home/services/service/cgi-bin"> SetHandler cgi-script AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> </VirtualHost>W powyższym przykładzie VirtualHosta należy zmodyfikować odpowiednie dane.
Prosty skrypt CGI
Skrypt ten wykorzystuje kodowanie UTF8, oraz pozwala na proste debugowanie poprzez obserwację logów (żadne błędy nie są widoczne w przeglądarce użytkownika). Dodatkowo skrypt ten wykorzystuje moduły (apt-get install libcgi-perl libcgi-pm-perl):- Fatal - pozwala na zmniejszenie ilości sprawdzanych warunków np. przy otwieraniu plików
- CGI - usprawnia pracę programisty w środowisku WEB np. przetwarzanie argumentów
- CGI::Debug - ułatwia debugowanie aplikacji sieciowych
- Funkcje ceil i floor są również imporotwane (zobacz: zaokrąglanie wartośći w Perlu)
#!/usr/bin/perl
use utf8;
use warnings;
use strict;
use Fatal qw{ open close mkdir };
use POSIX qw(ceil floor); # short url
use CGI; # CGI Stuff
# Ten moduł musi być zainstalowany z CPAN :(
# ale do debugowania chyba jest jednym z lepszym
#use CGI::Debug(
# report => [
# 'everything', 'errors', 'empty_body', 'time',
# 'params', 'cookies', 'environment',
# ],
# on => [ 'fatals', 'warnings' ],
# to => {
# browser => 0,
# log => 1,
# },
# #header => 'control',
# set => { error_document => 'html/error.html' },
#);
# jesli nie ma mozliwosci jego instalacji pozostaje CGI::Carp;
# Global variables:
my $page = new CGI;
$page->charset('utf-8');
$CGI::POST_MAX = 1024 * 5000;
# Jeśli nie ma moduły CGI sami musimy zadbać o Content-Type.
# Ponizsze dwie linie dokonują przekierowania na mój blog.
#print "Content-type: text/plain\n";
#print "Location: http://blog.0x1fff.com/\n\n";
# wypisz całą sekcję head
print $page->header;
print '<table>';
foreach my $var (sort(keys(%ENV))) {
my $val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "<tr><td>".${var}."</td><td>".${val}."</td></tr>\n";
}
print '</table>';
my $test = $query->param("test");
print $page->escapeHTML($test);
Skrypt ten należy umieścić w pliku: /home/services/service/cgi-bin/test.pl. Strona wygenerowana przez skrypt może być znaleziona pod adresem: http://service.0x1fff.com/cgi-bin/test.pl (oczywiście po odpowiednich modyfikacjach). Często podczas tworzenia aplikacji przydaje się zmodyfikować plik /etc/hosts żeby od razu móc działać "pod właściwym adresem". Ale to każdy powinien już sobie sam zrobić.
Frameworki ułatwiające pisanie skryptów CGI w Perlu
- Catalyst - obecnie najpopularniejszy framework do tworzenia aplikacji sieciowych (model MVC)
- CGI - jeden ze starszych modułów pomagający pisać aplikacje sieciowych
Jak można inaczej generować dynamiczne strony w Perlu?
- Fast CGI - w stosunku do CGI pozwala na znaczne zwiększenie wydajności (howto)
- mod_perl - w stosunku do CGI - znacznie prościej zacząć tworzenie kodu i jest również wydajniejszy - opis instalacji i prosty przykład użycia mod_perl


0 komentarzy:
Post a Comment