介绍
目前大约有100名木偶代理人连接到木偶大师。 有时需要一段时间才能对代理商提供的木偶大师进行修改。 一些信息已经被发现Passenger与Web服务器相结合,例如Apache2或Nginx可以加速这个过程。 首先,根据本文档 ,强烈build议在生产环境中使用此类function。
目标
其目的是安装Nginx,并使用passenger-install-nginx-module在CentOS7上实现Phusion Passenger支持,以加速识别由Puppet-agent在Puppetmaster上执行的更改。
尝试
尝试1
sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-nginx-module --auto --auto-download被执行,并遵循安装步骤。
尝试2
由于在尝试1期间未安装Nginx服务,因此使用yum -y install nginx进行yum -y install nginx 。
尝试3
谷歌search: "[emerg] unknown directive passenger_enabled" 表示,nginx编译没有Phusion乘客的支持 。 在这种情况下,这应该是错误的,因为passenger-install-nginx-module已经运行,并且尝试1期间的安装输出表示应该已经安装了Nginx。
尝试4
/etc/nginx/nginx.conf
passenger_root /usr/local/share/gems/gems/passenger-4.0.56; passenger_ruby /usr/bin/ruby;
/etc/nginx/conf.d/puppet.conf
passenger_enabled on;
尝试5
要testing是否使用其他Web服务器来执行此问题,请执行sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-apache2-module 。
预期结果
执行passenger-install-nginx-module并完成安装步骤安装Nginx。 可以启动Nginx服务,并包含Phusion-Passenger支持。 检查端口8140是否处于LISTEN状态应该是Nginx启动Puppetmaster的结果。
目前的结果
执行passenger-install-nginx-module并完成安装步骤不会安装Nginx,而输出表明相反。
Nginx with Passenger support was successfully installed. Please edit your Nginx configuration file (probably /opt/nginx/conf/nginx.conf), and set the passenger_root and passenger_ruby configuration options in the 'http' block, like this: http { ... passenger_root /usr/local/share/gems/gems/passenger-4.0.56; passenger_ruby /usr/bin/ruby; ... }
用yum安装Nginx也不行。 即使再次执行passenger-install-nginx-module ,问题仍然存在。
[vagrant@vm-one ~]$ sudo systemctl status nginx.service -l nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled) Active: failed (Result: exit-code) since Thu 2015-01-01 01:55:56 UTC; 2min 19s ago Process: 7963 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/ SUCCESS) Process: 7935 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 10814 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE) Main PID: 7937 (code=exited, status=0/SUCCESS) Jan 01 01:55:56 vm-one.local systemd[1]: Starting The nginx HTTP and reverse proxy server... Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: [emerg] unknown directive "passenger_enabled" in /etc/nginx/conf.d/puppet.conf:5 Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: configuration file /etc/nginx /nginx.conf test failed Jan 01 01:55:56 vm-one.local systemd[1]: nginx.service: control process exited, code=exited status=1 Jan 01 01:55:56 vm-one.local systemd[1]: Failed to start The nginx HTTP and reverse proxy server. Jan 01 01:55:56 vm-one.local systemd[1]: Unit nginx.service entered failed state.
尝试安装具有Passenger支持的其他Web服务器会导致:
* Checking for Apache 2... Found: no * Checking for Apache 2 development headers... Found: no
这表明passenger-install-apache2-module与passenger-install-nginx-module似乎是检查web服务器是否已经安装。
我是Phusion客运作者。 你对Nginx有一个基本的误解。
首先,Nginx不支持dynamic加载模块。 这意味着扩展Nginx的唯一方法就是从头开始重新编译Nginx,并包含某些模块。
在你的思维模型中,你似乎认为passenger-install-nginx-module在某处安装了一个模块文件,而yum install nginx会在某处安装一个Nginx实例,然后加载Passenger模块。 这是错误的。 passenger-install-nginx-module从头开始编译一个全新的Nginx,启用Passenger模块并在其中静态链接。 根据你给它的参数(最显着的是安装前缀),你将会得到一个完全独立的Nginx安装 – 一个完全独立于你用yum安装的那个。
这在Passenger wiki上有广泛的记载: 为什么乘客不能扩展我的Nginx? 。 这不是我们 – 乘客的作者 – 决定的东西。 这就是Nginx本身如何工作的原理,我们不能改变这一点。 安装任何 Nginx模块就像这样。 与Apache模块形成鲜明对比,Apache模块的工作方式与您认为的一致。
其次,你似乎假设安装Nginx服务是Passenger所关心的。 这是错误的。 服务定义是完全平台特定的,甚至分发特定的附加组件,由分发的打包商添加。 服务定义既不包含在Nginx源代码中,也不由Passenger安装。 因此,如果你从源代码安装Passenger / Nginx(而不是RPM),那么你必须自己安装服务定义。 手册中有关于此的一节。