Как добавить ngx_pagespeed в Nginx в Debian 8

Вступление

ngx_pagespeed, или просто pagespeed, представляет собой модуль Nginx, разработанный для автоматической оптимизации вашего сайта за счет уменьшения размера его ресурсов и, следовательно, времени, которое требуется браузерам клиентов для его загрузки. Если вы еще не знакомы с ним, проверьте его official site.

Эта статья проведет вас через установку и настройку модуля PageSeded для Nginx. Важно знать, что Nginx не поддерживает Динамическую загрузку модулей, доступную на других веб-серверах, таких как Apache. Поскольку Nginx не поддерживает эту функцию, вам нужно собрать Nginx из исходного кода, чтобы добавить модуль.

Наличие собственного пользовательского пакета имеет один недостаток - вы несете единоличную ответственность за его обновление при появлении новой версии. Примите это во внимание при взвешивании плюсов и минусов использования ngx_pagespeed.

Предпосылки

Это руководство было написано для Debian 8. Ссылка: / community / tutorials / how-to-add-ngx_pagespeed-to-nginx-on-ubuntu-14-04 [версия Ubuntu 14.04] и ссылка: / community / tutorials / how-to-add-ngx_pagespeed-to -nginx-on-centos-7 [версия CentOS 7] также доступны.

Прежде чем следовать этому руководству, убедитесь, что вы выполнили следующие предварительные условия:

Если не указано иное, все команды, которым требуются привилегии root в этом учебном пособии, должны запускаться как пользователь без полномочий root с привилегиями sudo.

Шаг 1 - Загрузите исходный код и его зависимости

Прежде всего, мы должны удовлетворить все зависимости, необходимые для запуска Nginx. Для этого запустите команду:

sudo apt-get build-dep nginx

Затем создайте папку в вашем домашнем каталоге, чтобы загрузить исходный пакет для Nginx:

mkdir ~/custom-nginx

Перейдите в этот недавно созданный каталог:

cd ~/custom-nginx

Затем загрузите исходный пакет Nginx в этот каталог с помощью команды:

sudo apt-get source nginx

Чтобы подтвердить, что мы находимся на той же странице, перечислим содержимое папки + ~ / custom-nginx +:

ls ~/custom-nginx

Результат должен выглядеть так:

Output of ls ~/custom-nginxnginx-1.6.2  nginx_1.6.2-5.debian.tar.xz  nginx_1.6.2-5.dsc  nginx_1.6.2.orig.tar.gz

Как вы можете видеть, версия исходного пакета Nginx 1.6.2 на момент написания этого руководства. Чтобы начать добавлять модуль ngx_pagespeed, вам сначала нужно перейти в папку + modules + внутри извлеченной папки + nginx-1.6.2 +:

cd nginx-1.6.2/debian/modules

В этом каталоге загрузите последний исходный архив ngx_pagespeed из его Github хранилища с помощью команды:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

После завершения загрузки вам понадобится утилита + unzip +, чтобы извлечь ее. Если у вас еще нет + unzip +, установите его с помощью команды:

sudo apt-get install unzip

После этого распакуйте загруженный файл с помощью команды:

sudo unzip master.zip

Это создаст новый каталог с именем + ngx_pagespeed-master + внутри вашего каталога + ~ / nginx-1.6.2 / debian / modules +. Для удобства переименуйте этот каталог просто в + ngx_pagespeed + с помощью команды:

sudo mv ngx_pagespeed-master ngx_pagespeed

Зайдите в новый каталог + ngx_pagespeed +:

cd ngx_pagespeed

Оттуда загрузите библиотеки оптимизации страниц (psol), которые необходимы для компиляции:

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

Если во время чтения этой статьи ссылка на архив psol не работает, просто пропустите этот шаг. Если вы пропустили библиотеки во время компиляции на следующих шагах, вы увидите ошибку с обновленными инструкциями о том, как получить пакет позже.

Наконец, извлеките пакет psol из каталога + ~ / custom-nginx / nginx-1.6.2 / debian / modules / ngx_pagespeed +:

sudo tar -xzvf 1.9.32.6.tar.gz

