【问题标题】:How to install specific version of PHP from source alongside Apache using Chef?如何使用 Chef 从源代码和 Apache 一起安装特定版本的 PHP?
【发布时间】:2014-05-08 10:48:45
【问题描述】:

我正在使用 Chef 的社区食谱,尤其是 apt、php 和 apache2 食谱。我在节点上运行的角色:

name "development"

# list of recipes to run
run_list(
    "recipe[apt]",
    "recipe[php::source]",
    "recipe[apache2]",
    "recipe[apache2::mod_php5]",
    "recipe[apache2::mod_rewrite]",
)

# attributes setup
override_attributes(
    "php" => {
        "version" => "5.4.27",
        "checksum" => "3080690bbb14d798a511e325a81a6f32"
    }
)

如您所见,我想从源代码安装 PHP 5.4.27。如果我只运行php::source,我确实有 PHP 5.4.27。但是,当我也运行 apache2 食谱时,apache2::mod_php5 会从存储库安装另一个 PHP 5.3(Ubuntu 12.04 在其存储库中有 PHP 5.3)。我猜这个包安装了libapache2-mod-php5,它依赖于php5包,因此再次安装了PHP。

我不想要两个版本的 PHP。我只想要一个; PHP 5.4.27。适用于 Apache 和 CLI。我可以以某种方式指示 apache 食谱使用 PHP 5.4.27 吗?

【问题讨论】:

    标签: php apache chef-infra vagrant


    【解决方案1】:

    如果您使用 apache2::mod_php5 配方,则不会。

    如果您查看the recipe,您会发现它安装了libapache2-mod-php5 包,该包将php5-common 作为依赖项。

    如果你想避免引入这个,你必须为 php 模块编写自己的配方,可能从源代码编译模块。

    【讨论】:

    • 这个答案依赖于不再存在的外部资源。
    【解决方案2】:

    您也可以通过自己创建一个包含特殊 php 安装文件的说明书来做到这一点

    【讨论】:

    • 这不是一个完全成熟的答案,只是更多的随机评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2012-02-12
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2018-01-29
    相关资源
    最近更新 更多