Vagrant & Puppetlabs/apache 設置兩個 MPM
目前我正在嘗試使用 Puppet 模組將我的 Vagrant 機器更新到 PHP7,當然還有更新的模組。但是,自從將 puppetlabs/apache 模組更新到 3.0.0 版本後,它在嘗試安裝
libapache2-mod-php7.0
.我已經能夠追查到原因。出於某種原因,puppetlabs/apache 模組
::apache::mod::php
在呼叫類時設置了兩個 MPM。它將這兩個事件都設置為 prefork 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::prefork
並將 mpm_module 設置設置為 prefork 時,與目前配置相同。當我在安裝失敗後 ssh 進入 Vagrant 機器並刪除
/etc/apache2/modules-enabled/event.load
文件中的 LoadModule 行時,一切都按預期工作。我不知道它為什麼要載入事件 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 的最新穩定版本。
對於那些感興趣的人,我在 Puppetlabs 的 Jira 中打開了一個錯誤報告,正如預期的那樣,它原來是一個實際的錯誤。當拉取請求通過時,它應該在下一個版本中修復:https ://tickets.puppetlabs.com/browse/MODULES-6677
我想這可以解決這個問題。