Articles of phusion passenger

乘客 – “自动杀”stream氓程序?

我使用Passenger + Apache运行Ruby on Rails应用程序。 还有一个运行mod_perl的perl邮件列表服务器(Sympa)。 我有root和sh访问服务器(一台Ubuntu机器)。 大多数时候它运行得很好; 该服务器有足够的内存和磁盘空间来处理工作量。 但是有时候(也许每三个月左右一次),一些Apache进程似乎“stream氓”,开始消耗内存和CPU疯狂。 结果,网站崩溃了(有时我不得不做冷重启,只重启Apache是​​不够的)。 我已经做了一些testing,似乎挂起的进程是Ruby进程,这让我怀疑Passenger是错过了。 这里是最后一次“停电”(刚刚发生)的一些Munin图表, 每周的CPU使用情况 乘客内存消耗量按周计算 Apache每天处理 我对Ruby的过程(Passenguer)持怀疑态度。 但是,我不能确定触发“狂野过程”的条件(我只是主持应用程序,我没有开发它)。 虽然这样会很好,但“杀死悬挂的过程”可能会更简单。 我想知道是否有办法“自动杀死”需要占用太多内存或CPU的进程。 有没有处理这个问题的Apache模块或configuration标志? 编辑:到目前为止,我已经尝试了Apache的RLimitCPU,RLimitMEM和RLimitNPROC无济于事 – 它似乎乘客是不受这些设置。 我很确定这个问题是现在的乘客,所以我重新标记和重写这个问题的一部分。

在Nginx中将非GET请求路由到乘客

我有一个Rails应用程序caching多个自定义目录中的页面。 一切工作正常,而不是非GET请求,这是在Nginx发送405错误,因为我的configuration不是路由到乘客。 我的问题是什么是直接向乘客转发非GET请求的最有效方式? 我的nginx.conf目前看起来像这样: server { server_name railsapp.local; root /Users/i0n/Sites/railsapp/public; location / { try_files $uri /$host/$uri/index.html /$host/$uri.html /$host/$uri @passenger; } location @passenger { passenger_enabled on; } }

使用Nginx 1.2.1无法安装Phusion Passenger 3.0.13

我安装了安装3.0.13的gem Passenger。 然后我执行了passenger-install-nginx-module,这是http://www.modrails.com上的Nginx指令所说的。 根据Nginx官方wiki页面安装最新的稳定版本1.2.1。 我说要安装Nginx到/ usr / local / nginx(这是默认的,如果你去nginx维基网站)。 我得到以下错误: Undefined symbols for architecture x86_64: "_pcre_free_study", referenced from: _ngx_pcre_free_studies in ngx_regex.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status make[1]: *** [objs/nginx] Error 1 make: *** [build] Error 2 ——————————————– It looks like something went wrong Please read our […]

Phusion Passenger设置PassengerPreStart不会使用服务httpd start来激活

我在RHEL上运行Phusion Passenger,托pipe一个Rails应用程序。 我可以在Apache启动时使用PassengerPreStart设置成功启动一个乘客实例,但只有当我使用apachectl start启动Apache apachectl start 。 如果我使用service httpd start的RHEL约定启动Apache,则不会执行PassengerPreStart 。 也就是说,没有乘客实例在Apache启动时加载。 我比较了两个脚本( apachectl和service httpd脚本)的差异,但找不到任何不同的行为之间的差异。 我可以编写一个init脚本来使用apachectl来启动Apache,但是首先我想问一下,如果有人看到apachectl和service http如何与Apache模块交互,特别是使用Passenger的PassengerPreStart设置并解释它的话。

在apache上的乘客挂起占用所有的应用程序进程与非常高的CPU IO等待

我正在Apache / Passenger下的服务器上运行一组rails应用程序。 其中一个应用程序不断进入状态,机器的负载变得非常高,机器变得没有响应,顶部显示大部分CPU时间花在IO等待上,但没有一个进程花费太多时间。 iowait和ifwait没有显示任何exception。 乘客状态是最有趣的,它显示了我怀疑是应用程序(下面的输出中的应用程序x)的每个应用程序进程被占用1个会话。 我可以杀死所有这些进程和乘客replace它们对服务器负载没有影响,只有当我重新启动Apache或服务器加载恢复正常。 这是输出: ———– General information ———– max = 20 count = 20 active = 16 inactive = 4 Waiting on global queue: 22 ———– Application groups ———– /home/A: App root: /home/A * PID: 5379 Sessions: 0 Processed: 6 Uptime: 3m 42s /home/X: App root: /home/X * PID: 5604 Sessions: […]

