Устанавливаем модуль PageSpeed для Nginx в Debian

baseroad

Местный житель
#1
Pagespeed – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере.

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

Для начала загружаем зависимости 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
На экране появится ответ (пример на Nginx 1.6.2):
Код:
nginx-1.6.2  nginx_1.6.2-5.debian.tar.xz  nginx_1.6.2-5.dsc  nginx_1.6.2.orig.tar.gz
Чтобы добавить модуль ngx_pagespeed, нужно сначала открыть папку modules в каталоге nginx-1.6.2:
[CODE]cd nginx-1.6.2/debian/modules
В этот каталог загрузим архив ngx_pagespeed из репозитория Github.
Код:
sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
Далее распакуем архив при помощи утилиты 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
Откройте каталог:
Код:
cd ngx_pagespeed  /CODE]
Загрузите в него пакет PageSpeed Optimization Libraries (psol):
[CODE]sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
Распакуйте архив psol в каталог ~/custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed:
Код:
sudo tar -xzvf 1.9.32.6.tar.gz
Настройка исходного кода

Теперь нужно отредактировать код Nginx и добавить в него модуль pagespeed. Откройте ~/custom-nginx/nginx-1.6.2/debian/rules в текстовом редакторе:
Код:
sudo nano ~/custom-nginx/nginx-1.6.2/debian/rules
Nginx предлагает четыре сценария компиляции пакета:
  • Common: общие файлы Nginx без сервера.
  • Full: пакеты сервера и наиболее популярных модулей.
  • Light: пакеты сервера и наиболее важные модули
  • Extras: пакеты сервера и набор дополнительных модулей.
Предположим, что нужно установить light Nginx и модуль ngx_pagespeed. Добавьте в конец блока light_configure_flags следующую строку:
Код:
--add-module=$(MODULESDIR)/ngx_pagespeed
Не забудьте добавить обратный слеш в предыдущую строку.

Полный список настроек имеет такой вид:
Код:
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 \
--add-module=$(MODULESDIR)/ngx_pagespeed
далее нужно изменить номер версии. Для этого откройте changelog:
Код:
sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog
Первая строка файла changelog показывает текущую версию пакета (1.6.2-5) и дистрибутив Debian (unstable). Добавьте в конец этой строки пользовательский тег (например, pagespeed) через дефис:
Код:
nginx (1.6.2-5-pagespeed) unstable; urgency=medium
Сборка и установка Nginx с модулем ngx_pagespeed

Теперь код Nginx отредактирован, и при сборке в установку будет добавлен модуль ngx_pagespeed. Можно приступать к компиляции кода.

Откройте каталог ~/custom-nginx/nginx-1.6.2/:
Код:
cd ~/custom-nginx/nginx-1.6.2/
Чтобы начать компилирование Nginx, запустите команду:
Код:
sudo dpkg-buildpackage -b
Новые пользовательские пакеты Nginx можно найти в ~/custom-nginx/:
Код:
cd ~/custom-nginx/
Запросите список пакетов ~/custom-nginx/:
Код:
ls ~/custom-nginx/
Необходимые пакеты называются nginx-common_1.6.2-5-pagespeed_all.deb (общие файлы Nginx) и nginx-light_1.6.2-5-pagespeed_amd64.deb (файлы сервера).

Чтобы установить пользовательские пакеты Nginx и pagespeed, запустите:
Код:
sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb
Включение ngx_pagespeed

После установки сервера 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 строки и сохраните изменения:
Код:
##
# Pagespeed Settings
##
pagespeed on; 
pagespeed FileCachePath /var/ngx_pagespeed_cache;
Теперь файл /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;
##
# Pagespeed Settings
##
pagespeed on; 
pagespeed FileCachePath /var/ngx_pagespeed_cache; 
...
Также конфигурацию pagespeed нужно добавить во все существующие блоки server в каталоге /etc/nginx/sites-available. К примеру, отредактируйте /etc/nginx/sites-available/default:
Код:
sudo nano /etc/nginx/sites-available/default
Добавьте в server-блок следующее:
Код:
#  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" { }
Эти параметры настраивают pagespeed для оптимизации всех сайтов.

Перезапустите Nginx, чтобы обновить настройки:
Код:
sudo service nginx restart
Закрепление пакета Nginx

Чтобы в дальнейшем пакетный менеджер apt не заменил пользовательский пакет Nginx более новой версией, нужно зафиксировать версию.

Для начала создайте файл nginx в /etc/apt/preferences.d:
Код:
sudo nano /etc/apt/preferences.d/nginx
Затем добавьте в него следующий код:
Код:
Package: nginx-light 
Pin: version 1.6.2-5-pagespeed 
Pin-Priority: 1001
 
Последнее редактирование:

baseroad

Местный житель
#3
ты хочешь сказать, что это уже никто не использует? Да на большинстве серверов данные модификации не используются, хотя, по моему субъективному мнению должны быть включены при заказе сервера впс на дебиан.
 

n0n4m3

Местный житель
#4
@baseroad, думаю что нет так как данная конфигурация очень стара я в свое время nginx схавал норм и выкинул apache так что знаю что пишу.
VERSION=1.13.35.1