Instalación de módulos Nginx opcionales con apt-get

38

Actualmente tengo Nginx instalado a través de las instrucciones en el sitio de Nginx:

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

He configurado Nginx y ha estado funcionando muy bien por un tiempo. Ahora, quiero agregar algunos módulos personalizados, por ejemplo, el Módulo de progreso de carga . Las instrucciones para este módulo dicen agregar --add-module=path/to/nginx_uploadprogress_modulea su ./configurecomando. Sin embargo, no instalé Nginx desde la fuente.

¿Cuál es la mejor manera de manejar esta situación? ¿Es posible decirle a APT que compile desde la fuente y pase las opciones ./configure? ¿Puedo compilar sobre la instalación existente? ¿Qué pasa con los caminos? ¿Cómo los hago coincidir? ¿O tengo que eliminar la versión administrada de APT y comenzar de nuevo?

Michelle Tilley
fuente
¿Buscó el módulo necesario usando apt-cache search?
Khaled
1
nginx solid, no es compatible con el módulo dinámico.
alvosu

Respuestas:

56

Instale dpkg-dev:

sudo apt-get install dpkg-dev

Añadir repositorio:

sudo add-apt-repository ppa:nginx/stable

Editar /etc/apt/sources.list.d/nginx-stable-lucid.list, agregar dpkg-src:

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

nota: (es posible que el paso anterior ya se haya realizado automáticamente en Ubuntu> = 12.04; también asegúrese de cambiar lucidpara reflejar su versión)

Vuelva a sincronizar los archivos de índice del paquete:

sudo apt-get update

Obtenga fuentes:

apt-get source nginx

Construir dependencias:

sudo apt-get build-dep nginx

Edite nginx-0.8.54 / debian / rules:

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

Paquete de construcción:

cd nginx-0.8.54 && dpkg-buildpackage -b

Instalar paquetes:

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

sudo dpkg --install nginx-full_1.2.4-2ubuntu0ppa1~precise_amd64.deb
alvosu
fuente
1
Maravillosas instrucciones detalladas. Al final, mientras sudo dpkg --install nginx-full_0.8.54-4ppa4~lucid_i386.debestoy, estoy recibiendo nginx-full depends on nginx-common (= 0.8.54-4ppa4~lucid); however: Package nginx-common is not installed.Sin embargo, sudo dpkg --install nginx-common_0.8.54-4ppa4~lucid_all.debestá dando dpkg: error processing nginx-common_0.8.54-4ppa4~lucid_all.deb (--install): trying to overwrite '/usr/share/nginx/www/50x.html', which is also in package nginx 0:0.8.54-4ppa2~lucid. ¿Cómo recomendaría resolver este problema?
Michelle Tilley
Eliminar el paquete nginx: apt-get remove nginx
alvosu
1
Hola alvosu, recibo este error: dpkg-buildpackage: error: debian / rules build dio el estado de salida de error 2. ¿Alguna idea?
Xavi Colomer
44
@BrandonTilley si lo instala de esta manera, puede desinstalarlo a través de apt-get/ dpkg, y también otros paquetes que instale a través de él apt-getsabrán que nginxestá instalado y no le pedirán que lo instale. Si lo instaló directamente desde la fuente, no obtendrá esto.
Carlos Campderrós
2
Si tiene un error como este "dpkg-buildpackage: advertencia: no se pudo firmar el archivo .dsc y .changes", use en dpkg-buildpackage -uc -uslugar de dpkg-buildpackage -b. De lo contrario, los archivos .deb no se crearán.
Roman Newaza
1

La instalación de Nginx desde la fuente es necesaria si desea agregarle / (módulo de terceros). Si se instala a través de la fuente, Nginx no se puede usar como servicio y logrotate no se configura para Nginx. Siga este método para instalarlo con todas las funcionalidades que obtiene de la instalación a través deapt-get

Rohini Choudhary
fuente
0

El dulce artículo que se puede leer aquí explicará la información detallada sobre cómo compilar módulos en nginx. Básicamente, debe volver a compilar el nginx cada vez que desee instalar un módulo.

También similar a este método también funcionará.

 wget 'http://nginx.org/download/nginx-1.9.3.tar.gz'
 tar -xzvf nginx-1.9.3.tar.gz
 cd nginx-1.9.3 /

 # Aquí asumimos que instalarías nginx en / opt / nginx /.
 ./configure --prefix = / opt / nginx \
     --add-module = / ruta / a / headers-more-nginx-module
 hacer
 hacer instalar
ElvinD
fuente