Tag Archives: Module

Установка модуля для Nginx на линуксе (debian)

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

Сходу столкнулся с проблемой: на nginx нужно добавить модуль который по умолчанию не включен (image_filter). На фряхе для этого достаточно было бы сделать make config и отметить нужный модуль, но не на линуксе. Дебиану нужно для этого скачать исходники, вручную их поправить, собрать и установить. А потом еще смотреть что бы не обновить nginx со старым набором модулей.

# получаем исходники
apt-get source nginx
# переходим в папку (у вас может отличаться т.к. включает версию)
cd nginx-1.4.4
# открываем для редактирование файл с конфигом билда
nano debian/rules
# ищем строку ./configure и где то среди прочих параметров добавляем эту строку:
--with-http_image_filter_module \
# сохраняем и выходим с файла

# компилируем модуль
dpkg-buildpackage -us -uc -nc
# устанавливаем
dpkg -i nginx_0.7.65-1ubuntu2_amd64.deb

На этапе выполнения команды

dpkg-buildpackage -us -uc -nc

возникла ошибка:

dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 7.0.50~) libssl-dev (>= 0.9.7) libpcre3-dev zlib1g-dev

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

apt-get install libssl-dev debhelper  libpcre3-dev zlib1g-dev

Пробуем заново

dpkg-buildpackage -us -uc -nc

Снова получаю ошибку

./configure: error: the HTTP image filter module requires the GD library.
You can either do not enable the module or install the libraries.

make[1]: *** [override_dh_auto_build] Error 1
make[1]: Leaving directory `/root/nginx-1.4.4'

Окей, ставим GD. Здесь еще надо отметить что нужна не libgd2-noxpm, а версия libgd2-noxpm-dev.

Ставим:

 apt-get install libgd2-noxpm-dev

Опять возвращаемся к

dpkg-buildpackage -us -uc -nc

На этот раз очередная ошибка

make[2]: Entering directory `/root/nginx-1.4.4'
make[2]: *** No rule to make target `build', needed by `default'. Stop.
make[2]: Leaving directory `/root/nginx-1.4.4'
dh_auto_build: make -j1 returned exit code 2
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory `/root/nginx-1.4.4'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

После этого я удалил папку с исходниками и повторил поцедуру заново (зависимости то уже стоят) и в итоге получил такое

dpkg-deb: building package `nginx' in `../nginx_1.4.4-1~wheezy_amd64.deb'.
dpkg-deb: building package `nginx-debug' in `../nginx-debug_1.4.4-1~wheezy_amd64.deb'.
dpkg-genchanges >../nginx_1.4.4-1~wheezy_amd64.changes
dpkg-genchanges: including full source code in upload
dpkg-source --after-build nginx-1.4.4
dpkg-buildpackage: full upload (original source is included)

Из этого сообщения нам нужно скопировать название файла итогового.  И это nginx_1.4.4-1~wheezy_amd64.deb

Перехоим на директорию выше и устанавливаем модуль:

cd ../
dpkg -i nginx_1.4.4-1~wheezy_amd64.deb

Вроде все поставилось: Setting up nginx (1.4.4-1~wheezy) …

На этом квест закончился. Первое знакомство с линуксом совсем не добавляет к нему симпатии. То что я бы сделал простым включением опции в freebsd на дебиане нужно делать долго и с мучениями.

А вот еще по базовой настройке nginx, php-fpm, mysql без особых модулей можно почитать здесь. Написано хорошо и понятно.