nginx:[emerg]“passenger_root”指令中的参数数量无效

Posted

技术标签:

【中文标题】nginx:[emerg]“passenger_root”指令中的参数数量无效【英文标题】:nginx: [emerg] invalid number of arguments in "passenger_root" directive 【发布时间】:2014-01-16 09:58:03 【问题描述】:

我第一次尝试在 EC2 上设置 Rubber (complete_passenger_nginx_postgresql)。我更改了配置文件中的一系列设置,以使其适用于不同的 AMI(Ubuntu 12.04.3 LTS - ami-a73264ce(64 位))、Ruby 2.1.0、Passenger 4.0.29 和 Nginx 1.4.4 . 我几乎让它工作了,但是在启动 Nginx 时它失败了,并出现以下错误:

nginx: [emerg] invalid number of arguments in "passenger_root" directive in /etc/nginx/nginx.conf:45

rubber-passenger_nginx.yml 的“passenger_root”代码如下:

passenger_lib: "#passenger_root/ext/nginx"

知道我应该改变什么才能让它工作吗?

【问题讨论】:

请包含您的 /etc/nginx/nginx.conf: 第 45 行 这里:/usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.29;,这里是第 44 到 46 行:passenger_root /usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/passenger-4.0.29 /usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.29; passenger_ruby /usr/local/rubies/2.1.0/bin/ruby; 【参考方案1】:

就我而言,我在根目录声明的末尾缺少 ;

错误:

root "/directory/with double quotes/will work"

解决方案:

root "/directory/with double quotes/will work";

【讨论】:

【参考方案2】:

您的 /etc/nginx/nginx.conf 文件中有错误。

换行:

passenger_root /usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static‌​/passenger-4.0.29
/usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.29;
passenger_ruby /usr/local/rubies/2.1.0/bin/ruby;

进入:

passenger_root /usr/local/rubies/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.29;
passenger_ruby /usr/local/rubies/2.1.0/bin/ruby;

【讨论】:

谢谢。是的,确实你是对的,但问题有点复杂。事实上,在文件“rubber-passenger_nginx.yml”中,乘客根是用以下字符串推断出来的:passenger_root: "#bash -l -c 'find #ruby_path -namepassenger-#passenger_version'.strip" 所以我用硬编码路径替换它。这不是一个理想的解决方案,但确实有效。后来我还有其他问题需要解决,但我还没有完成。由于要写的内容很多,我将发布一个博客链接,在其中分享我的痛苦和解决方案,希望:) 谢谢。 @BenKass 我知道这是事后诸葛亮,但我能够通过在乘客根目录的计算中添加一个简单的 grep 来解决这个问题,以便它只返回 gem 路径而不是包装的扩展路径。乘客根:“#bash -l -c 'find #ruby_path -name passenger-#passenger_version | grep \\'gems/passenger\\''.strip”

以上是关于nginx:[emerg]“passenger_root”指令中的参数数量无效的主要内容,如果未能解决你的问题,请参考以下文章

nginx - nginx:[emerg] bind()到[::]:80失败(98:地址已经在使用中)

启动Nginx报错nginx: [emerg] getpwnam(

Nginx 启动提示 [emerg] 配置中没有“事件”部分

Nginx 与 Docker : nginx: [emerg] 未知指令“启用”在 /etc/nginx/nginx.conf

nginx: [emerg] getpwnam("nginx") failed

nginx安装 nginx: [emerg] getpwnam(“www”) failed 错误