Подключение Perl к FAMP-серверу

Данное руководство позволяет запустить интерпретатор Perl и расширить стек FAMP на ОС FreeBSD 13.0.

Настройка FAMP-сервера описана здесь: https://dondub.com/2021/07/zapusk-famp-servera/. Поэтому все предыдущие установки и настройки берём именно оттуда.

Затем установим необходимые модули Perl для Apache

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# pkg install ap24-mod_perl2 p5-DBI p5-Apache-DBI
# pkg install ap24-mod_perl2 p5-DBI p5-Apache-DBI
# pkg install ap24-mod_perl2 p5-DBI p5-Apache-DBI

драйвер для работы Perl с СУБД PostgreSQL

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# pkg install p5-DBD-Pg
# pkg install p5-DBD-Pg
# pkg install p5-DBD-Pg

а также драйвер СУБД MariaDB для Perl с помощью сетевого набора модулей cpan

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# cpan DBD::MariaDB
# cpan DBD::MariaDB
# cpan DBD::MariaDB

После установки модулей Perl в директории /usr/local/etc/apache24/modules.d/ появится файл 260_mod_perl.conf. Открываем его

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# vi /usr/local/etc/apache24/modules.d/260_mod_perl.conf
# vi /usr/local/etc/apache24/modules.d/260_mod_perl.conf
# vi /usr/local/etc/apache24/modules.d/260_mod_perl.conf

и раскомментируем строку:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
LoadModule perl_module libexec/apache24/mod_perl.so
LoadModule perl_module libexec/apache24/mod_perl.so
LoadModule perl_module        libexec/apache24/mod_perl.so

После этого откроем основной файл конфигурации Apache

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# vi /usr/local/etc/apache24/httpd.conf
# vi /usr/local/etc/apache24/httpd.conf
# vi /usr/local/etc/apache24/httpd.conf

и сразу после блока

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<Directory "/usr/local/www/apache24/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<Directory "/usr/local/www/apache24/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
<Directory "/usr/local/www/apache24/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

вставим такие:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<Location /cgi-bin/*.pl>
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
PerlSendHeader On
Options ExecCGI
Require all granted
</Location>
<Location /cgi-bin/*.cgi>
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
PerlSendHeader On
Options ExecCGI
Require all granted
</Location>
<Location /cgi-bin/*.pl> SetHandler perl-script PerlResponseHandler ModPerl::PerlRun PerlSendHeader On Options ExecCGI Require all granted </Location> <Location /cgi-bin/*.cgi> SetHandler perl-script PerlResponseHandler ModPerl::PerlRun PerlSendHeader On Options ExecCGI Require all granted </Location>
<Location /cgi-bin/*.pl>
    SetHandler perl-script
    PerlResponseHandler ModPerl::PerlRun
    PerlSendHeader On
    Options ExecCGI
    Require all granted
</Location>
<Location /cgi-bin/*.cgi>
    SetHandler perl-script
    PerlResponseHandler ModPerl::PerlRun
    PerlSendHeader On
    Options ExecCGI
    Require all granted
</Location>

Далее перезапускаем службу apache24

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# service apache24 restart
# service apache24 restart
# service apache24 restart

Затем создадим скрипт для проверки работы Perl /usr/local/www/apache24/cgi-bin/test.cgi

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# touch /usr/local/www/apache24/cgi-bin/test.cgi
# touch /usr/local/www/apache24/cgi-bin/test.cgi
# touch /usr/local/www/apache24/cgi-bin/test.cgi

назначим ему необходимые права

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# chmod 755 /usr/local/www/apache24/cgi-bin/test.cgi
# chmod 755 /usr/local/www/apache24/cgi-bin/test.cgi
# chmod 755 /usr/local/www/apache24/cgi-bin/test.cgi

откроем его

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# vi /usr/local/www/apache24/cgi-bin/test.cgi
# vi /usr/local/www/apache24/cgi-bin/test.cgi
# vi /usr/local/www/apache24/cgi-bin/test.cgi

и пропишем следующие строки:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/usr/local/bin/perl
print "Content-Type: text/html; charset=utf-8 \n\n";
print "<h1>Файл test.cgi работает!</h1>";
#!/usr/local/bin/perl print "Content-Type: text/html; charset=utf-8 \n\n"; print "<h1>Файл test.cgi работает!</h1>";
#!/usr/local/bin/perl

print "Content-Type: text/html; charset=utf-8 \n\n";
print "<h1>Файл test.cgi работает!</h1>";

Далее на другой машине в сети в адресной строке браузера вводим такой адрес: http://IP_или_имя_хоста/cgi-bin/test.cgi

Должна появиться страничка с надписью «Файл test.cgi работает!«

Также можно создать CGI-скрипт с краткой информацией о данном сервере

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# touch /usr/local/www/apache24/cgi-bin/cgi.pl
# chmod 755 /usr/local/www/apache24/cgi-bin/cgi.pl
# touch /usr/local/www/apache24/cgi-bin/cgi.pl # chmod 755 /usr/local/www/apache24/cgi-bin/cgi.pl
# touch /usr/local/www/apache24/cgi-bin/cgi.pl
# chmod 755 /usr/local/www/apache24/cgi-bin/cgi.pl

открываем его

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# vi /usr/local/www/apache24/cgi-bin/cgi.pl
# vi /usr/local/www/apache24/cgi-bin/cgi.pl
# vi /usr/local/www/apache24/cgi-bin/cgi.pl

и впишем такие строки:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/usr/bin/perl
print "Content-Type: text/plain; charset=utf-8 \r\n\r\n";
print "Информация о сервере: \n";
foreach ( keys %ENV ) {
print "$_\t$ENV{$_}\n";
}
#!/usr/bin/perl print "Content-Type: text/plain; charset=utf-8 \r\n\r\n"; print "Информация о сервере: \n"; foreach ( keys %ENV ) { print "$_\t$ENV{$_}\n"; }
#!/usr/bin/perl

print "Content-Type: text/plain; charset=utf-8 \r\n\r\n";
print "Информация о сервере: \n";

foreach ( keys %ENV  ) {
        print "$_\t$ENV{$_}\n";
}

На другой машине в сети в адресной строке браузера вводим такой адрес: http://IP_или_имя_хоста/cgi-bin/cgi.pl

На странице должна отобразиться информация о сервере в таком виде:

Возможно, под другие определённые задачи также необходимо будет устанавливать дополнительные расширения для Perl.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *