如何在 docker apache httpd 中安装 mod_pagespeed
How to install mod_pagespeed in docker apache httpd
我有一个基于 docker 的 apache httpd 服务器。我需要在其中安装 mod_pagespeed
。
出于某些原因,我目前使用的风格是基于 debian 的,而不是基于 alpine 的。
以下是在 debian/ubuntu dist 中安装模块所需的命令列表 - 来自官方网站
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
sudo dpkg -i mod-pagespeed-*.deb
sudo apt-get -f install
这是错误
dpkg: dependency problems prevent configuration of mod-pagespeed-stable:
mod-pagespeed-stable depends on apache2; however:
Package apache2 is not installed.
这很明显,因为没有安装 apache2
服务,只有 httpd
命令有效。
甚至文件夹结构也与常规 debian/ubuntu 安装不同。
我在任何地方都找不到任何 .so
文件,否则我可以将它放在某个目录中并执行 LoadModule
.
我想我需要从源代码进行自定义构建,有什么简单的方法吗?
您可以使用以下 Dockerfile
作为基础:
FROM debian:stretch
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV LANG C
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 wget \
&& wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb -O /tmp/modpagespeed.deb \
&& dpkg -i /tmp/modpagespeed.deb
RUN mkdir -p /var/log/apache2 /var/run/apache2 /var/lock/apache2 \
&& chown www-data:www-data /var/log/apache2 /var/run/apache2 /var/lock/apache2
CMD ["apache2", "-DFOREGROUND"]
EXPOSE 80
构建映像并启动容器,您将收到类似于 X-Mod-Pagespeed: 1.13.35.2-0
的响应 header。
希望对您有所帮助!
@Michael 的大部分回答是正确的,但是对于那些使用默认 docker 的 apache 模块(比如我)的人来说,下面的回答就足够了。
因为 debian 的 apache 安装与 docker apache 的安装不同。 (如果您已经 setup/customised 所有配置并且不能重新定制为 debian 的结构)
我根据该答案构建了 pagespeed 模块,然后将该模块复制到我的安装中。
Docker 文件
FROM debian:stretch as pagespeed
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV LANG C
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 wget \
&& wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb -O /tmp/modpagespeed.deb \
&& dpkg -i /tmp/modpagespeed.deb
FROM httpd:2.4.43
# all these things are my custom configuration. You probably don't need these
COPY --chown=root:www-data ./docker-assets/httpd-custom.conf $HTTPD_PREFIX/conf/httpd.conf
COPY --chown=root:www-data ./docker-assets/httpd-default.conf $HTTPD_PREFIX/conf/extra/httpd-default.conf
COPY --chown=root:www-data ./docker-assets/httpd-vhosts-custom.conf $HTTPD_PREFIX/conf/extra/httpd-vhosts.conf
COPY --chown=root:www-data ./docker-assets/httpd-ssl.conf $HTTPD_PREFIX/conf/extra/httpd-ssl.conf
COPY --chown=root:www-data ./docker-assets/httpd-mpm.conf $HTTPD_PREFIX/conf/extra/httpd-mpm.conf
# pagespeed module adding as custom build here. You may need to change some paths in .load file
COPY --chown=root:www-data ./docker-assets/pagespeed.load $HTTPD_PREFIX/conf/extra/
COPY --chown=root:www-data ./docker-assets/pagespeed.conf $HTTPD_PREFIX/conf/extra/
COPY --chown=root:www-data ./docker-assets/pagespeed_libraries.conf $HTTPD_PREFIX/conf/extra/
# Or directly copy from build stage
# COPY --from=pagespeed --chown=root:www-data /etc/apache2/mods-available/pagespeed.conf $HTTPD_PREFIX/conf/extra/
# COPY --from=pagespeed --chown=root:www-data /etc/apache2/conf-available/pagespeed_libraries.conf $HTTPD_PREFIX/conf/extra/
COPY --from=pagespeed --chown=root:www-data /usr/lib/apache2/modules/mod_pagespeed.so $HTTPD_PREFIX/modules/
COPY --from=pagespeed --chown=root:www-data /usr/lib/apache2/modules/mod_pagespeed_ap24.so $HTTPD_PREFIX/modules/
# pagespeed end
我有一个基于 docker 的 apache httpd 服务器。我需要在其中安装 mod_pagespeed
。
出于某些原因,我目前使用的风格是基于 debian 的,而不是基于 alpine 的。
以下是在 debian/ubuntu dist 中安装模块所需的命令列表 - 来自官方网站
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
sudo dpkg -i mod-pagespeed-*.deb
sudo apt-get -f install
这是错误
dpkg: dependency problems prevent configuration of mod-pagespeed-stable:
mod-pagespeed-stable depends on apache2; however:
Package apache2 is not installed.
这很明显,因为没有安装 apache2
服务,只有 httpd
命令有效。
甚至文件夹结构也与常规 debian/ubuntu 安装不同。
我在任何地方都找不到任何 .so
文件,否则我可以将它放在某个目录中并执行 LoadModule
.
我想我需要从源代码进行自定义构建,有什么简单的方法吗?
您可以使用以下 Dockerfile
作为基础:
FROM debian:stretch
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV LANG C
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 wget \
&& wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb -O /tmp/modpagespeed.deb \
&& dpkg -i /tmp/modpagespeed.deb
RUN mkdir -p /var/log/apache2 /var/run/apache2 /var/lock/apache2 \
&& chown www-data:www-data /var/log/apache2 /var/run/apache2 /var/lock/apache2
CMD ["apache2", "-DFOREGROUND"]
EXPOSE 80
构建映像并启动容器,您将收到类似于 X-Mod-Pagespeed: 1.13.35.2-0
的响应 header。
希望对您有所帮助!
@Michael 的大部分回答是正确的,但是对于那些使用默认 docker 的 apache 模块(比如我)的人来说,下面的回答就足够了。
因为 debian 的 apache 安装与 docker apache 的安装不同。 (如果您已经 setup/customised 所有配置并且不能重新定制为 debian 的结构)
我根据该答案构建了 pagespeed 模块,然后将该模块复制到我的安装中。
Docker 文件
FROM debian:stretch as pagespeed
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV LANG C
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 wget \
&& wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb -O /tmp/modpagespeed.deb \
&& dpkg -i /tmp/modpagespeed.deb
FROM httpd:2.4.43
# all these things are my custom configuration. You probably don't need these
COPY --chown=root:www-data ./docker-assets/httpd-custom.conf $HTTPD_PREFIX/conf/httpd.conf
COPY --chown=root:www-data ./docker-assets/httpd-default.conf $HTTPD_PREFIX/conf/extra/httpd-default.conf
COPY --chown=root:www-data ./docker-assets/httpd-vhosts-custom.conf $HTTPD_PREFIX/conf/extra/httpd-vhosts.conf
COPY --chown=root:www-data ./docker-assets/httpd-ssl.conf $HTTPD_PREFIX/conf/extra/httpd-ssl.conf
COPY --chown=root:www-data ./docker-assets/httpd-mpm.conf $HTTPD_PREFIX/conf/extra/httpd-mpm.conf
# pagespeed module adding as custom build here. You may need to change some paths in .load file
COPY --chown=root:www-data ./docker-assets/pagespeed.load $HTTPD_PREFIX/conf/extra/
COPY --chown=root:www-data ./docker-assets/pagespeed.conf $HTTPD_PREFIX/conf/extra/
COPY --chown=root:www-data ./docker-assets/pagespeed_libraries.conf $HTTPD_PREFIX/conf/extra/
# Or directly copy from build stage
# COPY --from=pagespeed --chown=root:www-data /etc/apache2/mods-available/pagespeed.conf $HTTPD_PREFIX/conf/extra/
# COPY --from=pagespeed --chown=root:www-data /etc/apache2/conf-available/pagespeed_libraries.conf $HTTPD_PREFIX/conf/extra/
COPY --from=pagespeed --chown=root:www-data /usr/lib/apache2/modules/mod_pagespeed.so $HTTPD_PREFIX/modules/
COPY --from=pagespeed --chown=root:www-data /usr/lib/apache2/modules/mod_pagespeed_ap24.so $HTTPD_PREFIX/modules/
# pagespeed end