baseroad
Эксперт
- Сообщения
- 361
- Реакции
- 27
Pagespeed – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере.
Загрузка исходного кода и зависимостей
Для начала загружаем зависимости Nginx:
Далее в домашнем каталоге создадим подкаталог для загрузки пакета Nginx.
Откройте его:
Загрузите исходный пакет Nginx:
Запросите контент папки ~/custom-nginx:
На экране появится ответ (пример на Nginx 1.6.2):
В этот каталог загрузим архив ngx_pagespeed из репозитория Github.
Далее распакуем архив при помощи утилиты unzip.
Установить утилиту можно при помощи команды:
Извлекаем содержимое архива:
Это создаст новый каталог ngx_pagespeed-master в каталоге ~/nginx-1.6.2/debian/modules. Можно переименовать его в ngx_pagespeed:
Откройте каталог:
Распакуйте архив psol в каталог ~/custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed:
Настройка исходного кода
Теперь нужно отредактировать код Nginx и добавить в него модуль pagespeed. Откройте ~/custom-nginx/nginx-1.6.2/debian/rules в текстовом редакторе:
Nginx предлагает четыре сценария компиляции пакета:
Не забудьте добавить обратный слеш в предыдущую строку.
Полный список настроек имеет такой вид:
далее нужно изменить номер версии. Для этого откройте changelog:
Первая строка файла changelog показывает текущую версию пакета (1.6.2-5) и дистрибутив Debian (unstable). Добавьте в конец этой строки пользовательский тег (например, pagespeed) через дефис:
Сборка и установка Nginx с модулем ngx_pagespeed
Теперь код Nginx отредактирован, и при сборке в установку будет добавлен модуль ngx_pagespeed. Можно приступать к компиляции кода.
Откройте каталог ~/custom-nginx/nginx-1.6.2/:
Чтобы начать компилирование Nginx, запустите команду:
Новые пользовательские пакеты Nginx можно найти в ~/custom-nginx/:
Запросите список пакетов ~/custom-nginx/:
Необходимые пакеты называются nginx-common_1.6.2-5-pagespeed_all.deb (общие файлы Nginx) и nginx-light_1.6.2-5-pagespeed_amd64.deb (файлы сервера).
Чтобы установить пользовательские пакеты Nginx и pagespeed, запустите:
Включение ngx_pagespeed
После установки сервера Nginx нужно включить модуль ngx_pagespeed.
Сначала нужно создать папку, в которой модуль будет хранить кэш файлов сайта:
Передайте права на эту папку пользователю Nginx, чтобы веб-сервер имел необходимый уровень доступа.
Откройте главный конфигурационный файл Nginx, nginx.conf, для редактирования:
Добавьте в блок http строки и сохраните изменения:
Теперь файл /etc/nginx/nginx.conf выглядит так:
Также конфигурацию pagespeed нужно добавить во все существующие блоки server в каталоге /etc/nginx/sites-available. К примеру, отредактируйте /etc/nginx/sites-available/default:
Добавьте в server-блок следующее:
Эти параметры настраивают pagespeed для оптимизации всех сайтов.
Перезапустите Nginx, чтобы обновить настройки:
Закрепление пакета Nginx
Чтобы в дальнейшем пакетный менеджер apt не заменил пользовательский пакет Nginx более новой версией, нужно зафиксировать версию.
Для начала создайте файл nginx в /etc/apt/preferences.d:
Затем добавьте в него следующий код:
Загрузка исходного кода и зависимостей
Для начала загружаем зависимости Nginx:
Код:
sudo apt-get build-dep nginx
Код:
mkdir ~/custom-nginx
Код:
cd ~/custom-nginx
Код:
sudo apt-get source nginx
Код:
ls ~/custom-nginx
Код:
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
Код:
sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
Установить утилиту можно при помощи команды:
Код:
sudo apt-get install unzip
Код:
sudo unzip master.zip
Код:
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
Код:
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
- Common: общие файлы Nginx без сервера.
- Full: пакеты сервера и наиболее популярных модулей.
- Light: пакеты сервера и наиболее важные модули
- Extras: пакеты сервера и набор дополнительных модулей.
Код:
--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
Код:
sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog
Код:
nginx (1.6.2-5-pagespeed) unstable; urgency=medium
Теперь код Nginx отредактирован, и при сборке в установку будет добавлен модуль ngx_pagespeed. Можно приступать к компиляции кода.
Откройте каталог ~/custom-nginx/nginx-1.6.2/:
Код:
cd ~/custom-nginx/nginx-1.6.2/
Код:
sudo dpkg-buildpackage -b
Код:
cd ~/custom-nginx/
Код:
ls ~/custom-nginx/
Чтобы установить пользовательские пакеты Nginx и pagespeed, запустите:
Код:
sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb
После установки сервера Nginx нужно включить модуль ngx_pagespeed.
Сначала нужно создать папку, в которой модуль будет хранить кэш файлов сайта:
Код:
sudo mkdir -p /var/ngx_pagespeed_cache
Код:
sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
Код:
sudo nano /etc/nginx/nginx.conf
Код:
##
# Pagespeed Settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
Код:
...
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;
...
Код:
sudo nano /etc/nginx/sites-available/default
Код:
# 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
Чтобы в дальнейшем пакетный менеджер 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
Последнее редактирование: