Данный модуль предназначен для оптимизации ответа от веб-сервера. Его можно установить для Apache и NGINX. Мы рассмотрим оба варианта установки под операционные системы Ubuntu и CentOS. Подразумевается, что на нашем сервере уже установлены nginx и apache — мы выполним добавление модуля. В конце статьи можно найти ссылки на подробное описание настройки веб-серверов.
Модуль для Apache
Установка
Настройка
Доступ к веб-интерфейсу
Модуль для NGINX
Подготовка к сборке
Сборка модуля из исходников
Настройка nginx для включения модуля
Проверка работы модуля
С помощью Google Chrome
В командной строке Linux
На портале Google PageSpeed Insights
Читайте также
Модуль для apache называется mod_pagespeed и может распространяться как пакет.
Установка модуля немного различается для различных систем. Рассмотрим 2 варианта.
Устанавливаем пакеты at и wget:
yum install at wget
Затем необходимо скачать установочный пакет:
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
* в данном примере мы загрузим пакет для 64-битной системы. Для 32-х нужно использовать ссылку https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.rpm .
После можно ставить сам модуль:
rpm -Uvh mod-pagespeed-*.rpm
Перезапускаем Apache:
systemctl restart httpd
Загружаем установочный пакет:
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
* мы загрузим 64-х битный пакет. Если у нас используется система на 32-бит, то скачиваем по ссылке https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.deb .
Устанавливаем скачанный пакет командой:
dpkg -i mod-pagespeed-*.deb
После установки модуля, необходимо перезагрузить apache:
systemctl restart apache2
После установки модуля и перезапуска сервиса веб-сервера наш сайт начнет использовать средства оптимизации. Но при желании, мы можем внести необходимые настройки.
а) если используем CentOS:
vi /etc/httpd/conf.d/pagespeed.conf
б) если используем Ubuntu:
vi /etc/apache2/mods-enabled/pagespeed.conf
Данный файл хорошо документирован комментариями. Приведем некоторые примеры для настроек.
1. Для отключения модуля находим:
ModPagespeed on
и меняем на:
ModPagespeed off
2. Для указания конкретного каталога хранения кэша меняем опцию для:
ModPagespeedFileCachePath «/var/cache/mod_pagespeed/»
3. Путь хранения логов:
ModPagespeedLogDir «/var/log/pagespeed»
Для применения настроек не забываем перезапустить apache:
systemctl restart {apache2,httpd}
* данная команда отработает как на CentOS, так и Ubuntu.
Веб-интерфейс модуля позволяет увидеть статистику его работы, а также получить сведения о текущих настройках. По умолчанию, доступ к нему разрешен только с локального сервера. Для того, чтобы разрешить подключение с определенной сети открываем файл:
vi /etc/httpd/conf.d/pagespeed.conf
Находим настройку:
<Location /pagespeed_admin>
Order allow,deny
Allow from localhost
Allow from 127.0.0.1
SetHandler pagespeed_admin
</Location>
И добавляем в нее доступ (Allow from …) — в итоге мы получим, примерно, следующее:
<Location /pagespeed_admin>
Order allow,deny
Allow from localhost
Allow from 127.0.0.1
Allow from 192.168.1.5
Allow from 192.168.0.0/24
SetHandler pagespeed_admin
</Location>
* в данном примере мы добавили разрешение использовать веб-интерфейс для узла 192.168.1.5 и всей подсети 192.168.0.0/24 .
Перезапускаем сервис:
systemctl restart {apache2,httpd}
Открываем веб-интерфейс по адресу http://<IP-адрес сервера>/pagespeed_admin — мы должны увидеть страницу Pagespeed Admin.
Для NGINX модуль называется ngx_pagespeed. Для его установки нам нужно будет пересобрать веб-сервер nginx.
Если наш сервер является боевым, то стоит сначала выполнить данные настройки в тестовой среде. После пересборки nginx, сайты могут перестать работать корректно.
Нам необходимо установить пакеты, необходимые для сборки. Устанавливаем их.
а) для CentOS
yum install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel libaio-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed gperftools-devel
б) для Ubuntu
apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev libssl-dev openssl libxml2-dev libxslt1-dev libgd-dev libgeoip-dev
После установки пакетов, необходимо загрузить исходники. Для начала перейдем в каталог:
cd /usr/local/src
* в него мы загрузим все исходники.
После переходим на страницу загрузки nginx и копируем ссылку на последнюю стабильную версию веб-сервера:
* при необходимости установить другую версию nginx, копируем ссылку на нее. Если в вашей ситуации используется действующий веб-сервер, для поддержки максимальной совместимости, лучше загружать ту же версию, которая установлена на сервере.
Теперь загружаем пакет по скопированной ссылке:
wget https://nginx.org/download/nginx-1.18.0.tar.gz
* если система вернут ошибку, установим wget командами yum install wget (CentOS) или apt-get install wget (Ubuntu).
Распаковываем его:
tar zxvf nginx-*.tar.gz
Переходим на страницу с релизами модуля и копируем ссылку на последний стабильный:
По скопированной ссылке скачиваем на сервер исходник:
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.tar.gz
Распаковываем данный исходник:
tar zxvf v*-stable.tar.gz
Переходим в распакованный каталог с исходниками модуля:
cd incubator-pagespeed-ngx-*-stable/
Командой:
cat PSOL_BINARY_URL
… смотрим, по какой ссылке нужно загружать PSOL (PageSpeed Optimization Libraries). В моем случае было:
https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz
$BIT_SIZE_NAME нужно заменить разрядностью операционной системы, которую можно посмотреть командой:
uname -m
И так, в моем примере команда для загрузки PSOL получилась:
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
Распаковываем архив с PSOL:
tar zxvf 1.13.35.2-x64.tar.gz
* где 1.13.35.2 в названии файла — версия PSOL.
Переходим в каталог с исходником nginx:
cd /usr/local/src/nginx-*/
Смотрим опции сборки текущего nginx (напомню, инструкция предполагает, что он установлен на сервере):
nginx -V
Я в своем случае получил ответ:
…
configure arguments: —with-cc-opt=’-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2′ —with-ld-opt=’-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now’ —prefix=/usr/share/nginx —conf-path=/etc/nginx/nginx.conf —http-log-path=/var/log/nginx/access.log —error-log-path=/var/log/nginx/error.log —lock-path=/var/lock/nginx.lock —pid-path=/run/nginx.pid —http-client-body-temp-path=/var/lib/nginx/body —http-fastcgi-temp-path=/var/lib/nginx/fastcgi —http-proxy-temp-path=/var/lib/nginx/proxy —http-scgi-temp-path=/var/lib/nginx/scgi —http-uwsgi-temp-path=/var/lib/nginx/uwsgi —with-debug —with-pcre-jit —with-ipv6 —with-http_ssl_module —with-http_stub_status_module —with-http_realip_module —with-http_auth_request_module —with-http_addition_module —with-http_dav_module —with-http_geoip_module —with-http_gunzip_module —with-http_gzip_static_module —with-http_image_filter_module —with-http_v2_module —with-http_sub_module —with-http_xslt_module —with-stream —with-stream_ssl_module —with-mail —with-mail_ssl_module —with-threads
Нам нужно скопировать данные аргументы и добавить к ним путь до исходника загруженного модуля:
—add-module=/usr/local/src/incubator-pagespeed-ngx-1.13.35.2-stable
* где 1.13.35.2 — версия модуля.
Итого, получаем и выполняем команду для конфигурации исходника:
./configure —with-cc-opt=’-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2′ —with-ld-opt=’-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now’ —prefix=/usr/share/nginx —conf-path=/etc/nginx/nginx.conf —http-log-path=/var/log/nginx/access.log —error-log-path=/var/log/nginx/error.log —lock-path=/var/lock/nginx.lock —pid-path=/run/nginx.pid —http-client-body-temp-path=/var/lib/nginx/body —http-fastcgi-temp-path=/var/lib/nginx/fastcgi —http-proxy-temp-path=/var/lib/nginx/proxy —http-scgi-temp-path=/var/lib/nginx/scgi —http-uwsgi-temp-path=/var/lib/nginx/uwsgi —with-debug —with-pcre-jit —with-ipv6 —with-http_ssl_module —with-http_stub_status_module —with-http_realip_module —with-http_auth_request_module —with-http_addition_module —with-http_dav_module —with-http_geoip_module —with-http_gunzip_module —with-http_gzip_static_module —with-http_image_filter_module —with-http_v2_module —with-http_sub_module —with-http_xslt_module —with-stream —with-stream_ssl_module —with-mail —with-mail_ssl_module —with-threads —add-module=/usr/local/src/incubator-pagespeed-ngx-1.13.35.2-stable
На запрос использования доступных версий бинарных файлов отвечаем утвердительно:
Use the available Release binaries? [Y/n] Y
Если в процессе конфигурирования появятся ошибки, необходимо самостоятельно разобраться, какого модуля не хватает в системе и установить его.
После окончания конфигурирования можно собирать исходник:
make
Затем устанавливать nginx:
make install
Проверяем сборку nginx:
nginx -V
Мы должны увидеть среди configure arguments:
… add-module=/usr/local/src/incubator-pagespeed-ngx-1.13.35.2-stable
После пересборки nginx модуль pagespeed не будет включен. Для его активации открываем конфигурационный файл:
vi /etc/nginx/nginx.conf
В секцию http добавляем:
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
* первая строка включает pagespeed, вторая — указывает на путь каталога с кэшем. Если нам нужно будет на время отключить модуль, оставим pagespeed off ;
Перезапускаем nginx:
systemctl restart nginx
После того, как мы установили и применили модуль, необходимо убедиться, что он используется при работе сайта. Можно сделать это несколькими методами.
Справедливости ради, важно заметить, что для этой цели подойдет не только данный браузер. Просто в нашей инструкции мы будет выполнять действия на его примере.
Нам необходимо посмотреть заголовки при ответе и убедиться, что среди них есть X-Mod-Pagespeed . Для этого запускаем браузер и кликаем F12, чтобы вызвать панель разработчика. Переходим на любой сайт на нашем сервере. В панели разработчика переходим в Network — кликаем по любому загруженному элементу в списке слева — Headers — если наш сервер настроен верно, мы увидим заголовок X-Mod-Pagespeed и версию модуля:
Также мы можем выполнить проверку на сервере с помощью curl. Для этого вводим команду:
curl -I -p http://localhost
Мы должны получить что-то на подбие:
HTTP/1.1 200 OK
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Date: Fri, 03 Jul 2020 09:45:20 GMT
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache
Переходим на страницу PageSpeed Insights и вводим адрес сайта — нажимаем Анализировать :
Ждем результатов и на основе их принимаем решение для оптимальных настроек модуля pagespeed.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…