Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker apache httpd中安装mod_pagespeed_Apache_Docker_Pagespeed_Mod Pagespeed_Apache Modules - Fatal编程技术网

如何在docker apache httpd中安装mod_pagespeed

如何在docker apache httpd中安装mod_pagespeed,apache,docker,pagespeed,mod-pagespeed,apache-modules,Apache,Docker,Pagespeed,Mod Pagespeed,Apache Modules,我有一个基于docker的apache httpd服务器。我需要安装mod_pagespeed 由于某些原因,我现在使用的是debian而不是alpine 以下是在debian/UbuntuDist中安装模块所需的命令列表-来自官方网站 wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb sudo dpkg -i mod-pagespeed-*.deb sudo apt-get

我有一个基于docker的apache httpd服务器。我需要安装
mod_pagespeed

由于某些原因,我现在使用的是debian而不是alpine

以下是在debian/UbuntuDist中安装模块所需的命令列表-来自官方网站

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安装不同

我找不到任何
。因此
文件在任何地方,否则我可以将其放在某个目录中并执行
加载模块


我想我需要从源代码进行自定义构建,有没有简单的方法?

您可以使用以下
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
的响应头


希望这有帮助

您可以使用以下
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
的响应头


希望这有帮助

大多数情况下@Michael的答案是正确的,但是对于那些使用默认docker的apache模块的人(比如我),下面的答案就足够了

因为debian的apache安装与docker apache的安装不同。(如果您已经设置/定制了所有配置,并且无法重新定制为debian的结构)

我已经根据这个答案构建了pagespeed模块,然后将该模块复制到我的安装中

Dockerfile

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

大多数情况下@Michael的答案是正确的,但是对于那些使用默认docker的apache模块的人(比如我),下面的答案就足够了

因为debian的apache安装与docker apache的安装不同。(如果您已经设置/定制了所有配置,并且无法重新定制为debian的结构)

我已经根据这个答案构建了pagespeed模块,然后将该模块复制到我的安装中

Dockerfile

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