mod_cgi,mod_fastcgi,mod_scgi,mod_wsgi,mod_python,FLUP。我不知道还有多少。什么是mod_php等价物?

时间:2010-03-28 09:56:30

标签: php python apache

我最近学过Python。我喜欢它。我只是想用它进行Web开发。这种想法引起了所有的麻烦。但我喜欢这些麻烦:)

来自PHP世界,只有一种方式标准化。我期待同样的搜索python&阿帕奇。

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甚至Assembly :)编写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,那么我是否会感到困惑?有人可以清楚地解释一下并给出完整图片。

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:7)

Python世界中没有完全等同于mod_php。

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

答案 2 :(得分:4)

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取代,它们是esource友好的。但对于简单的脚本,后者有点太重了。

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

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

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

答案 3 :(得分:2)

mod_pythonmod_php最相似(即它尝试做所有事情)。这不一定是好事,我不建议今天将应用程序写入本机mod_python接口。

  

WSGI是一种优化/改进的内容,是专为python

设计的高效版本

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

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

  

为了使用这个mod_wsgi是一种方法。对?

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