AWS Elastic Beanstalk 上的 mod_xsendfile

AWS Elastic Beanstalk 上的 mod_xsendfile

我意识到没有 yum 包mod_xsendfile(这是一个很大的遗憾),所以我想知道是否可以通过.ebextensions配置来添加它,因为它需要下载和编译。

是否仅通过.ebextensions配置就可以做到这一点,还是我需要创建和维护自定义 AMI 才能使其在 Elastic Beanstalk 上运行? 如果可能的话,如何在没有 yum 包的情况下配置它?

答案1

除了您自己的答案之外:

除了 httpd24-devel,您还需要安装 gcc,否则 apxs -cia mod_xsendfile.c 将失败。

答案2

值得庆幸的是,我设法仅使用配置就完成了配置.ebextensions。我创建了以下配置文件...

packages:
    yum:
        httpd24-devel: []
commands:
    xsendfile_download: 
        command: wget https://tn123.org/mod_xsendfile/mod_xsendfile.c
        cwd: /home/ec2-user
        ignoreErrors: true
    xsendfile_install: 
        command: apxs -cia mod_xsendfile.c
        cwd: /home/ec2-user
        ignoreErrors: true

第一的,这确保正确版本的 httpd-devel 与 apxs 一起安装,这是编译 Apache 扩展所必需的。

由于apxs默认情况下不包含在任何 EB 版本的 Amazon Linux 中,并且由于 php 5.6 的库存 AMI 包含 Apache 2.4,因此我们必须确保使用 httpd24 的特定 yum 包。

下一个,我们运行两个自定义命令:第一个命令下载 mod_xsendfile到主目录(始终位于/home/ec2-user/Amazon Linux 上),而第二个编译它。由于每次创建实例时都会发生这种情况,因此mod_xsendfile在 apache 启动时始终可以使用。

事实证明这实际上是一个非常简单的解决方案,它可以用于确保每次在 AWS Elastic Beanstalk 上创建新实例时下载和编译任何 Apache 包。

笔记:如果您想要使其更具容错性(例如,如果mod_xsendfile在启动实例时链接处于离线状态),您可以将文件托管在其他地方,例如 S3,然后从那里加载它。

但这至少可以让它工作...不需要自定义 AMI!

相关内容