Site Tools


software:perl:fastcgi

Perl fastcgi daemon

Nginx, в отличии от lighttpd не умеет сам выполнять perl скрипты, а готовых fcgi демонов для этого не было в 2009 году, когда я перешёл на nginx.


Сейчас, в 2018 я перешёл на fcgiwrap. Настраивается предельно просто.


Так же хорошо работает uWSGI, инструкции по настройке: Настройка nginx, php5-fpm и uwsgi и Running CGI scripts on uWSGI. Главное не забыть в конфиге nginx

uwsgi_modifier1 9;

Демон не моя разработка, я нашёл несколько готовых вариантов, доработал их немного, добавил rc.d скрипт для FreeBSD. В коде демона есть отсылки к оригиналам.
Работа chroot не проверялась, остальное вроде работает.
Часть не реализованных в демоне опций выполняется стартовым скриптом (chroot, смена пользователя и группы), часть не реализована (смена владельца и группы на сокете).

Стартовый скрипт: perl-fcgi (на FreeBSD расположить в /usr/local/etc/rc.d)
Демон: perl-fcgi.pl (на FreeBSD расположить в /usr/local/etc/ - можно поменять в стартовом скрипте, см выше)
Лицензия: BSD

Более продвинутый вариант: perl-fpm от NiTr0
Обсуждение на форуме: forum.nag.ru

Пример настроек

В rc.conf для FreeBSD добавляем:

perl_fcgi_enable="YES"
perl_fcgi_pidfile="/var/run/perl-fcgi.pid"
perl_fcgi_user="www"
perl_fcgi_group="www"
perl_fcgi_chdir="/"
perl_fcgi_chroot=""
# perl_fcgi_socket="127.0.0.1:53676"
perl_fcgi_socket="/var/run/perl-fcgi.sock"
perl_fcgi_socketbacklog="100"
perl_fcgi_socketmode="1777"
perl_fcgi_children="2"
perl_fcgi_childrentimeout="10"
perl_fcgi_max_requests="100"
perl_fcgi_path_env="/bin:/usr/bin"
  • enable - разрешить запуск при загрузке
  • user - имя пользователя под которым выполнять демона и скрипты
  • group - группа под которыми выполнять демона и скрипты
  • chdir - текущая директория для демона
  • chroot - корневая директория для демона
  • socket - unix сокет - путь или ip:port - для работы fcgi
  • socketbacklog - размер очереди входящих соединений, только для сетевых сокетов
  • socketmode - права доступа к сокету, только для unix сокета
  • children - количество дочерних процессов для выполнения скриптов
  • childrentimeout - максимальное время выполнения скрипта
  • max_requests - максимальное количество запросов обработанных одним дочерним процессом
  • path_env - перезаписать переменную окружения PATH

Параметры командной строки демона

  • -d <directory> - chdir to directory before spawning (default /)
  • -s <address/path> - unix socket or tcp address:port
  • -sb <size> - socket backlog size (default 10)
  • -M <mode> - change Unix domain socket mode (default 0777)
  • -F <children> - number of children to fork (default 2)
  • -Ft <timeout> - children process timeout (default 30)
  • -Fm <num> - children process max requests (default 100)
  • -P <path> - name of PID-file for spawned process
  • -e <path> - set new PATH environment (default /bin:/usr/bin)
software/perl/fastcgi.txt · Last modified: 2022/02/05 04:02 by root