현재 저는 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 이벤트도 로드됩니다. 현재로서는 이것이 아파치 모듈을 호출하는 방법입니다:
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가 필수라는 오류가 발생합니다. mpm_module 설정을 제거 ::apache::mod::prefork
하고 prefork로 설정하면 현재 구성과 동일한 현상이 발생합니다.
설치가 실패한 후 Vagrant 시스템에 SSH로 연결하고 파일에서 LoadModule 줄을 제거하면 /etc/apache2/modules-enabled/event.load
모든 것이 예상대로 작동합니다. 이중 MPM 로드로 인해 충돌이 발생하므로 이벤트 MPM을 로드하는 이유를 알 수 없습니다. Apache는 어떤 MPM을 로드할지 모르기 때문에 libapache2-mod-php7.0 설치에 실패합니다.
event.conf/event.load 파일이 생성되었음을 보여주는 Puppet 출력도 없고 프리포크 파일만 생성되었습니다.
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
저는 Vagrant, VirtualBox, Puppet 및 Apache/2.4.25의 최신 안정 릴리스와 함께 Debian Stretch x64에서 실행하고 있습니다.
답변1
관심이 있는 분들을 위해 Puppetlabs의 Jira에서 버그 보고서를 열었고 예상대로 실제 버그로 판명되었습니다. 끌어오기 요청이 진행되면 다음 릴리스에서 수정되어야 합니다.https://tickets.puppetlabs.com/browse/MODULES-6677
나는 그것이 이 문제를 해결한다고 생각한다.