Nginx的除了根以外的Rails应用程序给404错误

我有一个Ubuntu 12.04 LTS VPS服务器,用Nginx提供静态网站。 我想build立一个可以从子文件夹“foo”访问的rails应用程序。 我使用Passenger来服务rails应用程序 这就是我configurationNginx的方法: worker_processes 1; events { worker_connections 1024; } http { passenger_root /home/akarki/.rvm/gems/ruby-1.9.3-p429/gems/passenger-4.0.5; passenger_ruby /home/akarki/.rvm/wrappers/ruby-1.9.3-p429/ruby; server_names_hash_bucket_size 64; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_types text/plain application/xml text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss; charset UTF-8; error_log /opt/nginx/logs/file.log warn; server { listen 80; server_name […]

用Passenger切换ruby版本,出现错误

我最近从2.2.5切换到2.1.5,注意到我试图编译和下载这样的解释器: [ 2015-10-25 11:15:15.3328 8841/b6ad5b40 age/Cor/CoreMain.cpp:793 ]: Disconnecting long-running connections for process 16579, application /var/apps/app/public (production) App 17117 stdout: App 17117 stderr: –> Compiling passenger_native_support.so for the current Ruby interpreter… App 17117 stderr: App 17117 stderr: (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable) App 17117 stderr: App 17117 stderr: –> Downloading precompiled passenger_native_support.so for the current Ruby interpreter… […]

NGINXredirectHTTPS部分工作

我尝试在https上redirect所有stream量。 我使用AWS,乘客+ NGINX。 到目前为止,我的智能手机(Android),铬最后的版本: http : //server_name.comredirect到https … 在家里我的电脑铬最后版本reddirect以及。 但在其他计算机上,它不会redirect。 当然,无处不在的https://server_name.com工作时正确访问。 这里是我的conf: #user adrien; events { worker_connections 768; # multi_accept on; } http { passenger_root /home/ubuntu/.rvm/gems/ruby-2.3.1/gems/passenger-5.0.30; passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1/wrappers/ruby; server_tokens off; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://bam.nr-data.net https://js-agent.newrelic.com 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' […]

在Rails上运行多个ruby web应用程序,而无需一直修改/添加<Directory>

我想要做的是在一个Apache目录中创build多个Ruby应用程序,当我去http:// localhost / appname时 ,ruby应用程序没有问题就解决了。 不过,我想dynamic地这样做,所以我不必在每次创build新应用程序时在apache.conf中添加一个新的<Directory> 。 我希望它是像Apache中的PHP,你只需要在目录中放置多个应用程序,并且http:// localhost / appname显示应用程序 的apache.conf <VirtualHost *:80> UseCanonicalName Off ServerName localhost ServerAlias localhost ServerAdmin webmaster@localhost VirtualDocumentRoot /var/www/html/*/public ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html/*/public> Require all granted Options Indexes FollowSymlinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 如果我将文档根目录和目录设置为应用程序的完整path,那么一切正常,但是我想使其成为dynamic的。 这甚至有可能吗? 如果是这样,你能提供一些帮助吗? 谢谢!

在Nginx / Passenger中托pipe的Ruby / Rails应用程序的头文件中设置环境variables

我为Redmine安装了一个服务器,使用Nginx / Passenger运行。 服务器还托pipeGitlab,并且进展顺利。 我为Redmine提供了一些SSO插件(我发现并安装了这个插件),它需要一个环境variables来填充用户名:这是一个棘手的问题。 到目前为止,我可以分开 : 从X-Forwarded-User头获取用户名 自动连接到Redmine传递用户名作为一个常数值 自动连接到Redmine传递正确的用户名作为一个常数值testing当前转发的值=>这是丑陋的,需要做每个现有的用户testing 但我不能直接设置用户名与转发的值,它看起来像$ http_x_forwarded_uservariables不被评估… 有一个很好的解决scheme吗? 我目前的Nginx / Passengerconfiguration: upstream gitlab-workhorse { server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0; } server { listen 0.0.0.0:80; listen [::]:80 ipv6only=on default_server; server_name server.example.com server_tokens off; ## Don't show the nginx version number, a security best practice root /opt/gitlab/embedded/service/gitlab-rails/public; location / { proxy_read_timeout 300; proxy_connect_timeout 300; […]