【问题标题】:How do you set up Python scripts to work in Apache 2.0?如何设置 Python 脚本以在 Apache 2.0 中工作?
【发布时间】:2010-09-05 12:40:28
【问题描述】:

我尝试按照谷歌搜索的几个关于设置 mod_python 的教程,但每次都失败了。你有一个好的、循序渐进、坚如磐石的方法吗?

我的开发盒是 OS X,生产环境 - Centos。

【问题讨论】:

    标签: python apache apache2


    【解决方案1】:

    在 Apache 上运行 Python 有两种主要方式。最简单的方法是使用 CGI 并编写普通的 Python 脚本,而第二种方法是使用 Django 或 Pylons 等 Web 框架。

    使用 CGI 很简单。确保您的 Apache 配置文件设置了 cgi-bin。如果没有,请遵循他们的文档 (http://httpd.apache.org/docs/2.0/howto/cgi.html)。此时,您需要做的就是将 Python 脚本放在 cgi-bin 目录中,标准输出将成为 HTTP 响应。有关更多信息,请参阅 Python 的文档 (https://docs.python.org/library/cgi.html)。

    如果你想使用 web 框架,你需要设置 mod_python 或 FastCGI。这些步骤取决于您要使用的框架。 Django 提供了关于如何使用 Apache 设置 mod_python 和 Django 的明确说明 (http://www.djangoproject.com/documentation/modpython/)

    【讨论】:

    【解决方案2】:

    是的,mod_python 的设置非常混乱。以下是我的做法。

    在 httpd.conf 中:

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

    在您的应用程序目录中:

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

    为您希望在 mod_python 下运行的每个 python 程序重复配置。

    【讨论】:

      【解决方案3】:

      您是在 UNIX 还是 Windows 上运行 Python?

      mod_python 和 FastCGI 的替代方案是 mod_wsgi。您可以通过modwsgi了解更多信息

      我已经在 Solaris 上构建并安装了它,没有任何问题。我之前尝试过 mod_python,但在构建过程中遇到了共享库的问题。有good install docs 可用。

      【讨论】:

        【解决方案4】:

        对我而言,问题不在于 Apache 的设置,而在于了解 mod_apache 实际如何使用 .py 文件。模块级语句(包括if __name__=='__main__' 部分中的语句) 被执行——我假设在命令行运行脚本的标准输出将是服务器将输出的内容,但事实并非如此它有效。

        相反,我编写了一个名为 index() 的模块级函数,并让它以字符串的形式返回页面的 HTML。也可以有其他模块级函数(例如,otherFunction()),这些函数可以作为 URI 中的进一步段访问(例如,testScript/otherFunction 用于文件 testScript.py。)

        显然,这比我最初的标准输出概念更有意义。更好地实际使用 Python 作为脚本语言而不是庞大的标记语言。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-20
          • 1970-01-01
          • 2014-05-14
          • 1970-01-01
          • 2011-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多