How do you set up Python scripts to work in Apache 2.0?

后端 未结 4 1662
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-15 06:00

I tried to follow a couple of googled up tutorials on setting up mod_python, but failed every time. Do you have a good, step-by step, rock-solid howto?

My dev box is

相关标签:
4条回答
  • 2020-12-15 06:14

    Yes, mod_python is pretty confusing to set up. Here's how I did it.

    In httpd.conf:

    LoadModule python_module modules/mod_python.so
    
    <Directory "/serverbase/htdocs/myapp">
      AddHandler mod_python .py
      PythonHandler myapp
      PythonDebug On
    

    and in your application directory:

    $ /serverbase/htdocs/myapp$ ls -l
    total 16
    -r-xr-xr-x 1 root sys        6484 May 21 15:54 myapp.py
    

    Repeat the configuration for each python program you wish to have running under mod_python.

    0 讨论(0)
  • 2020-12-15 06:26

    There are two main ways of running Python on Apache. The simplest would be to use CGI and write normal Python scripts while the second is using a web framework like Django or Pylons.

    Using CGI is straightforward. Make sure your Apache config file has a cgi-bin set up. If not, follow their documentation (http://httpd.apache.org/docs/2.0/howto/cgi.html). At that point all you need to do is place your Python scripts in the cgi-bin directory and the standard output will become the HTTP response. Refer to Python's documentation for further info (https://docs.python.org/library/cgi.html).

    If you want to use a web framework you'll need to setup mod_python or FastCGI. These steps are dependent on which framework you want to use. Django provides clear instructions on how to setup mod_python and Django with Apache (http://www.djangoproject.com/documentation/modpython/)

    0 讨论(0)
  • 2020-12-15 06:26

    Are you running Python on UNIX or Windows?

    An alternative to mod_python and FastCGI is mod_wsgi. You can find out more at modwsgi

    I have built and installed this on Solaris without problems. I had previously tried mod_python but ran into problems with shared libraries as part of the build. There are good install docs available.

    0 讨论(0)
  • 2020-12-15 06:28

    The problem for me wasn't in Apache set up, but in understanding how mod_apache actually uses the .py files. Module-level statements (including those in a if __name__=='__main__' section) are not executed--I assumed that the stdout from running the script at the commandline would be what the server would output, but that's not how it works.

    Instead, I wrote a module-level function called index(), and had it return as a string the HTML of the page. It's also possible to have other module-level functions (e.g., otherFunction()) that can be accessed as further segments in the URI (e.g., testScript/otherFunction for the file testScript.py.)

    Obviously, this makes more sense than my original stdout conception. Better capability of actually using Python as a scripting language and not a humongous markup language.

    0 讨论(0)
提交回复
热议问题