Администрирование серверов Linux

Установка nginx из исходников

Как установить nginx из исходных текстов

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

  • В вашем дистрибутиве нет нужной программы
  • В вашем дистрибутиве нет нужной версии программы
  • В репозитории находится программа с недостающими модулями, или Вам нужны специфические опции сборки

Логично, что в репозитории лежат программы, собранные для масс потребителей. Если у Вас уникальный проект(на своем движке), либо сложный сервис, приходится компилировать программу самостоятельно, только с тем набором модулей и опций, которые Вам нужны.

В данной статье мы рассмотрим nginx на примере сборки из исходников для CentOS.

Установка необходимых библиотек и подготовка к установке

Устанавливает через yum google-tools и perl-extUtils библиотеку:

yum -y install google-perftools google-perftools-devel perl-ExtUtils-Embed

Создаем пользователя

useradd nginx -s /bin/false -M -U

Создаем нужные папки

mkdir /var/run/nginx/
chown -R nginx:nginx /var/run/nginx/
mkdir /var/log/nginx/
chown -R nginx:nginx /var/log/nginx/

Устанавливаем nginx

Переходим в каталог /usr/src и скачиваем nginx, вместе с патчами от гугла

cd /usr/src
wget http://nginx.org/download/nginx-1.7.11.tar.gz

Распаковываем

tar xvzf nginx*
rm -f nginx-1.7.11.tar.gz
mv nginx-1.7.11 nginx
cd nginx

Скачиваем патчи от Google

wget -O release-1.8.31.3-beta.zip https://github.com/pagespeed/ngx_pagespeed/archive/v1.8.31.3-beta.zip
unzip release-1.8.31.3-beta.zip
cd ngx_pagespeed-1.8.31.3-beta/
wget --no-check-certificate -O 1.8.31.3.tar.gz https://dl.google.com/dl/page-speed/psol/1.8.31.3.tar.gz
tar -xzvf 1.8.31.3.tar.gz

Конфигурируем nginx

cd /usr/src/nginx
./configure --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/subsys/nginx --add-module=ngx_pagespeed-1.8.31.3-beta --user=nginx --group=nginx --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --without-http_geo_module --without-http_ssi_module --without-http_empty_gif_module --without-http_browser_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_scgi_module --without-http_uwsgi_module --prefix=/server/nginx --with-ipv6 --with-google_perftools_module --http-log-path=/var/log/nginx/access_log --with-http_ssl_module --http-scgi-temp-path=/tmp/nginx-tmp --http-uwsgi-temp-path=/tmp/nginx-tmp --http-fastcgi-temp-path=/tmp/nginx-tmp --http-proxy-temp-path=/tmp/nginx-tmp --http-client-body-temp-path=/tmp/nginx-tmp

Описание используемых опций nginx

  • --error-log-path= Путь к файлу ошибок
  • --pid-path= Путь к PID файлу
  • --lock-path= Путь к lock файлу
  • --add-module=ngx_pagespeed-1.8.31.3-beta Добавляем модуль от гугла
  • --user=nginx Устанавливаем пользователя nginx по умолчанию
  • --group=nginx Устанавливаем группу nginx по умолчанию
  • --with-http_realip_module Добавляем realip модуль, если нужен. В нашем случае используем для apache, что бы передавать реальный айпи клиента
  • --with-http_stub_status_module Добавляем stub модуль. В нашем случае был нужен для мониторинга
  • --with-http_gzip_static_module Модуль для отдачи сжатого статического контента gzip-ом
  • --without-http_geo_module Отключаем GEO модуль
  • --without-http_ssi_module Отключаем SSI
  • --without-http_empty_gif_module Отключаем Empty GIF
  • --without-http_browser_module Отключаем HTTP Browser
  • --without-mail_pop3_module Отключаем Mail POP3 модуль
  • --without-mail_imap_module Отключаем IMAP модуль
  • --without-mail_smtp_module Отключаем SMTP модуль
  • --without-http_scgi_module Отключаем поддержку CGI
  • --without-http_uwsgi_module Отключаем uwcgi
  • --prefix=/server/nginx По умолчанию устанавливаем с префиксом /server/nginx/sbin, etc
  • --with-ipv6 Включаем поддержку ipv6
  • --with-google_perftools_module Включаем поддержку нашего модуля от google page speed
  • --http-log-path=/var/log/nginx/access_log Задаем файл лога запросов по умолчанию
  • --with-http_ssl_module Включаем поддержку SSL
  • --http-scgi-temp-path Устанавливаем путь для временных файлов scgi
  • --http-uwsgi-temp-path Устанавливаем путь для временных файлов uwsgi
  • --http-fastcgi-temp-path Устанавливаем путь для временных файлов fastcgi
  • --http-proxy-temp-path Устанавливаем путь для временных файлов проксирования запросов
  • http-client-body-temp-path Устанавливаем путь для временных файлов отдачи данных(статики, ответа от прокси, etc)

Компилируем и устанавливаем в наш префикс:

make
make install

Конфигурацию nginx рассмотрим в следующей статье

Задать вопрос специалисту