Установка модуля ngx_pagespeed на CentOS 7

ngx_pagespeed (или просто pagespeed) – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере. Дополнительную информацию о модуле можно найти на официальном сайте.

Данное руководство поможет установить и настроить pagespeed для Nginx.

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

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

Требования

Данное руководство написано для CentOS 7. На сайте можно найти аналогичные руководства для систем Ubuntu 14.04 и Debian 8.

Для выполнения инструкций потребуется:

  • Сервер CentOS 7.
  • Не-root пользователь с доступом к sudo (о создании такого пользователя можно прочесть здесь).

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

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

sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel

Затем создайте в домашнем каталоге папку для загрузки пакета Nginx.

mkdir ~/custom-nginx

Откройте эту папку:

cd ~/custom-nginx

После этого загрузите исходный пакет Nginx с официального сайта. На момент написания статьи последней доступной версией является 1.8.0:

sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz

Затем распакуйте полученный архив:

sudo tar zxvf nginx-1.8.0.tar.gz

Запросите контент папки ~/custom-nginx:

ls ~/custom-nginx

Команда должна вернуть:

Output of ls ~/custom-nginx
nginx-1.8.0  nginx-1.8.0.tar.gz

Чтобы добавить модуль ngx_pagespeed, нужно сначала открыть папку modules в каталоге nginx-1.8.0:

cd nginx-1.8.0/src/http/modules/

В этот каталог нужно загрузить архив ngx_pagespeed из репозитория Github.

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

После завершения загрузки извлеките содержимое архива:

sudo unzip master.zip

Это создаст новый каталог ngx_pagespeed-master в каталоге ~/custom-nginx/nginx-1.8.0/src/http/modules/. Для удобства переименуйте его в ngx_pagespeed:

sudo mv ngx_pagespeed-master ngx_pagespeed

Откройте этот каталог:

cd ngx_pagespeed

Загрузите в него пакет PageSpeed Optimization Libraries (psol), необходимый для компиляции:

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

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

В завершение извлеките архив psol в каталог ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed:

sudo tar -xzvf 1.9.32.6.tar.gz

2: Настройка и компиляция исходного кода

Теперь нужно отредактировать код Nginx и добавить в него модуль pagespeed. Откройте родительский каталог кода Nginx:

cd ~/custom-nginx/nginx-1.8.0/

Чтобы настроить код, наберите:

sudo ./configure --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid

Примечание: Замените компонент your_user именем своего пользователя. Самая важная настройка – это –add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/. Именно она добавляет pagespeed в компиляцию Nginx.

Для удобства можно изменить несколько других параметров, например, расположение лог-файлов и пользователя/группу, при помощи которых запускается сервер. Для получения более подробной информации об этих настройках, пожалуйста, обратитесь к документации.

Завершив настройку, запустите компиляцию:

sudo make

Этот процесс займёт несколько минут (в зависимости от ресурсов сервера). После этого можно установить программу:

sudo make install

Пользовательская установка Nginx хранится в каталоге/usr/local/nginx. Теперь нужно создать две символьные ссылки. Одна из них – на конфигурационный файл:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Теперь конфигурационные файлы будут доступны в каталоге /etc/nginx/.

Вторая символьная ссылка – на главный бинарный файл в каталоге /usr/sbin/, чтобы его легче было найти и добавить в сценарий запуска. Для этого выполните команду:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

3: Создание сценария запуска

Предыдущий процесс установки выполняет несколько рутинных задач (создание необходимой учётной записи пользователя и группы, при помощи которых будет работать Nginx). Однако загрузочный скрипт придется создать вручную. К счастью, для Nginx на CentOS 7 доступны уже готовые скрипты на сайте проекта.

Для начала создайте новый файл в каталоге /etc/init.d/:

sudo nano /etc/init.d/nginx

Затем перейдите по этой ссылке, скопируйте скрипт и вставьте его в файл.

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

sudo chmod +x /etc/init.d/nginx

После этого можно запустить Nginx:

sudo service nginx start

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

sudo chkconfig nginx on

4: Включение модуля pagespeed

После установки сервера Nginx нужно включить ngx_pagespeed.

Но сначала нужно создать папку, в которой модуль сможет хранить кэш файлов сайта:

sudo mkdir -p /var/ngx_pagespeed_cache

Передайте права на эту папку пользователю Nginx, чтобы веб-сервер имел необходимый уровень доступа.

sudo chown -R nobody:nobody /var/ngx_pagespeed_cache

Откройте главный конфигурационный файл Nginx, nginx.conf, для редактирования:

sudo nano /etc/nginx/nginx.conf

Добавьте в блок server следующие строки и сохраните изменения:

##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# 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" { }

Примечание: Этот код можно добавить в любую точку данного раздела; но в данном примере этот код будет добавлен в конец блока.

Теперь файл /etc/nginx/nginx.conf выглядит так:
...
http {
include       mime.types;
default_type  application/octet-stream;
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';
#access_log  logs/access.log  main;
sendfile        on;
#tcp_nopush     on;
#keepalive_timeout  0;
keepalive_timeout  65;
#gzip  on;
server {
listen       80;
server_name  localhost;
#charset koi8-r;
#access_log  logs/host.access.log  main;
##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# 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" { }
location / {
root   html;
index  index.html index.htm;
}
...

Примечание: Конфигурацию pagespeed нужно добавить во все существующие блоки server.

Перезапустите Nginx:

sudo service nginx restart

5: Тестирование установки

Чтобы убедиться, что модуль ngx_pagespeed работает, запустите бинарный файл Nginx.

sudo /usr/sbin/nginx -V

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

nginx version: nginx/1.8.0
...
configure arguments: --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
...

Однако это ещё не значит, что модуль включен и работает на сайте. Проверить это можно при помощи инструмента curl. Запросите заголовок X-Page-Speed:

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

Если модуль работает должным образом, на экране появится версия:

X-Page-Speed: 1.9.32.6-7321

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

Заключение

Теперь ве-сервер Nginx собран из исходного кода с пользовательским модулем pagespeed.

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

Tags: , ,

Добавить комментарий