• nginx 开启fastcgi 可支持php、python、perl等多种语言


    需要用到以下  perl 库:(以下版本可能过旧导致下载地址失效可直到上一级目录下载最新文件)

    perl-FCGI
    perl-Getopt
    perl-IO
    perl-Socket

    安装 perl-FCGI 、perl-FCGI-ProcManager 和 perl-IO-ALL:

    wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.67.tar.gz
    tar -zxf FCGI-0.67.tar.gz
    cd FCGI-0.67
    perl Makefile.PL
    make && make install
    cd ..

    wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.18.tar.gz
    tar -zxf FCGI-ProcManager-0.18.tar.gz
    cd FCGI-ProcManager-0.18
    perl Makefile.PL
    make && make install
    cd ..

    wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.39.tar.gz
    tar zxf IO-All-0.39.tar.gz
    cd IO-All-0.39
    perl Makefile.PL
    make && make install

    安装 nginx-fcgi 脚本:

    wget http://hily.me/blog/wp-content/uploads/2010/01/nginx-fcgi.txt

    mv nginx-fcgi.txt /usr/sbin/nginx-fcgi

    chmod +x /usr/sbin/nginx-fcgi

    如果不用 sudo 方式运行 nginx-fcgi,请注释掉 nginx-fcgi 脚本中的:

    if ( $> == “0″ ) {
    print “ ERROR Running as a root! ”;
    print “ Suggested not to do so !!! ”;
    exit 1;
    }

    启动 nginx-fcgi:

    nginx-fcgi -l /var/log/nginx/nginx-fcgi.log -pid /var/run/nginx-fcgi.pid -S /var/run/nginx-fcgi.sock
    chown www:www /var/run/nginx-fcgi.sock

    注意一定要为 socket 添加 nginx 帐户的权限,否则 cgi 会执行失败。

    新建 nginx-fcgi 脚本指令配置,直接从 fastcgi_params 复制模板:

    cp /usr/local/nginx/conf/fastcgi_params /usr/local/nginx/conf/nginx_fcgi_params

    去除尾部的:

    # PHP only, required if PHP was built with –enable-force-cgi-redirect
    fastcgi_param  REDIRECT_STATUS    200;

    新建示例 cgi 站点配置:

    server {
    listen       80;
    server_name  test.local;

    location ~ ^/cgi-bin/.*.cgi$
    {
    fastcgi_index  index.cgi;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    include        nginx_fcgi_params;
    fastcgi_read_timeout    5m;
    fastcgi_pass   unix:/var/run/nginx-fcgi.sock;
    }
    }

    重启 nginx,并添加开机启动

    编辑/etc/init.d/perl-fastcgi

    #!/bin/sh
    #add for chkconfig
    #chkconfig: 2345 70 30


    nginx-fcgi -l /var/log/nginx/nginx-fcgi.log -pid /var/run/nginx-fcgi.pid -S /var/run/nginx-fcgi.sock
    chown www:www /var/run/nginx-fcgi.sock

    添加开机启动

    1)

    chmod +x /usr/sbin/nginx-fcgi
    chmod 755 /etc/init.d/perl-fastcgi
    chkconfig perl-fastcgi on

    2)

    编辑  /etc/rc.d/rc.local文件 

    添加

    nginx-fcgi -l /var/log/nginx/nginx-fcgi.log -pid /var/run/nginx-fcgi.pid -S /var/run/nginx-fcgi.sock
    chown www:www /var/run/nginx-fcgi.sock

    测试脚本(声明和代码之前至少有一空行隔开) :

    python

    #!/usr/bin/python2.5
    # File:/usr/local/apache/cgi-bin/python.py 
    # -*- coding: utf-8 -*-
    print "Content-type: text/html;charset=utf-8 "
    print 'Hello World!'

    php:

    #!/usr/local/php/bin/php -q
    # File: File:/usr/local/apache/cgi-bin/i.php
    <?php
        phpinfo();
    ?>

    perl:

    #!/usr/bin/perl

    print "Content-type: text/html ";
    print "Hello, world.";

    SHELL:

    #!/bin/bash
    # File: /usr/local/apache/cgi-bin/bash.sh 
    echo -e "Content-type: text/html;charset=utf-8 "
    echo CGI/1.0 test script report:$(uuidgen)'<br>'

    echo argc is $#. argv is "$*".'<br>'

    echo SERVER_SOFTWARE = $SERVER_SOFTWARE '<br>'
    echo SERVER_NAME = $SERVER_NAME '<br>'
    echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE '<br>'
    echo SERVER_PROTOCOL = $SERVER_PROTOCOL '<br>'
    echo SERVER_PORT = $SERVER_PORT '<br>'
    echo REQUEST_METHOD = $REQUEST_METHOD '<br>'
    echo HTTP_ACCEPT = "$HTTP_ACCEPT" '<br>'
    echo PATH_INFO = "$PATH_INFO" '<br>'
    echo PATH_TRANSLATED = "$PATH_TRANSLATED" '<br>'
    echo SCRIPT_NAME = "$SCRIPT_NAME" '<br>'
    echo QUERY_STRING = "$QUERY_STRING" '<br>'
    echo REMOTE_HOST = $REMOTE_HOST '<br>'
    echo REMOTE_ADDR = $REMOTE_ADDR '<br>'
    echo REMOTE_USER = $REMOTE_USER '<br>'
    echo AUTH_TYPE = $AUTH_TYPE '<br>'
    echo CONTENT_TYPE = $CONTENT_TYPE '<br>'
    echo CONTENT_LENGTH = $CONTENT_LENGTH

  • 相关阅读:
    从网易与淘宝的font-size思考前端设计稿与工作流
    不吹不黑也不撕,我们就简简单单谈谈Vue
    CSS中各种布局的背后(*FC)
    JavaScript七宗罪和一些槽点
    设计糟糕的 RESTful API 就是在浪费时间!
    JavaScript专题之事件循环
    JavaScript知识点
    掌握git基本功
    延迟情况测试点
    Fiddler监听Https请求响应
  • 原文地址:https://www.cnblogs.com/zhangwenzhao/p/3277565.html
Copyright © 2020-2023  润新知