[11] httpd – mod_perl
18 stycznia 2022Zainstalujemy teraz [mod_perl], który uczyni skrypty Perla’a szybsze w działaniu.
[1] Zainstaluj [mod_Perl]
#zainstaluj z EPEL [root@vlsr01 ~]# dnf --enablerepo=epel -y install mod_perl
[2] Skonfiguruj [PerlRun], który umieści zawsze interpreter Perl’a w pamięci RAM.
[root@vlsr01 ~]# mcedit /etc/httpd/conf.d/perl.conf #linia 15: od komentuj (sprawdź ostrzeżenia w logach) PerlSwitches -w #linia 24 odkomentuj PerlSwitches -T #linie 30-36: od komentuj jak poniżej Alias /perl /var/www/perl <Directory /var/www/perl> #pliki wykonywalne Perl’a w tym katalogu SetHandler perl-script # ustaw specyficzne ustawienia jeśli nie chcesz przetwarzać wszystkich plików jako CGI AddHandler perl-script .cgi #PerlResponseHandler ModPerl::Registry #dodaj tą linię aby wskazać tryb PerlRun PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options +ExecCGI </Directory> #linie 44-49: od komentuj i dodaj jak poniżej (dla strony statusowej) <Location /perl-status> SetHandler perl-script PerlResponseHandler Apache2::Status #ustaw uprawnienia dostępu jakie chcesz Require ip 127.0.0.1 192.168.0.0/16 # Order deny,allow # Deny from all # Allow from .example.com </Location> [root@vlsr01 ~]# systemctl restart httpd
[3] Stwórz testowy skrypt Perl’a.
[root@vlsr01 ~]# mkdir /var/www/perl [root@vlsr01 ~]# mcedit /var/www/perl/test-mod_perl.cgi #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; my $a = 0; &number(); sub number { $a++; print "numer \$a = $a \n"; } [root@vlsr01 ~]# chmod 705 /var/www/perl/test-mod_perl.cgi [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 1
[4] Skonfiguruj tryby rejestru, który ma wykonywać kody w pamięci RAM.
[root@vlsr01 ~]# mcedit /etc/httpd/conf.d/perl.conf Alias /perl /var/www/perl <Directory /var/www/perl> # SetHandler perl-script AddHandler perl-script .cgi #włącz tę linię aby wykonywać kody w pamięci RAM PerlResponseHandler ModPerl::Registry #zakomentuj # PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options +ExecCGI </Directory> [root@vlsr01 ~]# systemctl restart httpd
[5] Dostęp do skryptu testowego, który jest przykładem w sekcji [3], następnie zmienna zwiększa się przez przeładowanie, ponieważ zmienna jest buforowana w pamięci RAM. Konieczna jest więc edycja kodu trybu Rejestru.
[root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 1 [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 2 [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 3 [root@vlsr01 ~]# mcedit /var/www/perl/test-mod_perl.cgi #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; my $a = 0; &number($a); sub number { my($a) = @_; $a++; print "numer \$a = $a \n"; } [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 1 [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 1 [root@vlsr01 ~]# curl -k https://www.zicher.lab/perl/test-mod_perl.cgi numer $a = 1
[6] Można podejrzeć status [mod_perl] poprzez dostęp do [(adres IP lub nazwa hosta)/perl-status].