AWS opsworks 构建生命周期和亚马逊 Linux

AWS opsworks 构建生命周期和亚马逊 Linux

我最近一直在使用 Opsworks,GIT 集成在我的服务器资产中部署应用程序给我留下了深刻的印象。但是由于外部库的原因,我需要使用 PHP 5.4 > Amazon Linux 产品已安装 PHP5.3。现在,我基于 Amazon Linux 创建了一个单独的 ec2 实例并升级了 PHP 版本,我实际上使用了自定义用户数据来实现这一点。然后我将其保存为自定义 AMI。当我将其设置为 opsworks 中用于实例的 AMI 时,启动服务器时出现错误,这是由于 Apache 等版本冲突引起的。所以看起来我的 AMI 几乎被忽略了,或者它构建了我的 AMI 并使用了自定义数据,然后尝试运行 CHEF 配方。然后我相信实际上可能是 Chef 配方未能安装它们需要的内容,因此出现错误。

我尝试对默认使用 PHP 5.5 的 Ubuntu AMI 做同样的事情,但我在尝试为我的应用程序目录启用 mod_rewrite 时遇到了单独的问题。虽然我正在尝试解决这个问题以及解决我在 Amazon Linux AMI 上遇到的问题

所以我的问题是,Chef 配方是否在我的 user_data 之后运行?或者理论上我是否能够卸载 Chef 在我的自定义 user_data 中安装的所有内容,然后安装我的实际依赖项?我目前对 Chef 还不够熟悉,无法尝试编辑默认的 PHP-APP-Server 配方来执行我需要的操作(我也不确定我需要从 AWS GitHub repo 中获取什么才能做到这一点)

或者有人有更好的想法吗?

答案1

我相信 PHP 5.5 现在可以在 AL 存储库中作为 php55 使用。

您可以在此处通过厨师食谱覆盖 PHP 包:https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.4/mod_php5_apache2/attributes/default.rb#L19

您可以使用自定义 JSON 或使用属性文件来覆盖它:http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-components-attributes.html

不过,您很可能需要先添加自定义配方来删除旧版本的 php,例如这里:在 Amazon Linux 上使用 yum 更新 PHP

答案2

根据我的理解,您需要修改 Chef 配方(即学习一些 Chef)才能更改安装的 PHP 版本。否则,您会继续遇到问题,即使您安装了不同的 PHP 版本,Chef 也会自动尝试将其恢复,因为这是它应该做的。

相关内容