Как добавить ngx_pagespeed в Nginx на CentOS 7

Вступление

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

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

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

Предпосылки

Это руководство было написано для CentOS 7. Ссылка: / 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-debian-8 [версия Debian 8] также доступна.

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

  • A CentOS 7 Капли

  • Пользователь root, не являющийся пользователем root (для получения подробной информации обратитесь к Initial Server Setup с CentOS 7.)

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

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

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

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

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

mkdir ~/custom-nginx

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

cd ~/custom-nginx

Затем загрузите исходный пакет Nginx в этот каталог с официального сайта its. В настоящее время последняя версия 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-nginxnginx-1.8.0  nginx-1.8.0.tar.gz

Как вы можете видеть, версия исходного пакета Nginx на момент написания этого руководства была 1.8.0. Чтобы начать добавлять модуль 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

Когда загрузка завершится, распакуйте ее с помощью утилиты + unzip + следующим образом:

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

Зайдите в новый каталог + 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.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//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

Наиболее важным параметром конфигурации из вышеперечисленного является + - add-module = / home // custom-nginx / nginx-1.8.0 / src / http / modules / ngx_pagespeed / +. Это гарантирует, что модуль pagespeed будет частью компиляции Nginx. Пожалуйста, не забудьте заменить его на этом пути.

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

После завершения настройки запустите компиляцию с помощью команды:

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 - Создайте сценарий запуска

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

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

sudo nano /etc/init.d/nginx

Затем перейдите по адресу https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/, скопируйте сценарий и вставьте его в этот новый файл.

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

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

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

sudo service nginx start

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

sudo chkconfig nginx on

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

Теперь у вас установлен 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 + и сохраните изменения:

/etc/nginx/nginx.conf

##
# 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:

/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;














       location / {
           root   html;
           index  index.html index.htm;
       }
...

Кроме того, убедитесь, что добавили строки конфигурации pagepeed в every дополнительный файл блока + server +, который у вас может быть.

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

sudo service nginx restart

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

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

sudo /usr/sbin/nginx -V

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

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

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

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

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

OutputX-Page-Speed: 1.9.32.6-7321

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

Заключение

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

Related