shuaiwei588 发表于 2018-8-31 08:43:43

Nginx perl cgi 支持

  2. 安装 IO 和 IO::ALL模块
  # wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz
  # tar zxvf IO-1.25.tar.gz
  # cd IO-1.25
  # perl Makefile.PL
  # make
  # make install
  # wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.41.tar.gz
  # tar zxvf IO-All-0.41.tar.gz
  # cd IO-All
  # perl Makefile.PL
  # make
  # make install
  3. Perl脚本
  见附件“perl脚本”
  我把这个脚本放在 /usr/local/nginx/perl-fcgi.pl
  # chmod 755 /usr/local/nginx/perl-fcgi.pl
  4.cgi启动/停止脚本 (nobody为nginx的运行用户)
  # vi /usr/local/nginx/start_perl_cgi.sh
  #!/bin/bash
  #set -x
  dir=/usr/local/nginx
  stop ()
  {
  #pkill-f$dir/perl-fcgi.pl
  kill $(cat $dir/logs/perl-fcgi.pid)
  rm $dir/logs/perl-fcgi.pid 2>/dev/null
  rm $dir/logs/perl-fcgi.sock 2>/dev/null
  echo "stop perl-fcgi done"
  }
  start ()
  {
  rm $dir/now_start_perl_fcgi.sh 2>/dev/null
  chown nobody.root $dir/logs
  echo "$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock" >>$dir/now_start_perl_fcgi.sh
  chown nobody.nobody $dir/now_start_perl_fcgi.sh
  chmod u+x $dir/now_start_perl_fcgi.sh
  sudo -u nobody $dir/now_start_perl_fcgi.sh
  echo "start perl-fcgi done"
  }
  case $1 in
  stop)
  stop
  ;;
  start)
  start
  ;;
  restart)
  stop
  start
  ;;
  esac
  # chmod 755 /usr/local/nginx/start_perl_cgi.sh
  # 启动脚本
  # /usr/local/nginx/start_perl_cgi.sh start
  正常情况下在/usr/local/nginx/logs 下生成 perl-fcgi.sock 这个文件,如果没有生成,那就要检查下上面的步聚了.
  5. 配置nginx
  server {
  listen       80;
  server_name_;
  location / {
  root   /usr/local/nginx/html;
  indexindex.html index.htm index.cgi;
  }
  location ~ .*\.(pl|cgi)?$
  {
  gzip off;
  root   /data/nginx/html;
  fastcgi_passunix:/usr/local/nginx/logs/perl-fcgi.sock;
  fastcgi_index index.cgi;
  fastcgi_passunix:/usr/local/nginx/logs/perl-fcgi.sock;
  fastcgi_index index.cgi;
  fastcgi_paramGATEWAY_INTERFACECGI/1.1;
  fastcgi_paramSERVER_SOFTWARE    nginx;
  fastcgi_paramQUERY_STRING       $query_string;
  fastcgi_paramREQUEST_METHOD   $request_method;
  fastcgi_paramCONTENT_TYPE       $content_type;
  fastcgi_paramCONTENT_LENGTH   $content_length;
  fastcgi_paramSCRIPT_FILENAME    $document_root$fastcgi_script_name;
  fastcgi_paramSCRIPT_NAME      $fastcgi_script_name;
  fastcgi_paramREQUEST_URI      $request_uri;
  fastcgi_paramDOCUMENT_URI       $document_uri;
  fastcgi_paramDOCUMENT_ROOT      $document_root;
  fastcgi_paramSERVER_PROTOCOL    $server_protocol;
  fastcgi_paramREMOTE_ADDR      $remote_addr;
  fastcgi_paramREMOTE_PORT      $remote_port;
  fastcgi_paramSERVER_ADDR      $server_addr;
  fastcgi_paramSERVER_PORT      $server_port;
  fastcgi_paramSERVER_NAME      $server_name;
  fastcgi_read_timeout   60;
  }
  }
  6.Perl探针测试
  见附件 “测试页面”
原帖:http://selboo.com.cn/post/881/
页: [1]
查看完整版本: Nginx perl cgi 支持