Phusion乘客傻瓜!

问题描述

| 我是一位经验丰富的LAMP开发人员,正在使用Rails。我有一个非常愚蠢的问题要问:Phusion Passenger到底在做什么? 我已经阅读了很多文档,已经Google搜索,已经阅读了Wikipedia,已经阅读了Stack Overflow。我什至安装了它,并使其在开发机器上运行(使用Apache)。我仍然不知道它实际上在做什么。 这是一个猜测:我认为Apache文档的根目录指向
/mywebapp/public/
而不是
/mywebapp/
很奇怪,因此我认为这与使
/mywebapp/
中的所有内容都可访问有关。 (不过,基于我不知道该东西如何被访问的事实,这是一个疯狂的猜测。) 我已经收集到旅客是革命性的,开创性的等等,但是它是做什么的呢? 不好意思,大家好!谢谢!     

解决方法

        Passenger是一个用于准备和启动Ruby实例的系统,该实例可与Ruby on Rails等基于Rack的应用程序一起使用。 Apache和nginx这两个受支持的Web服务器平台无法像运行PHP,Perl或Python一样运行Ruby,因为没有内置的Ruby模块可以像它们那样运行。这意味着Ruby倾向于作为Web服务器必须引导流量通过的一组独立进程来运行。 Rails倾向于作为持久性进程运行,因为整个堆栈的启动时间很长。乘客根据需要启动新实例,并将杀死不再需要的实例。您可以在过程列表中看到这一点,因为它们用\“ Passenger \”和\“ Rails \”前缀明确标识。 乘客的一个特点是它将重用Rails堆栈的一部分,以便更快地创建其他进程,克隆一个实例而不是从头开始构建一个新实例。加载程序是用C ++编写的,可以尽可能高效地正确配置和启动每个Ruby进程,并且可以通过在不同进程之间共享来帮助节省内存。 您将内容托管在“ 3”目录之外的原因是为了避免暴露您的应用程序代码库。需要正确配置PHP,以防止人们仅浏览目录并下载源代码,因为静态内容和可执行脚本之间没有特定区别。例如,配置错误的服务器会很乐意提供原始.php文件,而不是运行它们。 乘客并不是完全革命性的,但它确实在非常方便的包装中结合了许多基本功能。使它如此出色的原因是它工作得很好并且不需要太多关注。开箱即用,几乎可以使用了。     ,        它可以在导轨应用(实际上是任何机架应用)上使用红宝石。我使用过2.x版的passenger将其直接集成到apache中,但是使用支持独立执行的新版本,我更喜欢以独立模式运行(与rvm结合使用) 它在开发模式和生产模式下都非常有用,并且可以加快RoR应用程序的执行速度。 为了部署RoR应用程序,我先用自己的gemset来安装它,然后用
gem install passenger
在该gemset中安装passenger(也可以安全地跳过gemset,但是它们会隔离应用程序环境,因此很高兴拥有它们) 。之后,您可以在项目根目录中以“ 5”启动应用程序。 然后,我将apache虚拟主机配置为在反向代理模式下使用类似这样的文件
<VirtualHost *:80>
        ServerName your.server.org

        ProxyPass /  http://localhost:3081/
        ProxyPassReverse  /  http://localhost:3081/
        ProxyRequests     Off

        # Local reverse proxy authorization override
        # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
        <Proxy http://localhost:3081/*>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>
没关系,您已经使用本地配置部署了应用程序,它甚至不需要root特权(对于乘客部分)。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...