Подключение Perl к веб-серверу nginx в Debian 11 и Ubuntu Server 21.10

Краткая инструкция, которая позволяет запустить интерпретатор Perl и расширить стек LEMP на ОС Debian GNU/Linux 11.2, Ubuntu Server 21.10 и CentOS Stream 8.

Настройка LEMP-сервера для Debian описана здесь: https://dondub.com/2021/07/zapusk-lemp-servera-na-debian-10/, а для Ubuntu Server — здесь: https://dondub.com/2021/07/zapusk-lemp-servera-na-ubuntu-server/

Устанавливаем необходимые пакеты

# apt install perl nginx fcgiwrap

Затем создадим файл конфигурации nginx для fcgiwrap

# touch /etc/nginx/fcgiwrap.conf

откроем его

# nano /etc/nginx/fcgiwrap.conf

и пропишем несколько строк:

location /cgi-bin/ {

    gzip off;

    root  /var/www;

    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  /var/www$fastcgi_script_name;

}

После этого создадим директорию /var/www/cgi-bin/ и зададим для неё необходимые права

# mkdir /var/www/cgi-bin/
# chmod 755 /var/www/cgi-bin/

Далее откроем файл конфигурации /etc/nginx/sites-available/default

# nano /etc/nginx/sites-available/default

и в самом конце секции server перед закрывающей фигурной скобкой добавим сроку подключения файла fcgiwrap.conf:

include /etc/nginx/fcgiwrap.conf;

Затем перезапустим службу nginx

# systemctl restart nginx

Теперь создадим файл (скрипт) /var/www/cgi-bin/welcome.cgi

# touch /var/www/cgi-bin/welcome.cgi

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

# chmod 755 /var/www/cgi-bin/welcome.cgi

откроем его

# nano /var/www/cgi-bin/welcome.cgi

и для проверки работы Perl впишем такой код:

#!/usr/bin/perl

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

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

Файл welcome.cgi работает!

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

# touch /var/www/cgi-bin/cgi.pl 
# chmod 755 /var/www/cgi-bin/cgi.pl

откроем его

# nano /var/www/cgi-bin/cgi.pl

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

#!/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 необходимо будет установить и дополнительные пакеты. Это описано здесь: https://dondub.com/2022/03/podklyuchenie-perl-k-lamp-serveru-v-linux/

Подключение Perl к веб-серверу nginx в Debian 11 и Ubuntu Server 21.10: 4 комментария

  1. Добрый день.
    Тут,наверное, еще надо написать про запуск демона, который это будет распаралелливать.
    Иначе запросы будут выстраиваться в очередь. Вот к примеру напишем скрипт, который будет выполнться n секунд, где n это параметр из гет запроса по ключу sec
    my $params = {split(‘=’,$ENV{QUERY_STRING})};
    sleep($params->{sec});
    Откроем первую вкладку http://IP_адрес_или_имя_хоста/cgi-bin/cgi.pl?sec=10
    Откроем вторую вкладку http://IP_адрес_или_имя_хоста/cgi-bin/cgi.pl?sec=2
    Так вот вторая вкладка(sec=2) будет висеть пока не отработает первая(sec=10).
    В случае с php, вы запустили службу php-fpm. Тут как запускать? Допишите пожалуйста.

  2. Добрый день.
    Ну там смысл был в том, чтобы Перл вообще заработал на сервере, а скрипты, которые в пример приведены, примитивны, просто показывают, что запускается.
    php-fpm запускается аналогично? командой
    systemctl start php7.4-fpm
    Здесь 7.4 — это версия PHP, она у вас может быть другой.
    Там в самом начале приведены ссылки на статьи, описывающие запуск LEMP.

  3. Дело в том, что после запуска php-fpm больше ничего делать не нужно. Все работает из коробки. запросы друг другу не мешают и выполняются параллельно.
    А с перлом как?
    Запустил fcgiwrap, а дальше что делать? Как распараллелить запросы?

  4. Здесь наверное, этот вопрос лучше задать разработчикам на Перл. Цель данной статьи была только в том, чтобы Перл заработал. Остальные нюансы — уже вопрос детальной разработки.

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

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