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

1 minute read

В разных случаях приходится компилировать ПО имея его исходники. Опять же хочу разводить демагогию на эту тему. Хочу рассказать как собрать nginx последней версии на CentOS v.6.3.

Итак идем на nginx.org и скачиваем последнюю версию. (в моем случае это 1.9.9)

wget http://nginx.org/download/nginx-1.9.9.tar.gz

Распаковываем архив:

tar xf nginx-1.9.9.tar.gz && cd nginx-1.9.9

Можно посмотреть справку по configure и включить только то, что нужно в нашу сборку:

./configure -help |less

Между прочим, можно почитать требования к CMS системе, на которой написан сайт и включить только то, что для нее нужно.

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

-prefix=/etc/nginx - папка для установки  
-user=nginx - пользователь, под которым будет выполняться nginx  
-group=nginx - группа  
-with-http_ssl_module - включаем поддержку ssl  
-with-http_spdy_module - включаем поддержку spdy  
-with-http_realip_module - включаем поддержку realip  
-with-http_geoip_module - включаем поддержку geoip  
-with-http_gzip_static_module - включаем поддержку gzip для статического контента  
-with-http_auth_request_module - включаем поддержку базовой авторизации  
-with-http_perl_module - включаем поддержку perl  
-http-log-path=/var/log/nginx/access.log - путь к логу.

Добавляем пользователя (группа для него будет создана автоматически):

useradd -d /etc/nginx nginx

Создаем папку для логов:

mkdir /var/log/nginx/  
chown nginx:nginx /var/log/nginx/

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

yum install pcre-devel openssl-devel perl-ExtUtils-Embed

Логика такая: выбираю dev пакеты, остальные - втягиваются, как зависимости

В ходе сбора пакета мне выплюнуло вот такую вот ошибку:

./configure: error: the GeoIP module requires the GeoIP library.  
You can either do not enable the module or install the library.

Я так хочу, что бы GeoIp был включен в сборку, придется его тоже ставить руками, поскольку yum его не нашел.

wget http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz  
tar xf GeoIP-latest.tar.gz && cd cd GeoIP-1.*  
./configure  
make  
make install

В ход установки в консоле пробежало сообщение:

Libraries have been installed in:  
/usr/local/lib

Подозреваю, что именно туда оно и было установлено. Сделаем симлинк на всякий случай. Боюсь, что nginx там не увидит нужную библиотеку:

ln -s /usr/local/lib/libGeoIP.so.1.6.0 /usr/lib64/libGeoIP.so.1

После этого nginx собирался без проблем:

./configure -prefix=/etc/nginx -user=nginx -group=nginx -with-http_ssl_module -with-http_spdy_module -with-http_realip_module -with-http_geoip_module -with-http_gzip_static_module -with-http_auth_request_module -with-http_perl_module -http-log-path=/var/log/nginx  
make  
make install

После долгих раздумий на виртуальной машине оно все таки скомпилировалось и установилось.

После этого осталось сделать init скрипт для запуска. К сожалению в папке с исходниками его нету.
Его можно скачать с моего сайта:

wget -O /etc/init.d/nginx /wp-content/uploads/2014/05/nginx  
chmod +x /etc/init.d/nginx

Дальше запускаем:

/etc/init.d/nginx start

и проверяем или он запущен:

netstat -nlp |grep nginx

Радуемся.