Apache 设置

Apache 设置

我想在 Ubuntu 16.04 上使用以下方法安装带有 PHP 7.0 的 ApachePuppet Labs Apache 模块

  1. 按照文档模块支持Ubuntu 16.04
  2. 有一个与 PHP 7.0 支持相关的票证并且有一个被接受的合并请求它应该添加 PHP 7.0 支持。
  3. 看起来合并中提供的修复不包含在模块 1.9.0 版本中。

问题是

  1. 有什么方法可以使用建议的修复并安装带有 PHP 7.0 的 Apache?
  2. 我应该在清单中写什么?

以下代码(来自 Puppet 清单)在 Ubuntu 16.04 上不起作用

class { 'apache':
  mpm_module    => 'prefork',
}
include apache::mod::php

我遇到了以下错误

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install libapache2-mod-php5' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Package libapache2-mod-php5 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libapache2-mod-php5' has no installation candidate
Error: /Stage[main]/Apache::Mod::Php/Apache::Mod[php5]/Package[libapache2-mod-php5]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install libapache2-mod-php5' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Package libapache2-mod-php5 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libapache2-mod-php5' has no installation candidate

我尝试过了配置 FastCGI 服务器来处理 PHP 文件但这也失败了,错误信息几乎相同。该模块还不了解 PHP 7.0。

答案1

刚刚遇到类似的问题,显然 Pupplelabs Apache mod 现在允许您将 PHP 版本作为参数传递:

  class { 'apache::mod::php':
    php_version => '7',
  }

答案2

我也遇到了同样的问题。我使用的是旧版本的模块puppetlabs-apache。我下载了当前版本(1.10.0这个漏洞(于 2016 年 5 月 20 日发布)现在已经修复,可以正常运行。

看一下文件清单/params.pp

if ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '16.04') < 0) or 
   ($::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '9') < 0) {
  # Only the major version is used here
  $php_version = '5'
} else {
  # major.minor version used since Debian stretch and Ubuntu Xenial
  $php_version = '7.0'
}

如您所见,它将默认为 Ubuntu 16.04 选择 PHP 7。您甚至不需要设置php_version => 7.0(如@starchx 所建议)。

答案3

我认为它看起来更像这样:

Apache 设置

class { 'apache':
    mpm_module => 'prefork'
  }
     apache::listen { '80': }
     apache::listen { '443': }

加载额外的 Apache 模块

class { 'apache::mod::rewrite': }
class { 'apache::mod::status': }
class { 'apache::mod::php': }

您可能还需要:

package { 'php7.0':
ensure => 'installed',
}

package { 'libapache2-mod-php7.0':
ensure => 'installed',
}

package { 'libapache2-mod-php':
ensure => 'installed',
}

希望这能让你更接近目标。

相关内容