Шаг 2 - Настройка источника

На этом этапе вы готовы настроить правила компиляции и включить ngx_pagespeed в установку. Для этого отредактируйте файл + ~ / custom-nginx / nginx-1.6.2 / debian / rules + в вашем любимом редакторе:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/rules

Там у вас есть четыре различных сценария для сборки пакетов Nginx: + common,` + full`, + light и` + extras`. Как следует из их имен, + common + содержит общие файлы Nginx без сервера, + full + включает сервер с наиболее популярными модулями, + light + создает сервер только с необходимыми модулями, а + extras + для сервера с некоторыми дополнительными модными модулями.

Давайте предположим, что вам нужна установка + light + Nginx плюс ngx_pagespeed. Таким образом, добавьте конец блока конфигурации + light_configure_flags + и добавьте строку:

~ / Заказ Nginx / Nginx-1.6.2 / Debian / правила

--add-module=$(MODULESDIR)/ngx_pagespeed

Пожалуйста, не забудьте добавить обратную косую черту (+ \ +) в предыдущей строке. Весь блок конфигурации должен выглядеть так:

~ / Заказ Nginx / Nginx-1.6.2 / Debian / правила

light_configure_flags := \
                       $(common_configure_flags) \
                       --with-http_gzip_static_module \
                       --without-http_browser_module \
                       --without-http_geo_module \
                       --without-http_limit_req_module \
                       --without-http_limit_zone_module \
                       --without-http_memcached_module \
                       --without-http_referer_module \
                       --without-http_scgi_module \
                       --without-http_split_clients_module \
                       --without-http_ssi_module \
                       --without-http_userid_module \
                       --without-http_uwsgi_module \
                       --add-module=$(MODULESDIR)/nginx-echo

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

Затем увеличьте версию исходного пакета, так как это поможет вам закрепить пакет позже. Для этого откройте файл + changelog + в текстовом редакторе:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog

Первая строка файла + changelog + представляет текущую версию пакета (+ 1.6.2-5 +) и имя дистрибутива Debian (+ unstable +). Добавьте пользовательский тег, такой как + pagespeed +, в конце номера версии, которому предшествует дефис, например:

nginx (1.6.2-5) unstable; urgency=medium

Шаг 3 - Сборка и установка Nginx с модулем Pagespeed

Теперь, когда вы настроили сборку для включения модуля ngx_pagespeed, вы готовы собрать Nginx.

Перейдите в каталог + ~ / custom-nginx / nginx-1.6.2 / + с помощью команды:

cd ~/custom-nginx/nginx-1.6.2/

Отсюда выполните команду для создания новых пользовательских пакетов Nginx:

sudo dpkg-buildpackage -b

Процесс сборки занимает не более 10 минут. Если вы обеспокоены тем, что в течение этого времени вы можете отключиться, попробуйте использовать + screen +, как описано в https://www.digitalocean.com/community/articles/how-to-install-and-use-screen-on. -an-ubuntu-cloud-server [эта статья].

Если вы выполнили все инструкции, процесс сборки должен завершиться без ошибок. Чтобы найти новые пользовательские пакеты Nginx, перейдите в один каталог до + ~ / custom-nginx / + с помощью команды:

cd ~/custom-nginx/

Перечислите содержимое каталога + ~ / custom-nginx / +:

ls ~/custom-nginx/

Вы должны найти много пакетов + .deb +. Те, что вам нужны, называются + nginx-common_1.6.2-5-pagespeed_all.deb + (содержащие общие файлы Nginx) и + nginx-light_1.6.2-5-pagespeed_amd64.deb + (содержащие ваш пользовательский сервер light). Часть + pagespeed + может отличаться, если вы указали другой пользовательский тег в файле + changelog +.

Чтобы установить пользовательский Nginx с модулем pagespeed, выполните команду:

sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb

Шаг 4 - Включите модуль скорости страниц

Теперь у вас установлен Nginx. Следующим шагом является включение модуля ngx_pagespeed.

Перед тем, как включить модуль, вы должны создать папку, в которой он будет кешировать файлы для вашего сайта:

sudo mkdir -p /var/ngx_pagespeed_cache

