我正在尝试使用大厨来配置带有nginx的centos webserver。我想使用http_auth_request_module和headers_more_module。我的角色是这样的:
{
"name" : "cms-aws",
"description" : "a role to deploy cms to aws",
"default_attributes" : {
"nginx" : {
"source" : {
"modules" : ["nginx::http_auth_request_module","nginx::headers_more_module"]
}
}
},
"run_list" : [
"runit",
"python",
"build-essential",
"gunicorn",
"nginx::source",
"openssl",
"yum",
"git",
"yum-epel",
"my-custom-cookbook",
"supervisor"
]
}
但是,当我在服务器上运行nginx -V时,这些模块没有列出,当我在conf文件中使用auth_request指令时,nginx会抱怨。
我也尝试过以下属性,但是当我运行它时,厨师找不到这些食谱:
"default_attributes" : {
"nginx" : {
"source" : {
"modules" : ["http_auth_request_module","headers_more_module"]
}
}
},
编辑: 所以我已经确定我运行它的AMI已经安装了nginx。因此,当systemctl启动nginx时,它会触及预先存在的那个,而不是一个厨师安装的。我尝试修改我的属性:
"default_attributes" : {
"nginx" : {
"source" : {
"modules" : ["nginx::http_auth_request_module","nginx::headers_more_module"]
},
"binary" : "/usr/sbin/nginx"
}
},
但是主厨仍然会在/opt/nginx-1.6.2/sbin/nginx
安装nginx,知道如何解决这个问题吗?
编辑编辑:关闭此AMI上没有开箱即用的nginx,因此cookbook会在/usr/sbin/nginx
安装它,但是当我运行nginx -V
时,未列出所需的模块。当我运行/opt/nginx-1.6.2/sbin/nginx -V
时,它会列出所请求的模块。
答案 0 :(得分:2)
即使从包中安装了nginx,nginx cookbook也会创建一个从/opt/nginx-1.6.2/sbin/
启动nginx的runit服务。您可以使用runit的sv command
sudo sv status nginx
sudo sv up nginx
在chef中从源代码编译nginx时,强行删除同一配方中的所有现有包是有意义的:
package("nginx") { action :remove }
由于您的nginx似乎编译正确(/opt/nginx-1.6.2/sbin/nginx -V
产生了正确的结果),上述内容应足以解决问题。