Instalowanie opcjonalnych modułów Nginx za pomocą apt-get

37

Obecnie mam Nginx zainstalowany zgodnie z instrukcjami na stronie Nginx:

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

Skonfigurowałem Nginx i od jakiegoś czasu działa świetnie. Teraz chcę dodać niestandardowe moduły - powiedzmy moduł wysyłania postępów . Instrukcje dla tego modułu mówią, aby dodać --add-module=path/to/nginx_uploadprogress_moduledo ./configurepolecenia. Jednak nie zainstalowałem Nginx ze źródła.

Jak najlepiej poradzić sobie z tą sytuacją? Czy można powiedzieć APT, aby skompilował ze źródeł i przekazał opcje ./configure? Czy mogę skompilować na podstawie istniejącej instalacji? Co ze ścieżkami - jak je dopasować? Czy też muszę usunąć wersję zarządzaną przez APT i zacząć od nowa?

Michelle Tilley
źródło
Czy szukałeś potrzebnego modułu apt-cache search?
Khaled
1
nginx solid, nie obsługuje modułu dynamicznego.
alvosu

Odpowiedzi:

56

Zainstaluj dpkg-dev:

sudo apt-get install dpkg-dev

Dodaj repozytorium:

sudo add-apt-repository ppa:nginx/stable

Edytuj /etc/apt/sources.list.d/nginx-stable-lucid.list, dodaj dpkg-src:

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

Uwaga: (poprzedni krok mógł być już automatycznie wykonywany na Ubuntu> = 12.04 - upewnij się również, że zmieniłeś się, lucidaby odzwierciedlić swoją wersję)

Ponownie zsynchronizuj pliki indeksu pakietu:

sudo apt-get update

Uzyskaj źródła:

apt-get source nginx

Kompiluj zależności:

sudo apt-get build-dep nginx

Edytuj nginx-0.8.54 / debian / rules:

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

Pakiet kompilacji:

cd nginx-0.8.54 && dpkg-buildpackage -b

Zainstaluj pakiety:

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
źródło
1
Wspaniałe, szczegółowe instrukcje. Na koniec, podczas gdy sudo dpkg --install nginx-full_0.8.54-4ppa4~lucid_i386.deb, otrzymuję nginx-full depends on nginx-common (= 0.8.54-4ppa4~lucid); however: Package nginx-common is not installed.Jednak sudo dpkg --install nginx-common_0.8.54-4ppa4~lucid_all.debdaje 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. Jak poleciłbyś rozwiązać ten problem?
Michelle Tilley
Usuń pakiet nginx: apt-get usuń nginx
alvosu
1
Cześć alvosu, dostaję ten błąd: dpkg-buildpackage: error: debian / rules build dał błąd status wyjścia 2. Masz pomysł?
Xavi Colomer
4
@BrandonTilley, jeśli zainstalujesz go w ten sposób, możesz odinstalować go za pomocą apt-get/ dpkg, a także inne pakiety, które instalujesz za pośrednictwem apt-getbędą wiedzieć, że nginxjest zainstalowany i nie poprosi o jego zainstalowanie. Jeśli zainstalowałeś go bezpośrednio ze źródła, nie dostaniesz tego.
Carlos Campderrós,
2
Jeśli masz błąd taki jak „dpkg-buildpackage: ostrzeżenie: Nie udało się podpisać pliku .dsc i .changes”, użyj dpkg-buildpackage -uc -uszamiast dpkg-buildpackage -b. W przeciwnym razie pliki .deb nie zostaną utworzone.
Roman Newaza
1

Instalacja Nginx ze źródła jest konieczna, jeśli chcesz dodać do niego dodatkowe / (moduł innej firmy). Jeśli zostanie zainstalowany przez źródło, Nginx nie może być używany jako usługa, a Logrotate nie zostanie skonfigurowany dla Nginx. Postępuj zgodnie z tą metodą, aby zainstalować ją ze wszystkimi funkcjami, które otrzymujesz dzięki instalacjiapt-get

Rohini Choudhary
źródło
0

Słodki artykuł, który można przeczytać tutaj , wyjaśni szczegółowe informacje na temat kompilowania modułów w nginx. Zasadniczo musisz ponownie skompilować nginx za każdym razem, gdy chcesz zainstalować moduł.

Działa również podobna do tej metody .

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

 # Tutaj zakładamy, że zainstalujesz ci nginx pod / opt / nginx /.
 ./configure --prefix = / opt / nginx \
     --add-module = / path / to / headers-more-nginx-module
 robić
 dokonać instalacji
ElvinD
źródło