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


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

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

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

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

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

Можно посмотреть справку по 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 http://www.tech-notes.net/wp-content/uploads/2014/05/nginx
chmod +x /etc/init.d/nginx

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

/etc/init.d/nginx start

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

netstat -nlp |grep nginx

Радуемся.

Share Button
(Visited 815 times, 1 visits today)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *