Подключение Perl к веб-серверу nginx в CentOS Stream 8

Данное руководство позволяет запустить интерпретатор Perl и расширить стек LEMP на ОС CentOS Stream 8.

Настройка LEMP-сервера для CentOS Stream 8 описана здесь: https://dondub.com/2021/07/zapusk-lemp-servera-na-centos-stream-8/

Начнём с установки пакета репозитория EPEL и обновим репозитории

# yum install epel-release
# yum update

Затем установим необходимые пакеты

# yum install perl nginx fcgiwrap

После этого в файрволле откроем необходимые порты

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

Теперь запустим службу nginx и включим её в автозагрузку

# systemctl start nginx
# systemctl enable nginx

После этого выключим SELINUX

# vi /etc/sysconfig/selinux

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

SELINUX=disabled

Далее создадим директорию /usr/share/nginx/cgi-bin/ и зададим ей необходимые права

# mkdir /usr/share/nginx/cgi-bin/
# chmod 755 /usr/share/nginx/cgi-bin/

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

# touch /etc/nginx/fcgiwrap.conf

откроем его

# vi /etc/nginx/fcgiwrap.conf

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

location /cgi-bin/ {

    gzip off;
	
    root  /usr/share/nginx;
	
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

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

# vi /etc/nginx/nginx.conf

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

include /etc/nginx/fcgiwrap.conf;

Теперь создадим файлы для запуска службы fcgiwrap

# touch /usr/lib/systemd/system/{fcgiwrap.service,fcgiwrap.socket}

открываем файл /usr/lib/systemd/system/fcgiwrap.service

# vi /usr/lib/systemd/system/fcgiwrap.service

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

[Unit]
Description=CGI Server
After=nss-user-lookup.target
Requires=fcgiwrap.socket

[Service]
EnvironmentFile=/etc/sysconfig/fcgiwrap
ExecStart=/usr/sbin/fcgiwrap ${DAEMON_OPTS} -c ${DAEMON_PROCS}
User=nginx
Group=nginx

[Install]
Also=fcgiwrap.socket

также — для сокета, открываем файл /usr/lib/systemd/system/fcgiwrap.socket

# vi /usr/lib/systemd/system/fcgiwrap.socket

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

[Unit]
Description=fcgiwrap Socket

[Socket]
ListenStream=/run/fcgiwrap.socket

[Install]
WantedBy=sockets.target

Далее запускаем службу fcgiwrap и включаем её в автозагрузку

# systemctl start fcgiwrap
# systemctl enable fcgiwrap

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

# systemctl restart nginx

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

# touch /usr/share/nginx/cgi-bin/welcome.cgi

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

# chmod 755 /usr/share/nginx/cgi-bin/welcome.cgi

откроем его

# vi /usr/share/nginx/cgi-bin/welcome.cgi

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

#!/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 /usr/share/nginx/cgi-bin/cgi.pl
# chmod 755 /usr/share/nginx/cgi-bin/cgi.pl

откроем его

# vi /usr/share/nginx/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/

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

Ваш адрес email не будет опубликован.