Articles of phusion passenger

带有HAProxy后面的乘客的Nginx会导致503错误

在过去的一个月中,我不得不学习了很多关于服务器configuration,集成,AWS等方面的知识。我从来没有这样做过。 我得到了一切,并为我的应用程序运行良好(主要感谢http://github.com/wr0ngway/rubber创业板和#rubberec2 IRC频道的帮助)。 但是,我遇到了一个神秘的(对我)的问题。 堆 我在HAProxy后面运行Nginx + Passenger。 到目前为止,只有一个Nginx + Passenger主机正在使用,所以HAProxy实际上并没有太多的function,但我们将来会增加更多的应用服务器。 问题 我被卡住偶尔的503错误,在一天中的某些时间(在更高的负载?)变得烦人。 这些错误都发生在静态资产和路由URL上。 我已经确定这是HAProxy引发他们,因为页面和它的头是相同的/etc/haproxy/errors/503.http。 我认为nginx并不关心它接收多less请求,它可以处理所有这些请求,因为它有自己的排队,并且乘客正确分配东西。 那么为什么HAProxy声称没有服务器可以处理一些请求? 我的HAProxyconfiguration global log 127.0.0.1 local0 warning maxconn 1024 defaults log global mode http retries 3 balance roundrobin option abortonclose option redispatch option httplog contimeout 4000 clitimeout 150000 srvtimeout 30000 listen passenger_proxy xxxx:x option forwardfor server web01 web01:xxxx maxconn […]

乘客无法在首次载入时运行,但在单次刷新后成功启动

我的生产服务器上有一个非常简单的乘客安装程序。 似乎每天晚上的旅客进程因不活动而退出。 当我早上打车时,乘客再次启动,会给我一个相当直接的错误,即“sinatra”rubygem无法装载。 当我刷新页面时,问题就消失了,乘客在剩下的时间里工作得很好。 Sinatra是一个随时可用的gem,我需要“rubygems”之后加载它。 任何想法为什么乘客将不能启动一次尝试?

TCP 443连接进入服务器,但从未到达Apache2(乘客)

我们有一些奇怪的问题,当外部服务器试图连接到端口443(TCP),这是一个Apache2 +乘客和Rails应用程序的我们的网站。 这个问题很less发生。 我开始调查,通过启用iptableslogging使用iptables -I INPUT -m state –state NEW,INVALID -j LOG –log-prefix "iptables [INPUT]: " (这也为FORWARD(通常不使用)和OUTPUT)。 现在每个新的连接都被logging到syslog中。 现在我在这个系统日志上看到了正常的连接,并且经过了与Vhost的连接(正常工作请求),但是有时(在大约100个连接中),我只能看到iptables日志中的新连接,但连接似乎没有达到apache2或乘客实例)(没有apache日志条目,没有连接的结果)。 当用curl来做这件事时,我们会得到一个超时或一个空string。 我们刚刚发送了一个启用debugging的curl请求代码片段,用于增强日志loggingcurl错误的样子。 我们正在使用Debian Squeeze(稳定),在具有E1000网卡(虚拟化)的桥接以太网的VMWare ESXi环境中运行。 但是,当数据包到达VM-OS本身时,我不认为这会导致问题。 我也检查了有40到50个连接的ip_conntrack,挤压极限是65k,所以没问题。 另外,我们没有任何丢弃的网卡的本身。 内核版本 :Linux servername 2.6.32-5-amd64#1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU / Linux Apache2 :服务器版本:Apache / 2.2.16(Debian) – 服务器版本:Nov 30 2012 08:58:38 乘客 :Phusion Passenger版本3.0.12 Ruby […]

当达到Phusion PassengerMaxPoolSize时会发生什么?

我的post的主题几乎总结了我的问题:PassengerMaxPoolSize达到时会发生什么? 例如 : PassengerMaxPoolSize根据我们的系统规格configuration为40 如果所有 40个会话处于活动状态(处理请求)并且我们的负载平衡器将另一个会话传递给此特定Web服务器,会发生什么? 这将发送一个第四十一届会议来处理没有可用的旅客进程。

使用Otto在AWS上部署Node.js应用程序

尝试使用Otto部署Node.js应用程序时,部署的应用程序无法访问。 我创build了一个简单的应用程序 ,只需监听端口80并回答状态请求: var express = require('express'); var app = express(); var port = 80; app.get('/status',function(req,res){ res.json({ hostname: req.hostname, address: req.ip }); }); var server = app.listen(port,function(){ console.log('PORT='+port); }); Otto创build的本地虚拟机工作正常: host$ otto compile host$ otto dev host$ otto dev ssh guest$ npm install guest$ sudo npm start host$ curl http://`otto dev address`/status 但是,当应用程序在AWS上部署时 host$ otto […]

