Недавно сам ставил nginx на сервере с Ubuntu 12.04 и также столкнулся с необходимостью добавления нестандартных модулей.
Решение нашел
на serverfault.
После использования предлагаемого метода в систему будет установлен nginx с использованием apt-get (т.е. система будет в курсе, что в нее установлен nginx).
Для начала необходимо установить инструменты для сборки пакетов deb:
sudo apt-get install dpkg-dev
Также нужно добавить репозиторий nginx, чтобы иметь доступ к последним версиям сервера:
sudo add-apt-repository ppa:nginx/stable
После добавления репозитория необходимо руками добавить репозиторий с исходниками в файле
/etc/apt/sources.list.d/nginx-stable-lucid.list
:
Для обновления списка пакетов с учетом новых репозиториев выполняем:
sudo apt-get update
Это были приготовления. Дальше собственно сборка nginx с необходимыми модулями.
Перейдите в папку,, куда хотите скачать исходники nginx и выполните:
apt-get source nginx
Соберите зависимости nginx:
sudo apt-get build-dep nginx
В ту же папку, куда были скачаны исходники nginx, скачиваете нужные модули и добавляете ссылки на них в строку конфигурации nginx в файле
<директория с исходниками nginx>/nginx-1.2.3/debian/rules
:
config.status.full: config.env.full config.sub config.guess
...
--add-module=path/to/nginx_uploadprogress_module
После этого собираем пакет(ы):
cd nginx-1.2.3 && dpkg-buildpackage -b
Примечание: В результате будут собраны несколько пакетов, как это указано в debian/rules. Устанавливать нужно только один, тот, что full (см. ниже).
Устанавливаем nginx:
sudo dpkg -i nginx-full_1.2.3-0ubuntu0ppa3~precise_amd64.deb
Хоть и выглядит устрашающе, на второй-третий раз уже на автомате.
Примечание: Если после использования этого способа сделать
apt-get upgrade
, то nginx переставится с дефолтным конфигом. Будьте внимательны.