notice

当前位置: 系统之家 » Linux » 阅读正文


Nginx fastcgi perl (pl、cgi)支持

2010年9月20日 | 发布: admin


点击图片查看更多内容

1. 安装FCGI模块

# wget http://search.cpan.org/CPAN/authors/id/B/BO/BOBTFISH/FCGI-0.70.tar.gz
# tar zxvf FCGI-0.70.tar.gz
# cd FCGI-0.70
# perl Makefile.PL
# make
# make install

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;
        index  index.html index.htm index.cgi;
    }
    location ~ .*\.(pl|cgi)?$
    {
      gzip off;
      root   /data/nginx/html;
      fastcgi_pass  unix:/usr/local/nginx/logs/perl-fcgi.sock;
      fastcgi_index index.cgi;
      fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
      fastcgi_param  SERVER_SOFTWARE    nginx;
      fastcgi_param  QUERY_STRING       $query_string;
      fastcgi_param  REQUEST_METHOD     $request_method;
      fastcgi_param  CONTENT_TYPE       $content_type;
      fastcgi_param  CONTENT_LENGTH     $content_length;
      fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
      fastcgi_param  REQUEST_URI        $request_uri;
      fastcgi_param  DOCUMENT_URI       $document_uri;
      fastcgi_param  DOCUMENT_ROOT      $document_root;
      fastcgi_param  SERVER_PROTOCOL    $server_protocol;
      fastcgi_param  REMOTE_ADDR        $remote_addr;
      fastcgi_param  REMOTE_PORT        $remote_port;
      fastcgi_param  SERVER_ADDR        $server_addr;
      fastcgi_param  SERVER_PORT        $server_port;
      fastcgi_param  SERVER_NAME        $server_name;
      fastcgi_read_timeout   60;
     }
}

6.Perl探针测试

点击下载Perl探针

请对我们的文章进行评论

标签:

版权声明:

转载时请注明文章出处,并在文章结尾表明本文链接,特此声明!

本文链接:http://www.xtgly.com/1115.htm


  1. 2010年9月20日21:54

    非常高深

  2. 2010年9月20日23:08

    能再难一点吗? 反正已经看不懂了,呵呵

  3. 2010年9月21日00:38

    现在不少服务器都用nginx,我只知道这个比apache轻巧,但apache还是主流。 :grin:

    • admin
      2010年9月21日08:39

      新浪,网易,腾讯很多服务也是用 nginx

  4. 2010年9月21日08:08

    虽然是一点也看不必,但还是回贴支持一个。

  5. 2010年9月21日08:24

    太深奥了,完全不懂

  6. ym
    2011年2月2日16:54

    hi.
    我运行了/usr/local/nginx/start_perl_cgi.sh start后,显示:

    /usr/local/nginx/start_perl_cgi.sh: line 20: cgi.sh: command not found
    chown: cannot access `/usr/local/nginx/now_start_perl_fcgi.sh': No such file or directory
    chmod: cannot access `/usr/local/nginx/now_start_perl_fcgi.sh': No such file or directory
    /usr/local/nginx/start_perl_cgi.sh: line 25: sudo: command not found
    “start perl-fcgi done”

    如何解决错误?

  7. admin
    2011年2月2日19:37

    这个提示是说找不到路径,请确认你的now_start_perl_fcgi.sh文件路径。

    • admin
      2011年2月8日20:32

      vi /usr/local/nginx/start_perl_cgi.sh

      这步聚下面就是那个文件的内容

  8. ym
    2011年2月2日20:52

    /usr/local/nginx/里面怎么会有now_start_perl_fcgi.sh文件的?不是只新建了/usr/local/nginx/start_perl_cgi.sh文件吗?

  9. cfanbo
    2011年8月6日00:52

    现在nginx用的是www:www用户运行的.发现用上面的脚本虽然可以启动起来,但无法运行pl文件,log日志提示权限不对,不然应该如何配合使用???

  10. root
    2011年8月19日12:27

    你好!
    请问下,我按照你的方法配置nginx支持cgi,为什么访问URL的时候总提示:
    502 Bad Gateway
    我看nginx错误日志显示有:
    2011/08/19 20:18:50 [error] 2626#0: *1 connect() to unix:/etc/nginx/logs/perl-fcgi.sock failed (111: Connection refused) while connecting to upstream, client: 192.168.
    80.198, server: localhost, request: "GET /perlinfo.cgi HTTP/1.1", upstream: "fastcgi://unix:/etc/nginx/logs/perl-fcgi.sock:", host: "192.168.1.156"

    请指点一下迷津,谢谢!

    • admin
      2011年8月19日14:08

      检查看下 /etc/nginx/logs/perl-fcgi.sock 这个文件有生么

5 trackbacks

  1. centos 5.5 nginx nagios 安装配置指南 | SystemAdmin Blog Pingback | 2010/09/21
  2. Nginx fastcgi perl (pl、cgi)支持 | haohtml's blog Pingback | 2011/08/06
  3. rest homes Trackback | 2011/11/30
  4. doors auckland Trackback | 2011/12/06
  5. forklift hire auckland Trackback | 2011/12/06