Vagrant & Puppetlabs/apache 設定兩個 MPM

Vagrant & Puppetlabs/apache 設定兩個 MPM

目前,我正在嘗試將具有 Puppet 模組的 Vagrant 機器更新為 PHP7,當然還有更新的模組。然而,自從將 puppetlabs/apache 模組更新到版本 3.0.0 後,它在嘗試安裝libapache2-mod-php7.0.

我已經能夠追蹤到原因了。由於某種原因,puppetlabs/apache 模組在::apache::mod::php呼叫該類別時設定兩個 MPM 。它將兩個事件設定為預分叉 MPM。設定 prefork 的原因是因為 Puppet 模組要求您在使用 PHP 時載入 prefork 或 itk 模組。當我定義 prefork 或 itk 時,它也會因為某種原因載入事件 MPM。到目前為止,我是這樣呼叫 apache 模組的:

class { '::apache':
    default_vhost    => false,
    mpm_module       => 'false',
    server_signature => 'Off',
}

class { '::apache::mod::ssl': }
class { '::apache::mod::prefork': }
class { '::apache::mod::php': }
class { '::apache::mod::rewrite': }
class { '::apache::mod::headers': }

當我將 mpm_module 設定為 itk 或 prefork 以外的任何值時,它會產生錯誤 itk 或 prefork 是強制性的。當我刪除::apache::mod::preforkmpm_module 設定並將其設為 prefork 時,會發生與目前配置相同的情況。

當我在安裝失敗後 ssh 進入 Vagrant 機器並刪除檔案中的 LoadModule 行時/etc/apache2/modules-enabled/event.load,一切都按預期進行。我不知道為什麼它要載入事件 MPM,因為雙 MPM 載入導致了衝突。 Apache 不知道要載入哪個 MPM,因此安裝 libapache2-mod-php7.0 時失敗。

Puppet 也沒有輸出顯示 event.conf/event.load 檔案已創建,只有 prefork 檔案。

Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-available/prefork.load]/ensure: defined content as '{md5}01b33d643f63126888cf702689f1f66d'
Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-enabled/prefork.conf]/ensure: created
Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-enabled/prefork.load]/ensure: created

我在 Debian Stretch x64 上運行它,並使用最新穩定版本的 Vagrant、VirtualBox、Puppet 和 Apache/2.4.25。

答案1

對於有興趣的人,我在 Puppetlabs 的 Jira 中打開了一份錯誤報告,正如預期的那樣,它被證明是一個真正的錯誤。當拉取請求通過時,它應該在下一個版本中修復:https://tickets.puppetlabs.com/browse/MODULES-6677

我想這可以解決這個問題。

相關內容