【问题标题】:Is it possible to use AWS Beanstalk's .ebextensions config to install mod_pagespeed Apache module?是否可以使用 AWS Beanstalk 的 .ebextensions 配置来安装 mod_pagespeed Apache 模块?
【发布时间】:2013-04-10 14:16:45
【问题描述】:

我将 AWS Beanstalk 用于我的 Django/Python 应用程序,并且我想使用 Google 的 mod_pagespeed 模块。是否可以使用 .ebextensions/.config 文件安装和运行 mod_pagespeed?

【问题讨论】:

    标签: apache amazon-web-services amazon-elastic-beanstalk mod-pagespeed


    【解决方案1】:

    下载包

    将 rpm 添加到您的 ebextensions 目录中

    在 .ebextensions 目录中创建一个 .config 文件

    像这样向配置文件添加命令:

    container_commands:
        01-command:
            command:        rm -rf /pagespeed/ebextensions
    
        02-command:
            command:        mkdir -p /pagespeed/ebextensions
    
        03-command:
            command:        cp -R .ebextensions/* /pagespeed/ebextensions/
    
        04-command:
            command:        rpm -U /pagespeed/ebextensions/mod-pagespeed.rpm
    

    确保命令如图所示缩进,没有制表符,否则将不起作用。

    用“mod-pagespeed.rpm”替换实际的 rpm 文件名。

    【讨论】:

    • 这会确保它也被启用吗?
    • rpm会为你安装.conf文件,如果你发现需要重启apache,在.config文件中添加另一个命令“apachectl restart”
    • 我建议将命令重写为 bash 脚本,因为 container_commands 在您部署时随时运行。 Bash 脚本可以检查它是否第一次运行,然后安装必要的更改。这将帮助您减少部署期间的停机时间。
    • @Vadim911 你的说法似乎是矛盾的——“部署”就是这样(第一个);这是 beanstalk 在自动缩放行为中使用的,因此 .ebextensions 最常在初始部署之外使用。你能澄清你的帖子吗?对我来说,man2xxl 似乎是正确的目标。
    【解决方案2】:

    好的,所以我想添加查理史密斯的答案。我建议您确保已打开以下各项。

    1. mod_deflate - 您可能想要压缩您的 html、css、xml 和 javascript。
    2. 如果您使用 CDN(例如 AWS CloudFront),请在 Apache.conf 中启用重写域过滤器
    3. 为图像和 css 设置一个简短的缓存控制,以便在您打开 extend_cache 过滤器时 pagespeed 能够扩展缓存。
    4. 我也喜欢 rewrite_javascript、dns_prefetch、collapse_whitespace 和 combine_javascript 过滤器。

    这里是 GitHub Gists,向您展示了它是如何完成的。

    【讨论】:

      【解决方案3】:

      谢谢各位!在您回答@man2xxl 之后,我得到了很好的效果。

      您不必弄乱 /pagespeed/extensions 目录,beantalk .ebextensions 配置可以简单地是:

      packages:
        yum:
          at: []
      
      10_setup_apache_for_mod_pagespeed:
        command: "cp enable_mod_pagespeed.conf /etc/httpd/conf.d"
      20_install_mod_pagespeed:
        command: rpm -U -iv --replacepkgs mod-pagespeed-*.rpm
      30_clear_mod_pagespeed_cache:
        command: touch /var/cache/mod_pagespeed/cache.flush
      

      【讨论】:

      • 这假设你的 repo 根目录中包含 mod_pagespeed rpm。
      【解决方案4】:

      您可以通过 URL 安装软件包。因此,您不必下载和分发 RPM。这样的工作:

      packages:
          rpm:
              pagespeed: https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
      files:
          "/etc/httpd/conf.d/zzzz-pagespeed-options.conf":
              mode: "00644"
              owner: root
              group: root
              encoding: plain
              content: |
                  # put your pagespeed configuration here
      

      请注意,我将文件命名为 zzzz-pagespeed-options.conf,以便 httpd 服务器最后加载它。

      这样做的另一个好处是你真的不需要包含任何命令或担心复制文件 并维护 .ebextensions 文件夹中的文件。您只需更新 .config 文件中的文件条目。

      【讨论】:

        猜你喜欢
        • 2015-02-18
        • 2021-02-01
        • 2017-12-08
        • 2018-07-07
        • 2013-06-14
        • 2020-08-27
        • 2018-06-05
        • 2011-05-05
        相关资源
        最近更新 更多