Как установить mod_pagespeed в docker apache httpd

У меня есть сервер Apache httpd на основе докеров. Мне нужно установить mod_pagespeed в него.

Аромат, который я использую, основан на Debian, а не на Alpine — по некоторым причинам.

Ниже приведен список команд, необходимых для установки модуля в дистрибутив debian/ubuntu — с официального сайта.

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.

Думаю, мне нужно сделать пользовательскую сборку из исходного кода, есть ли какой-нибудь простой способ?


person Akshay    schedule 20.02.2019    source источник


Ответы (2)


Вы можете использовать следующие 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.

Надеюсь это поможет!

person Michael BOUVY    schedule 03.06.2019

В основном ответ @Michael правильный, однако для тех, кто использует модуль apache докера по умолчанию (например, я), будет достаточно следующего ответа.

Потому что установка apache в debian отличается от установки apache в docker. (И если вы уже настроили/настроили всю конфигурацию и не можете перенастроить ее в соответствии со структурой Debian)

Я построил модуль скорости страницы из этого ответа, а затем скопировал модуль в свою установку.

Докерфайл

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
person Akshay    schedule 17.04.2020