030*_*030 2 installation nginx phusion-passenger systemctl centos7
介绍
目前大约有 100 个 Puppet 代理连接到 Puppetmaster。有时,代理需要一段时间才能发现 Puppetmaster 上实施的更改。一些信息已经发现,Passenger 与 Web 服务器(例如 Apache2 或 Nginx)结合可以加速这个过程。最重要的是,根据本文档,强烈建议在生产环境中使用此类功能。
目的
目的是在 CentOS7 上安装 Nginx 并实现 Phusion 乘客支持,passenger-install-nginx-module
以加速识别 Puppet-agents在 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
.
尝试 3
谷歌搜索:"[emerg] unknown directive passenger_enabled"
表示 nginx 是在没有 Phusion Passenger 支持的情况下编译的。在这种情况下,这应该是错误的,因为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;
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/conf.d/puppet.conf
passenger_enabled on;
Run Code Online (Sandbox Code Playgroud)
尝试 5
为了测试这个问题是否也发生在另一个 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 状态应该结果为 true,因为 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;
...
}
Run Code Online (Sandbox Code Playgroud)
使用 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.
Run Code Online (Sandbox Code Playgroud)
尝试安装另一个带有乘客支持的 Web 服务器会导致:
* Checking for Apache 2...
Found: no
* Checking for Apache 2 development headers...
Found: no
Run Code Online (Sandbox Code Playgroud)
这表明passenger-install-apache2-module
相比之下passenger-install-nginx-module
似乎检查是否已安装 Web 服务器。
我是 Phusion 乘客的作者。你从根本上误解了 Nginx。
首先,Nginx 不支持动态加载模块。这意味着扩展 Nginx 的唯一方法是从头开始重新编译 Nginx,包括某些模块。
在您的心智模型中,您似乎认为在passenger-install-nginx-module
某处安装了一个模块文件yum install nginx
,然后在某处安装了一个 Nginx 实例,然后加载了 Passenger 模块。这是错误的。passenger-install-nginx-module
从头开始编译一个全新的 Nginx,启用乘客模块并在其中静态链接。根据您提供的参数(最明显的是安装前缀),您最终将获得一个完全独立的 Nginx 安装——一个完全独立于您使用 yum 安装的安装。
这在Passenger wiki 中有详细记录:为什么Passenger 不能扩展我的Nginx?. 这不是我们——Passenger 的作者——决定的。这就是 Nginx 本身的基本工作方式,我们无法改变这一点。安装任何Nginx 模块都是这样。它与 Apache 模块形成鲜明对比,Apache 模块按照您认为的方式工作。
其次,您似乎假设安装 Nginx 服务是 Passenger 负责的事情。这是错误的。服务定义完全是特定于平台的,甚至是特定于发行版的附加组件,由发行版的打包者添加。服务定义既不包含在 Nginx 源代码中,也不由Passenger 安装。因此,如果您从源代码(而不是从 RPM)安装Passenger/Nginx,那么您必须自己安装服务定义。手册中有一节介绍了这一点。
归档时间: |
|
查看次数: |
6903 次 |
最近记录: |