Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Установка ngx_pagespeed без пересборки nginx

На днях решил немного ускорить работу сайта путем установки на сервер модуля nginx_pagespeed, но при этом не хотелось пересобирать сам nginx. На помощь пришла сборка nginx с включенным модулем от Alexey Degtyarev. А теперь перейдем к самому процессу установки.

Замена nginx

Итак, приступим. Первое, что необходимо сделать - это конечно же backup настроек nginx. Для этого копируем папку /etc/nginx в укромное место. Далее удаляем nginx.

apt-get remove nginx
apt-get remove nginx-common

Далее необходимо добавить репизиторий nginx pagespeed PPA, обновить список пакетов и установить оттуда новый nginx. Для этого выполняем

add-apt-repository ppa:adegtyarev/nginx-pagespeed
apt-get update
apt-get install nginx

Когда установка прошла, то можно перейти к настройке веб-сервера. Можно просто заменить содержимое директории /etc/nginx файлами из вашего бекапа и перезапуститься.

/etc/init.d/nginx restart

или

service nginx restart

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

Настройка pagespeed

Когда все работает, самое время включить pagespeed и произвести его настройку. Сначала необходимо создать директорию в которую будут сохраняться кэшированные файлы. Например, /var/cache/nginx_pagespeed/.

mkdir /var/cache/nginx_pagespeed/
chown www-data:www-data /var/cache/nginx_pagespeed/

Следующее действие, которое необходимо совершить, - включить модуль для сайта. Для этого открываем файл с настройками вашего хоста (Например, /etc/nginx/sites-enabled/example.com.conf). В секции server необходимо включить модуль pagespeed On, указать директорию с кэшем pagespeed FileCachePath "/path/to/cache/directory", указать один из трех "уровней" конфигурации и в зависимости от этого произвести дальнейшую настройку. В итоге у вас получится что-то вроде этого

pagespeed On;
pagespeed FileCachePath "/var/cache/nginx_pagespeed/";
pagespeed RewriteLevel PassThrough;
pagespeed EnableFilters collapse_whitespace,extend_cache,rewrite_images,combine_css,rewrite_css,recompress_jpeg,recompress_png,resize_images,rewrite_javascript,combine_javascript;
pagespeed JpegRecompressionQuality 85;
pagespeed ImageRecompressionQuality 85;

Перезагружаем nginx и проверяем. Меняем настройки, перезагружаем, проверяем. И так до тех пор пока не найдете оптимальную конфигурацию.

Как вернуть все назад

Чтобы откатиться к предыдущей версии nginx необходимо удалить веб-сервер:

apt-get remove nginx

Следом удалить добавленный репозиторий, обновить пакеты и установить старую версию:

add-apt-repository --remove ppa:adegtyarev/nginx-pagespeed
apt-get update
apt-get install nginx

Иногда выполнение команды add-apt-repository --remove ppa:adegtyarev/nginx-pagespeed зависает. В этом случае можно удалить репозиторий руками:

rm /etc/apt/sources.list.d/adegtyarev-nginx-pagespeed-trusty.list

Финальный штрих - скопировать свои забекапленные конфигурационные файлы и перезагрузить веб-сервер

/etc/init.d/nginx restart

или

service nginx restart

На этом процесс "возврата к истокам" завершен.

Ссылки по теме

P.S. Все манипуляции работают и производились неоднократно на различных серверах с Ubuntu 14.04.3 LTS. При работе с другими дистрибутивами возможны нюансы.

  • 2016-02-03 22:19:20