Chr*_*ane 40 ruby-on-rails passenger
我是一位经验丰富的LAMP开发人员,正在进入Rails.我有一个非常愚蠢的问题:Phusion Passenger到底做了什么?
我已经阅读了很多文档,我用Google搜索,我读过维基百科,我读过Stack Overflow.我甚至已经安装它并让它在开发机器上运行(使用Apache).我仍然不知道它到底在做什么.
这是一个猜测:我认为Apache文档根指向/mywebapp/public/而不是,这是奇怪的/mywebapp/,所以我认为它与使得所有内容/mywebapp/都可访问有关.(这是一个疯狂的猜测,基于这样一个事实,我不知道这些东西是如何被访问的.)
我已经知道Passenger是革命性的,开创性的等等,但是它做了什么!
对不起n00b问题,大家好.谢谢!
tad*_*man 47
Passenger是一个用于准备和启动Ruby实例的系统,用于基于Rack的应用程序,如Ruby on Rails.Apache和nginx这两个支持的Web服务器平台无法像PHP,Perl或Python那样运行Ruby,因为没有内置的Ruby模块可以像那些一样运行.这意味着Ruby倾向于作为一个独立的进程组运行,Web服务器必须通过该进程来引导流量.
Rails往往作为持久进程运行,因为整个堆栈的启动时间很长.乘客在需要时启动新实例,并将杀掉那些不再需要的实例.您可以在进程列表中看到这一点,因为它们清楚地标有"Passenger"和"Rails"前缀.
Passenger的一个特性是它将重用Rails堆栈的一部分,以便更快地创建其他进程,克隆一个实例而不是从头开始新的实例.加载器是用C++编写的,可以尽可能高效地处理每个Ruby进程的正确配置和启动,并通过在不同进程之间共享来帮助节省内存.
将东西托出public/目录的原因是为了避免暴露您的应用程序代码库.需要正确配置PHP以防止人们简单地浏览目录和下载源,因为静态内容和可执行脚本之间没有特定的区别.例如,配置错误的服务器很乐意提供原始.php文件而不是运行它们.
乘客并非完全具有革命性,但它确实在一个非常方便的包装中融入了许多基本功能.使它如此伟大的原因是它运作良好并且不需要太多关注.开箱即用它已经准备好了.
它在rails应用程序(实际上是任何机架应用程序)上提供ruby.我和版本2.x的乘客一起使用它直接将它集成到apache中,但是对于支持独立执行的新版本,我更喜欢在独立模式下运行它(与rvm一起使用)
它在开发模式和生产模式下都非常有用,它可以加速RoR应用程序的执行.
为了部署一个RoR应用程序,我用它自己的gemset安装它然后我在那个gemset中安装乘客gem install passenger(你也可以安全地跳过gemsets,但它们会隔离应用程序环境,所以很高兴拥有它们).之后,您可以passenger start -a 127.0.0.1 -p 3081 -e production在项目根目录中启动应用程序.
然后我配置一个apache vhost在反向代理模式下使用像这样的文件
<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>
Run Code Online (Sandbox Code Playgroud)
你没问题,你的应用程序部署了本地配置,它甚至不需要root权限(对于乘客部分).
| 归档时间: |
|
| 查看次数: |
4886 次 |
| 最近记录: |