【问题标题】:mod_cgi , mod_fastcgi, mod_scgi , mod_wsgi, mod_python, FLUP. I don't know how many more. what is mod_php equivalent?mod_cgi、mod_fastcgi、mod_scgi、mod_wsgi、mod_python、FLUP。我不知道还有多少。什么是 mod_php 等价物?
【发布时间】:2011-02-01 17:07:21
【问题描述】:

我最近学习了 Python。我喜欢它。我只是想将它用于Web开发。这个想法引起了所有的麻烦。但我喜欢这些麻烦:)

来自只有一种标准化方式的 PHP 世界。我也有同样的预期,并搜索了 python 和 apache。

Setting up Python on Windows/ Apache?

远离 mod_python。一种常见的 误导性的想法是 mod_python 是 像 mod_php,但对于 python。那是 不是真的。

那么python中mod_php的等价物是什么?

我不需要澄清这个How Python web frameworks, WSGI and CGI fit together

CGI、FastCGI 和 SCGI 与语言无关。您可以使用 Perl、Python、C、bash 甚至汇编语言编写 CGI 脚本:)。所以,我猜mod_cgimod_fastcgimod_scgi 是它们对应的 apache 模块。对吧?

WSGI 是某种优化/改进的简而言之,一种高效的版本专为 python 语言设计。为了使用这个mod_wsgi 是一种方法。正确的?

这省略了mod_python。那是什么?

Apache -> mod_fastcgi -> FLUP(通过 CGI 协议)-> Django(通过 WSGI 协议) Flup 是另一种使用 wsgi 运行任何可以说 FCGI、SCGI 或 AJP 的网络服务器的方式

什么是 FLUP?什么是 AJP? Django 是怎么出现的?

这些问题引发了关于 PHP 的疑问。它实际上是如何运行的?它使用什么技术? mod_php 和 mod_python 有什么区别?

如果我以后想使用 Perl 或 Java,那我会不会再感到困惑?请有人能把事情解释清楚并给出一个完整的图片。

【问题讨论】:

    标签: php python apache


    【解决方案1】:

    在 Python 世界中没有与 mod_php 完全等价的东西。

    • FastCGI、SCGI 和 AJP 将 Web 应用程序作为单独的进程(守护进程)运行,并在 Web 服务器和它之间传递消息。
    • mod_python 用于在任何请求阶段将 Python 代码嵌入到 httpd 进程中。
    • mod_wsgi 可以在守护程序或嵌入式模式下运行 Python 代码。
    • CGI 是一种在每次发出请求时都会运行脚本/程序的协议。
    • FLUP 是一组适配器,可用于将其中一个接口转换为另一个接口。

    【讨论】:

      【解决方案2】:

      mod_python 是最接近 mod_php 的等价物,但这并不意味着 mod_python 会满足您的需求。对于每种编程语言,您必须列举所有可能的选项并选择您需要的选项。

      对于 PHP,你有 mod_php 和 mod_cgi,但从这两个来看,mod_cgi 在几乎所有方面都不如 mod_php,所以人们通常选择后者。 (有一些替代方案,如果您需要更多安全性,例如 suphp 等)

      对于 Python,你有 mod_cgi,它会在你每次发出请求时运行 python 解释器。 Mod_python 嵌入了 python,因此它通常更快更简单,但对于大型项目或使用框架(如 DJango)的项目,您可能希望使用 mod_wsgi,因为它对资源最友好。

      对于 ruby​​,您还可以选择使用 mod_cgi,但这太慢了。 mod_ruby 也是一个选项,但仅适用于小程序。 mod_fastcgi 通常是 rails/merb 和其他基于 ruby​​ 的 web 框架的选项,但它们被 mod_rails 和 mod_rack 取代,它们对资源很友好。但是对于简单的脚本,后者有点太重了。

      对于单声道 (asp.net) 你有 mod_mono,这通常是唯一的选择。

      对于 java,您通常运行一个单独的 Tomcat/Jetty Web 服务器,并使用 mod_proxy。

      当然,运行一个单独的 web 服务器并使用 mod_proxy 通常是所有 web 框架的一个选项,尽管它主要只适用于开发过程。对于生产环境,您必须仔细选择您的框架(django、rails、asp.net 等)需要的最佳选项(对资源最友好的选项)

      【讨论】:

        【解决方案3】:

        mod_python 最像mod_php 在它所做的事情上(即它试图做所有事情)。这不一定是件好事,我不建议今天将应用程序编写到本机 mod_python 接口。

        WSGI 是某种优化/改进的简而言之,是专为 python 设计的高效版本

        不同之处在于 WSGI 是在 Python 语言本身中定义的:它指定您的代码将接收哪些对象和值。 [S|Fast]CGI 更关心网络上的字节数。

        通过将您的应用程序编写到 WSGI 标准(直接或使用支持它的框架),您可以解开应用程序编写和部署的关注点。

        为了使用这个 mod_wsgi 是一种方法。正确的?

        这是一种的方法,对于 Apache 用户来说绝对是一个不错的选择,但远非唯一。写入 WSGI,您可以在广泛的环境中进行部署,包括 [S|Fast]CGI 和 mod_python。

        【讨论】:

          【解决方案4】:

          将 Python 应用程序部署到 Web 的标准方法是通过 WSGI。这些天没有理由使用其他任何东西。

          mod_wsgi 是支持 WSGI 的 Apache 模块。其他 Web 服务器的 WSGI 模块会有不同的名称。

          【讨论】:

          • +1 谢谢。这是对“使用哪一个?”的简短而准确的回答
          猜你喜欢
          • 2011-03-20
          • 1970-01-01
          • 2014-08-26
          • 1970-01-01
          • 2012-02-20
          • 1970-01-01
          • 2014-05-08
          • 1970-01-01
          • 2014-06-12
          相关资源
          最近更新 更多