通过 Fastcgi 同时运行 php 和 Python

在安装了 Nginx 以后(参考《Install PHP+Nginx+Fastcgi+Mysql under Ubuntu》),尝试让 Nginx 同时运行 php 和 python 程序,这样就可以让这两种程序的网站同时存在和运行。

Python 有两种方式可以支持 fastcgi,这里使用的是 http 模式而不是更优的 unix socket.

Python 需要安装 python-flup 模块才能支持 Fastcgi

Nginx 的配置文件:

server {
  listen   80;
  server_name  localhost;
  access_log  /var/log/nginx/localhost.access.log;
  error_log  /var/log/nginx/localhost.error_log;

  location / {
    fastcgi_pass 127.0.0.1:8000;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_pass_header Authorization;
    fastcgi_intercept_errors off;
  }

  location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default/$fastcgi_script_name;
    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_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  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    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_param  REDIRECT_STATUS    200;
  }
}

spawn-fcgi 为 9000 端口的 php 程序提供服务,python manage.py runfcgi 为 python 在 8000 端口提供服务,启用的命令为:
python manage.py runfcgi method=thread host=127.0.0.1 port=8000

One Response to “通过 Fastcgi 同时运行 php 和 Python”

  1. 无聊 Says:

    好东西,记录下来,正愁这个问题

Leave a Reply