我们如何在apache中运行多个具有不同域和端口号的应用程序

我有两个应用程序在我的服务器上运行域 x.abc.com admin.x.abc.com x.abc.com is running on port 80 admin.x.abc.com is running on port 8080 我可以从浏览器访问x.abc.com,但是当我尝试admin.x.abc.com时,它仅向x.abc.com发送请求。 在单机上configuration两个具有不同域和端口的Web应用程序的正确方法是什么? 下面分别列出了我的虚拟主机文件x.abc.com和admin.x.abc.com <VirtualHost *:80> ServerName www.x.abc.com ServerAlias x.abc.com RailsEnv test DocumentRoot /home/cp/cp/public <Directory /home/cp/cp/public/> </Directory> LogLevel warn ErrorLog /home/cp/cp/log/error.log CustomLog /home/cp/cp/access.log combined RewriteCond %{HTTP_HOST} ^admin.x.abc.com RewriteRule (.*) http://localhost:8080/$1 [R=301,L] </VirtualHost> <VirtualHost *:8080> ServerName www.admin.x.abc.com ServerAlias admin.x.abc.com RailsEnv test DocumentRoot […]

许多Apache的实例都会被Passenger / Rails引发

我的生产网站上有一个Debian Linux VPS服务器(512MB)。 我使用Apache的Phusion Passenger来为Ruby 1.9的Rails 2.3.4应用程序提供服务。 我将Phusion乘客实例池限制为3个 尽pipestream量相对较低,但服务器有时会崩溃,我注意到(使用'top'命令时)有很多apache实例(/ usr / sbin / apache2 -k start),可能其中有20个占用了所有记忆我和网站变得无法响应。 我不知道该怎么做,从哪里开始挖掘潜在的问题,或者如何发现或限制apache实例的数量。 谢谢, 谭

不能用Nginx安装乘客

我有一个机架应用程序,我想从Ruby 1.8.7 + Apache +乘客迁移到Ruby 1.9.1 + Nginx +乘客。 我已经编写了一个快速安装以下脚本,并引发错误… 这里是安装脚本:(基本的一个,我需要在Ubuntu 10.04 Lucid Lynx新鲜的盒子上安装所有的步骤) Nginx的源码 cd / tmp wget http://nginx.org/download/nginx-0.7.66.tar.gz tar xzf nginx-0.7.66.tar.gz cd nginx-0.7.66 openssl是SSL / TLS所必需的 sudo apt-get install openssl sudo apt-get install libssl-dev 编译的东西 sudo apt-get zlib1g-dev Ruby解释器1.9.1 sudo apt-get install ruby​​1.9.1 ruby​​1.9.1-dev ruby​​gems1.9.1 irb1.9.1 ri1.9.1 rdoc1.9.1 build-essential nginx libopenssl-ruby1.9.1 确保默认的ruby使用版本1.9.1 sudo […]

如何获得Apache的www数据识别RVm?

问题:Apache / Passenger不识别RVM 我有一个多用户安装的RVM,按照规范说明: http : //beginrescueend.com/rvm/install/ 然后,我编辑了/etc/profile.d/rvm.sh以包含以下行,以便Ruby 1.9是用于login的所有用户的版本: rvm use –default 1.9.2 我的系统中至less有3个用户: ubuntu (我用来执行所有交互式任务的默认用户) 乘客 (这是用户部署任务) www-data (这大概是我设置的服务httpd请求的用户) 以交互方式login到Ubuntu和乘客时 ,以下内容可以正确返回: $ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 但是,实际提供这些请求的www-data用户从来不会执行/etc/profile.d/rvm.sh(或者profile.d中的任何内容)。 因此,以www数据用户身份login时总是会发生以下情况: $ ruby -v ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] 由于这个原因,Bundler在我的开发沙箱上运行正确的Ruby版本,但在运行时出现了“无法在Ruby 1.8上安装Gem”types的错误: $ cap deploy <snip> * executing "cd /var/www/app/releases/20111031001406 && bundle install […]

Rails Passenger Nginx无法加载这样的文件打包器

我已经在Ubuntu Server 12.04LTS上设置了Rails,Passenger,nginx和PostgreSQL。 然而,在试图访问应用程序/网站时,我遇到了一个错误页面,说应用程序无法启动,因为源文件丢失。 Error message: cannot load such file — bundler 。 我的nginxconfiguration( /opt/nginx/conf/nginx.conf ): user railsapp; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; passenger_root /home/railsapp/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14; passenger_ruby /home/railsapp/.rvm/rubies/ruby-1.9.3-p194/bin/ruby; server { listen 80; server_name fitness_schedules.local; root /home/railsapp/fitness_schedules/public; passenger_enabled on; rack_env development; } } 这是错误消息: 应用程序需要的源文件缺失。 […]