Данное руководство позволяет запустить интерпретатор 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/