如果我有一台运行Apache的服务器,并且安装了FastCGI,那么是否可以运行Ruby和Python脚本? 如果服务器上已经安装了Python,是不是可以将.py添加到httpd.conf文件中的CGI部分来使Python脚本工作?
对于Ruby和Java,如果安装了Ruby和Java,是否消除了对Mongrel和Tomcat的需求?
除非我错过了一些东西,FastCGI似乎只能让你做你已经做的事情。
FastCGI是“标准”CGI脚本的替代品。
在老派的CGI中,Web服务器会启动脚本,发送请求,等待响应,然后期望脚本终止。
FastCGI的主要特点是你的脚本不会死,而是挂起,等待另一个请求。 这使得效率更高,因为没有创build另一个进程,可能解释的脚本不会被重新加载,等等。这对于Perl,Ruby和几乎所有其他语言来说都是一个重大的胜利。
缺点是必须编写脚本来处理这类事情。 这并不难。
所以,FastCGI就是要减less服务请求的影响。
如果您使用的是Ruby on Rails(不仅仅是ruby),那么请查看Phusion Passenger。 这是一个令人敬畏的服务器插件,使得运行Ruby on Rails相当不错。
至于mod_python,你当然可以做到这一点。 但是,有一些权衡。 首先,CGI脚本可以作为另一个用户运行,而不是主要的Web服务器。 我不知道如果mod_python这样做。 能够以不同的用户身份运行权限问题,通过在不同的用户上运行来分隔应用程序等,这可能是非常有用的。
所以,为了回答你的问题有点不同,如果你愿意使用mod_python和Phusion Passenger,那么你不需要使用FastCGI。 如果您必须在与服务器不同的进程中运行脚本,那么您可以使用FastCGI,而不是使用普通的旧CGI。
FastCGI是CGI的优化版本。 它匹配CGI的接口,增加分布式计算。
你可以通过CGI运行python脚本(cgitb模块是有用的),但是为了性能和特性原因,使用mod_python之类的框架通常会更好。 这种情况与Ruby和Java类似。
我不知道你在做什么。 你不能用FastCGIreplaceMongrel或Tomcat。 他们是完全不同的野兽。 您必须重写应用程序以适应Web服务器的接口。