2013-02-13 3 views
0

J'ai un script Python qui contient:Comment convertir lighttpd mod_fastcgi à Apache 2.2 mod_fcgid

from flup.server.fcgi import WSGIServer 

def processRequest(environ, start_response): 
    # proprietary business logic here 
    return 

WSGIServer(
    application = processRequest, 
    bindAddress = ('0.0.0.0', 6543), 
    umask = 0 
    ).run() 

J'exécuter ce script Python à partir de la ligne de commande sur un serveur ubuntu 12.04.2 LTS avec Python 2.7.3 .

Sur ce même serveur, j'ai la version lighttpd 1.4.28 configuré avec

server.modules = (
    "mod_access", 
    "mod_alias", 
    "mod_compress", 
    "mod_redirect", 
    "mod_setenv", 
    "mod_fastcgi", 
    "mod_accesslog" 
) 

$SERVER["socket"] == ":443" { 
    ssl.engine = "enable" 
    ssl.pemfile = "/etc/lighttpd/ssl/secret.pem" 
    server.document-root = "/var/www" 

    fastcgi.server = (
      "/MyFCGI/" => 
      ((
       "host" => "127.0.0.1", 
       "port" => 6543, 
       "check-local" => "disable" 
      )) 
    ) 
} 

Quand je demande https://TheEffKyouDeeEnn/MyFCGI/blah/blahblah comme POST avec un objet JSON, le système se comporte de la façon dont j'attendre et passe ma demande par au script Python s'exécutant sur la ligne de commande.

Je dois configurer la même fonctionnalité sur une machine MS-Windows Server exécutant Apache 2.2. Je veux préserver la possibilité de déployer mon script Python n'importe où sur le réseau, et non seulement sur le serveur avec l'instance Apache. Bien que la documentation semble indiquer que c'est possible, en utilisant au moins mod_fcgid, je ne peux pas le faire fonctionner moi-même et je ne trouve pas d'exemple.

Pouvez-vous confirmer que mod_fcgid est le module approprié et donner un exemple de la façon de configurer Apache et mod_fcgid pour dupliquer mon comportement lighttpd?

+0

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html contient des exemples pour les configurations apache. Cela dit, cette question appartient probablement à ServerFault – JeffS

Répondre

0

Ceci duplique la même fonctionnalité avec Apache2.2.

 

    LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so 
    LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so 

    VirtualHost *:80 

     DocumentRoot /var/www/ 

     Header set Access-Control-Allow-Origin "*" 
     Header set Access-Control-Allow-Headers "Content-type" 
     Header set Access-Control-Allow-Methods "POST,GET,OPTIONS" 

     AliasMatch ^/MyFCGI/.*$ /var/my_fcgi.py 

     Directory /MyFCGI/ 
      Options FollowSymLinks +ExecCGI 
      AllowOverride All 
      SetHandler fastcgi-script 
     /Directory 

     FastCgiExternalServer /var/my_fcgi.py -host localhost:6543 

    /VirtualHost