Обязательно измените владельца этой папки на пользователя Nginx, чтобы веб-сервер мог хранить в ней файлы:

sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

Затем откройте основной файл конфигурации Nginx + nginx.conf + в вашем любимом текстовом редакторе, например:

sudo nano /etc/nginx/nginx.conf

В этом файле добавьте следующие строки в блок + http + и сохраните изменения:

/etc/nginx/nginx.conf

##
# Pagespeed Settings
##

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Вы можете добавить эти строки в любом месте блока + http +, но в нашем примере мы добавляем их в конец блока.

Вот как должен выглядеть файл + / etc / nginx / nginx.conf:

/etc/nginx/nginx.conf

...
http {

       ##
       # Basic Settings
       ##

       sendfile on;
       tcp_nopush on;
       tcp_nodelay on;
       keepalive_timeout 65;
       types_hash_max_size 2048;
       # server_tokens off;

       # server_names_hash_bucket_size 64;
       # server_name_in_redirect off;







...

Кроме того, вам нужно добавить строки конфигурации скорости страницы в файл блока every + server +, расположенный в + / etc / nginx / sites-available +. Например, отредактируйте файл + / etc / nginx / sites-available / default +:

sudo nano /etc/nginx/sites-available/default

Добавьте следующее в блок + server +:

/ И т.д. / Nginx / сайты-доступны

#  Ensure requests for pagespeed optimized resources go to the pagespeed
#  handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Приведенные выше строки конфигурации скорости страницы гарантируют, что скорость страницы оптимизирует ресурсы каждого сайта.

Наконец, перезапустите сервер Nginx, чтобы изменения вступили в силу:

sudo service nginx restart

Шаг 5 - Проверьте установку

Чтобы проверить, успешно ли установлен модуль ngx_pagespeed, запустите двоичный файл Nginx следующим образом:

sudo /usr/sbin/nginx -V

Если установка прошла успешно, вы должны увидеть модуль ngx_pagespeed, указанный среди других модулей:

Outputnginx version: nginx/1.6.2
...
--add-module=/home//custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed

Вышеуказанное еще не означает, что скорость страниц включена и работает для вашего сайта. Чтобы подтвердить это, вы можете использовать + curl +, инструмент и библиотеку для передачи URL-адресов на стороне клиента. Если у вас не установлен + curl +, установите его с помощью команды:

sudo apt-get install curl

После этого проверьте заголовок + X-Page-Speed ​​+ следующим образом:

curl -I -p http://localhost| grep X-Page-Speed

Если модуль ngx_pagespeed работает нормально, вы должны увидеть его в выводе вместе с его версией:

OutputX-Page-Speed: 1.9.32.6-7321

Если вы не видите этот заголовок, убедитесь, что вы включили скорость страниц в соответствии с инструкциями из предыдущего шага.

Шаг 6 - Прикрепите свой пользовательский пакет Nginx

Чтобы предотвратить замену вашего пользовательского пакета Nginx в будущем на + apt + более поздним выпуском Nginx, вы должны закрепить (удержать) ваш пакет от обновления, выполнив следующие шаги:

Создайте новый файл + nginx + в + / etc / apt / preferences.d +:

sudo nano /etc/apt/preferences.d/nginx

Затем вставьте в него следующие строки и сохраните его:

/etc/apt/preferences.d/nginx

Package: nginx-light
Pin: version 1.6.2-5-pagespeed
Pin-Priority: 1001

Пожалуйста, не забудьте указать пакет Nginx, который вы решили использовать. В нашем примере это был + nginx-light +. Также укажите точную версию вместе с вашим пользовательским тегом, например + 1.6.2-5-pagespeed +.

Заключение

Вот как вы можете собрать Nginx с помощью пользовательского модуля PageSpeed. Эти шаги действительны для любого другого модуля, который еще не доступен в Nginx. Кроме того, весь процесс установки пакета из исходного кода аналогичен для других программных пакетов, которые вам может потребоваться настроить. Просто не забывайте, что вам придется самостоятельно поддерживать и переустанавливать эти пакеты при появлении новой версии.

Related