Installer des modules optionnels Nginx avec apt-get

38

Nginx est actuellement installé via les instructions du site Nginx:

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

J'ai configuré Nginx et il fonctionne très bien depuis un moment. Maintenant, je veux ajouter des modules personnalisés - par exemple, le module de progression de téléchargement . Les instructions pour ce module disent d'ajouter --add-module=path/to/nginx_uploadprogress_moduleà votre ./configurecommande. Cependant, je n'ai pas installé Nginx à partir des sources.

Quelle est la meilleure façon de gérer cette situation? Est-il possible de dire à APT de compiler à partir de la source et de passer des options à ./configure? Puis-je compiler sur l'installation existante? Qu'en est-il des chemins - comment puis-je les faire correspondre? Ou dois-je supprimer la version gérée APT et recommencer?

Michelle Tilley
la source
Avez-vous cherché le module nécessaire en utilisant apt-cache search?
Khaled
1
nginx solid, il ne supporte pas le module dynamique.
Alvosu

Réponses:

56

Installez dpkg-dev:

sudo apt-get install dpkg-dev

Ajouter un référentiel:

sudo add-apt-repository ppa:nginx/stable

Editez /etc/apt/sources.list.d/nginx-stable-lucid.list, ajoutez dpkg-src:

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

remarque: (l'étape précédente a peut-être déjà été effectuée automatiquement sur Ubuntu> = 12.04 - assurez-vous également que vous modifiez lucidvotre version)

Resynchronisez les fichiers d'index du package:

sudo apt-get update

Obtenir des sources:

apt-get source nginx

Construire des dépendances:

sudo apt-get build-dep nginx

Éditez nginx-0.8.54 / debian / rules:

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

Paquet de construction:

cd nginx-0.8.54 && dpkg-buildpackage -b

Installer les paquets:

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
la source
1
Magnifiques instructions détaillées. À la fin, pendant que sudo dpkg --install nginx-full_0.8.54-4ppa4~lucid_i386.debje reçois, nginx-full depends on nginx-common (= 0.8.54-4ppa4~lucid); however: Package nginx-common is not installed.cependant, sudo dpkg --install nginx-common_0.8.54-4ppa4~lucid_all.debc'est donner 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. Comment recommanderiez-vous la résolution de ce problème?
Michelle Tilley
Supprimer le paquet nginx: apt-get remove nginx
alvosu Le
1
Bonjour alvosu, j'obtiens cette erreur: dpkg-buildpackage: erreur: la compilation debian / rules a donné le statut de sortie d'erreur 2. Une idée?
Xavi Colomer
4
@BrandonTilley si vous l'installez de cette façon, vous pourrez le désinstaller via apt-get/ dpkg, et les autres packages que vous aurez installés via apt-getsauront que celui-ci nginxest déjà installé et ne vous demandera pas de l'installer. Si vous l'avez installé directement depuis la source, vous ne l'obtiendrez pas.
Carlos Campderrós le
2
Si vous rencontrez le type d'erreur "dpkg-buildpackage: warning: la signature du fichier .dsc et du fichier .changes a échoué", utilisez-le à la dpkg-buildpackage -uc -usplace de dpkg-buildpackage -b. Sinon, les fichiers .deb ne seront pas créés.
Roman Newaza
29

Depuis compression dans Debian et depuis Oneric dans Ubuntu, il y a certains (comme headers-more-moduleje avais besoin) dans

apt-get install nginx-extras
Victor Sergienko
la source
3
Dotdeb fournit un joli paquet nginx-extras: dotdeb.org/instructions
Bergius
Pour la version nginx-plus, apt-get install nginx-extras fonctionne également très bien! Merci
Scaryguy
1

L'installation de Nginx à partir du code source est nécessaire si vous souhaitez y ajouter un module supplémentaire (/ module tiers). Si installé via la source, Nginx ne peut pas être utilisé en tant que service et logrotate n'est pas configuré pour Nginx. Suivez cette méthode pour l’installer avec toutes les fonctionnalités que vous obtenez de l’installation viaapt-get

Rohini Choudhary
la source
0

Un doux article qui peut être lu ici expliquera les informations détaillées sur la compilation de modules dans nginx. Fondamentalement, vous devez recompiler le nginx chaque fois que vous souhaitez installer un module.

Aussi similaire à cette méthode fonctionnera également.

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

 # Ici, nous supposons que vous installeriez nginx sous / opt / nginx /.
 ./configure --prefix = / opt / nginx \
     --add-module = / chemin / vers / en-têtes-plus-nginx-module
 faire
 faire installer
ElvinD
la source