Apache 继续存在于 chef 实例中

Posted

技术标签:

【中文标题】Apache 继续存在于 chef 实例中【英文标题】:Apache continues to exist in a chef instance 【发布时间】:2017-07-04 04:51:15 【问题描述】:

我目前正在 vagrant 上运行 chef kitchen 来测试我的自定义食谱,以供以后在 AWS OpsWorks 中使用。

由于某种原因,nginx 无法启动((98:地址已在使用)),因为 apache2 服务在我的配方中启动 nginx 之前开始运行。令人困惑的是我没有指定要安装的 apache2。然而,我已经尝试在我的 nginx 开始配方之前添加它。但无济于事。 我曾多次尝试销毁我的流浪机器,但 apache2 仍然存在。

我真的对这种行为感到困惑,如果有人知道为什么会发生这种情况,我将不胜感激。

vagrant 机器运行的是 ubuntu 16.04

recipes/setup.rb

...
package "apache2" do
    action :purge
end
service "apache2" do
    supports :status => true
    action :stop
    action :disable
    retries 5
end
# enable the server block we just created
    nginx_site 'api' do
    action :enable
    notifies :reload, 'service[nginx]'
end

元数据.rb

...
version '0.1.0'
depends 'apt', '~> 6.0'
depends 'locale', '~> 2.0.0'
depends 'php', '~> 2.2.0'
depends 'chef_nginx', '~> 5.0.7'
depends 'application', '~> 5.1.0'

Berksfile.lock

DEPENDENCIES
  api
    path: .
    metadata: true

GRAPH
  application (5.1.0)
    poise (~> 2.4)
    poise-service (~> 1.0)
  apt (6.0.0)
  build-essential (8.0.0)
    mingw (>= 1.1)
    seven_zip (>= 0.0.0)
  chef_nginx (5.0.7)
    build-essential (>= 0.0.0)
    compat_resource (>= 12.16.3)
    ohai (>= 4.1.0)
    runit (>= 1.6.0)
    yum-epel (>= 0.0.0)
    zypper (>= 0.0.0)
  compat_resource (12.16.3)
  iis (5.0.5)
    windows (>= 1.34.6)
  locale (2.0.0)
  mingw (1.2.5)
    compat_resource (>= 12.16.3)
    seven_zip (>= 0.0.0)
  api (0.1.0)
    application (~> 5.1.0)
    apt (~> 6.0)
    chef_nginx (~> 5.0.7)
    locale (~> 2.0.0)
    php (~> 2.2.0)
  mysql (8.2.0)
  ohai (4.2.3)
    compat_resource (>= 12.14.7)
  packagecloud (0.2.5)
  php (2.2.0)
    build-essential (>= 0.0.0)
    iis (>= 0.0.0)
    mysql (>= 6.0.0)
    xml (>= 0.0.0)
    yum-epel (>= 0.0.0)
  poise (2.7.2)
  poise-service (1.4.2)
    poise (~> 2.0)
  runit (3.0.5)
    packagecloud (>= 0.0.0)
    yum-epel (>= 0.0.0)
  seven_zip (2.0.2)
    windows (>= 1.2.2)
  windows (2.1.1)
    ohai (>= 4.0.0)
  xml (3.1.1)
    build-essential (>= 0.0.0)
  yum-epel (2.1.1)
    compat_resource (>= 12.16.3)
  zypper (0.3.0)

【问题讨论】:

任何运行日志? @Tensibai 这是输出:gist.github.com/carlblock/ae00757b86a70ffb2893f09d70601393 我认为你应该在 php 之前安装 nginx 以避免降低依赖关系。听起来 apt 与 php 一起关闭了默认的 http 服务器。但这只是猜测。 @Tensibai 当我在 php.ini 之前添加 nginx 来安装时,这似乎起到了作用。我之前也有同样的怀疑,我查看了php包的依赖关系。 apache/httpd 无处可寻。但是,由于依赖项有自己的依赖项等等。我猜它隐藏在某个深处。 【参考方案1】:

来自@Tensibai 的评论线程,他建议在 PHP 包之前安装 nginx。这似乎是解决这个问题的方法。

@Tensibai

我认为您应该在 php 之前安装 nginx 以避免降低依赖项。听起来 apt 与 php 一起关闭了默认的 http 服务器。但这只是猜测

【讨论】:

以上是关于Apache 继续存在于 chef 实例中的主要内容,如果未能解决你的问题,请参考以下文章

Chef/OpsWorks:实例在新发布的 Windows 食谱版本上失败

与AWS私有实例/ EC2实例的Chef-Server连接

保存数据返回后可以继续编辑

用属性实例化一个已经存在于数据库中的雄辩模型?

Chef - 如何重新启动 VM 并继续执行操作

如何优雅地检查对象/实例/变量的存在,如果它存在于python中,同时将其分配给变量?