Installing optional Nginx modules with apt-get

I currently have Nginx installed via the instructions on the Nginx site:

nginx=stable
sudo su -
add-apt-repository ppa:nginx/$nginx
apt-get update 
apt-get install

I have configured Nginx and it has been running great for a little while. Now, I want to add some custom modules--say, the Upload Progress Module. The instructions for this module say to add --add-module=path/to/nginx_uploadprogress_module to your ./configure command. However, I did not install Nginx from source.

What is the best way to handle this situation? Is it possible to tell APT to compile from source and pass options to ./configure? Can I compile over the existing installation? What about paths--how do I make them match? Or do I have to remove the APT managed version and start over?


Solution 1:

Install dpkg-dev:

sudo apt-get install dpkg-dev

Add repository:

sudo add-apt-repository ppa:nginx/stable

Edit /etc/apt/sources.list.d/nginx-stable-lucid.list, add dpkg-src:

deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main
deb-src http://ppa.launchpad.net/nginx/stable/ubuntu lucid main

note: (the previous step may have already been automatically performed on Ubuntu >= 12.04 - also make sure that you change lucid to reflect your version)

Resynchronize the package index files:

sudo apt-get update

Get sources:

apt-get source nginx

Build dependencies:

sudo apt-get build-dep nginx

Edit nginx-0.8.54/debian/rules:

config.status.full: config.env.full config.sub config.guess
...
--add-module=path/to/nginx_uploadprogress_module

Build package:

cd nginx-0.8.54 && dpkg-buildpackage -b

Install packages:

sudo dpkg --install nginx-common_1.2.4-2ubuntu0ppa1~precise_all.deb

sudo dpkg --install nginx-full_1.2.4-2ubuntu0ppa1~precise_amd64.deb

Solution 2:

Since squeeze in Debian and since oneric in Ubuntu, there are some (like headers-more-module I needed) in

apt-get install nginx-extras

Solution 3:

Installing Nginx from source is necessary if you want to add extra/(third party module) to it. If installed via source the Nginx can't be used as a service and logrotate doesn't gets setup for Nginx. Follow this method to get it installed with all functionalities which you get from installing via apt-get