How to make apache to run python scripts using MOD_WSGI or MOD_PYTHON in RHEL6?

12,313

See if the module was loaded properly by issuing apache2ctl -t -D DUMP_MODULES or apachectl -t -D DUMP_MODULES. If it wasn't, edit your httpd.conf or an included file to include the following (replace lib with lib64 if needed):

LoadModule wsgi_module /usr/lib/httpd/modules/mod_wsgi.so

Do note that you can't execute any python script with WSGI - it has to support an interface with the WSGI handler, if I remember correctly. If you want to execute any python script perhaps you should use plain old CGI, which is slow (don't use it in production if you have more users than yourself) but easy. If your scripts are in cgi-bin and they have the right shebang at the top they should pretty much just work already.

If you want to use mod_python to have Apache execute regular python scripts first make sure you're loading the module:

  LoadModule python_module modules/mod_python.so

And then add this to your configuration, for example inside a Directory block, removing your other changes first:

  AddHandler mod_python .py
  PythonHandler mod_python.publisher
Share:
12,313
ASKN
Author by

ASKN

Currency service as CTO & MD of a Fintech

Updated on September 18, 2022

Comments

  • ASKN
    ASKN almost 2 years

    I am trying to make the apache to run python scripts. I have MOD_WSGI , Apache , Python installed on RHEL6. I even edited httpd.conf file to include these lines.

    <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews ExecCGI
    
      AddHandler cgi-script .cgi
      AddHandler wsgi-script .wsgi
    
      AllowOverride None
      Order allow,deny
      allow from all
    </Directory>
    

    I restarted the apache server also. But when i try to execute the python scripts , its just getting printed as plain text in the browser. Its not at all getting executed. Please somebody help.

  • ASKN
    ASKN about 13 years
    I ran this comment - apachectl -t -D DUMP_MODULES and it said syntax ok so that means WSGI is ok. And i even tried editing the httpd.conf and it said mod_wsgi already loaded . module has been loaded. now whats next?
  • Eduardo Ivanec
    Eduardo Ivanec about 13 years
    The scripts you're trying to run have a .wsgi extension, right?
  • ASKN
    ASKN about 13 years
    you mean python script. its name is test.py . And i am running it by 10.193.187.52/test.py like this
  • Cyclops
    Cyclops about 13 years
    @Ashin, he (@Eduardo) explained the problem twice - Apache is looking for scripts that end in .wsgi, not .py. Look at the rules you listed: AddHandler wsgi-script .wsgi. Handling Python files is a different process.
  • ASKN
    ASKN about 13 years
    Ok then i changed it to this now AddHandler wsgi-script .py and now i am getting 403 error You don't have permission to access /test.py on this server. , and so i tried chmod 777 test.py , gave the python file full permission. Still getting the 403 error.
  • ASKN
    ASKN about 13 years
    @Cyclops @Eduardo My actual requirement is to make Apache to execute python scripts. So should i need to make use of MOD_PYTHON instead of MOD_WSGI
  • Eduardo Ivanec
    Eduardo Ivanec about 13 years
    @Ashin - regarding that 403 error, your web server user probably doesn't have enough permissions to get to that file - the directory it's in, or some other directory along the path to the root, hasn't got 'rx' for it. Yes, given your requirement you're probably better off sticking to mod_python - see my latest edit.
  • ASKN
    ASKN about 13 years
    @Eduardo Thank you very much Eduardo. It worked so fine :)