Jak mogę zainstalować Apache z określoną wersją?


26

Z powodu aktualizacji Ubuntu popełniłem błąd, aktualizując Apache 2.2 do 2.4 - wiele rzeczy poszło nie tak.

Nie mam pojęcia, jak określić wersję po apt-get remove apache2. apt-get install apache2zawsze instaluje 2.4.

Jak mogę to zrobić?

Odpowiedzi:


22

Musisz wykonać następujące czynności:

apt-cache showpkg <pachagename>

Powyższe polecenie wyświetli listę dostępnych wersji tego pakietu. Następnie wybierz potrzebną wersję i wykonaj następujące czynności.

apt-get install <packagename>=<complete version name>

Przykład:

apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7

2
Jedyną wersją, która wyświetla się dla mnie, jest wersja 2.4 na Ubuntu 16. Jest to duży problem, ponieważ 2.4 ma problemy, które całkowicie zepsuły moją stronę.
— felwithe

2
Wersja 2.2.14-5ubuntu8.7 dla apache2 nie została znaleziona
— Braian Mellor

Dzięki - działało to lepiej niż próba przejścia drogą PPA.
— M Thomas

5

Jak zainstalować Apache 2.2 na dystrybucji Ubuntu, która nie ma go w repozytoriach.

Wymagania

Aby to zrobić, musisz mieć zainstalowany pakiet niezbędny do kompilacji.

~# sudo apt-get install build-essential

Aby dać Apache możliwość kompresji danych wyjściowych do przeglądarek, które ją obsługują, musisz zainstalować zlib. Pobierz bieżącą wersję z Zlip Hompage (zlib-1.2.11.tar.gz w chwili pisania), rozpakuj go, przejdź do wyodrębnionego folderu, skompiluj i zainstaluj.

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local
make
sudo make install

Zainstaluj Apache 2.2

Pobierz aktualną wersję ze strony pobierania Apache (httpd-2.2.32.tar.gz w chwili pisania), rozpakuj ją, przejdź do wyodrębnionego folderu, skompiluj i zainstaluj.

wget http://www-eu.apache.org/dist/httpd/httpd-2.2.32.tar.gz
tar -xvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
make
sudo make install

Uruchom Apache:

sudo /usr/local/apache2/bin/apachectl start

Sprawdź, czy wszystko jest w porządku

Przejdź do http: // localhost w przeglądarce, gdzie powinieneś zobaczyć komunikat „To działa!”.

Alternatywnie możesz to zrobić przez terminal:

wget -qO- http://localhost | grep "It works!"

Który powinien wypisać coś takiego w terminalu:

<html><body><h1>It works!</h1></body></html>

Utwórz „usługę” dla Apache2

sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22

Wskazówka: możesz teraz wywołać apachectl z usługą sudo apache22 .

Uruchom Apache podczas uruchamiania

sudo sed -i '2i #\n### BEGIN INIT INFO\n# Provides:             apache2\n# Required-Start:       $remote_fs\n# Required-Stop:        $remote_fs\n# Default-Start:        2 3 4 5\n# Default-Stop:         0 1 6\n# Description:          apache2\n# Short-Description:    The Apache webserver\n### END INIT INFO' /etc/init.d/apache22
sudo /usr/sbin/update-rc.d apache22 defaults

Bezpieczny Apache

sudo service apache22 stop
sudo adduser --system apache
sed -i -e 's/User daemon/User apache/g' /usr/local/apache2/conf/httpd.conf
sed -i -e 's/Group daemon/Group nogroup/g' /usr/local/apache2/conf/httpd.conf
sudo service apache22 start

Sprawdź nowe ustawienia

ps -aux | grep httpd

Jeśli wynik końcowy ostatniego polecenia pokazuje niektóre wiersze zaczynające się od „apache”, to wszystko jest w porządku.

Skonfiguruj swoje witryny

Jeśli chcesz skonfigurować apache tylko dla jednej strony, po prostu edytuj httpd.conf

nano /usr/local/apache2/conf/httpd.conf

Podstawowe parametry, które możesz chcieć zmodyfikować to:

ServerName www.example.com:80
DocumentRoot "/usr/local/apache2/htdocs"

<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Jeśli chcesz skonfigurować więcej niż jedną witrynę, zajrzyj na httpd-vhosts.conf

nano /usr/local/apache2/conf/httpd.conf

Będziesz musiał dodać sekcję <Directory> z <VirtualHost> podobną do powyższej, ale dla katalogu głównego VitualHost. Na przykład:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
    <Directory "/usr/local/apache2/docs/dummy-host.example.com">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Po tych instrukcjach napotykam na to: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl defaults insserv: skrypt apachectl: usługa apache2 już podana! insserv: wychodzę teraz! update-rc.d: error: insserv odrzucił nagłówek skryptu
— Dženan

Rzeczywiście, na Ubuntu 16.04 jest już /etc/init.d/apache2plik z radykalnie różną zawartością.
— Dženan

Usunięcie niepoprawnego pliku prowadzi nas do tego kroku, ale sudo service apachectl stopnie zatrzymuje usługi.
— Dženan

„sudo service apachectl stop” nie działałoby tylko, jeśli nie wykonałeś kroków opisanych w części Uruchamianie Apache podczas uruchamiania . Po przeczytaniu mojej odpowiedzi postanowiłem ją zmienić ... po pierwsze, apachectl to naprawdę zła nazwa dla „usługi” i źle było uczynić ją częścią tej sekcji. Zamiast tego wykonasz teraz usługę sudo apache22 start / stop PO, postępując zgodnie z krokami pod „Tworzenie” usługi dla Apache2 .
— Johano Fierra

Postanowiłem zrezygnować z tego podejścia i zaktualizować plik konfiguracyjny, aby był zgodny z Apache 2.4. W ten sposób mniej bólów głowy. Ale dziękuję za szczegółową odpowiedź!
— Dženan,

4

Zobacz instrukcje Ubuntu na temat przypinania pakietów :

Edytuj plik /etc/apt/preferences

Plik „preferencji” to miejsce, w którym ma miejsce faktyczne przypięcie. Aby przypiąć paczkę, ustaw jej Pin-Priority na wyższy numer. Oto przykład:

Package: apache2
Pin: release n=raring
Pin-Priority: 1000

Testuj przed uruchomieniem apt-get updatelub apt-get installzapt-cache policy apache2

Zobacz man apt_preferencesszczegóły. Wybrałem raringwydanie przypinania , ponieważ w ten sposób nadal będziesz otrzymywać aktualizacje w gałęzi 2.2.x. Nie zapomnij, że musisz udostępnić pakiet APT, dodając raringadresy URL repozytorium.

Aktualizacja :

Podobnie jak w przypadku raringEOL, możesz użyć nadal obsługiwanych preciselub zarchiwizowanych raringpakietów z http://old-releases.ubuntu.com .

Korzystanie z tego /etc/apt/sources.list.d/raring.listpozwoli na zainstalowanie starszych pakietów:

deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse

Cześć. To wydaje się być dokładnie tym, czego chcę. Czy możesz również dodać polecenia dodawania adresów URL repozytorium Raring? Nie mogę znaleźć odpowiednich.
— Ravish Bhagdev

Zaktualizowałem swoją odpowiedź.
— fuero

Niezły chwyt, poprawiłem lustrzaną listę APT do raring. Oczywiście, jeśli chcesz korzystać z precisewersji, /etc/apt/preferencesmusisz ją odpowiednio zmienić.
— fuero

Wielkie dzięki. W każdym razie okazuje się, że jest puszką robaków ... po wykonaniu określonych kroków będzie musiał podążać trasą maszyny wirtualnej jako próbą śledzenia (a także wypróbowania opcji install -f i wyczyszczenia). Następujące pakiety mają niespełnione zależności. apache2: Zależy: apache2-mpm-worker (= 2.2.22-1ubuntu1.7), ale nie zostanie zainstalowany lub apache2-mpm-prefork (= 2.2.22-1ubuntu1.7), ale nie będzie zainstalowane lub .... itd. itd.
— Ravish Bhagdev

2

Aby zainstalować apache2.2, użyj następującego procesu:

W późniejszej dystrybucji (np. 16.04) pobrałem 2.2.31 ze strony Apache.

Zbudowałem go przy użyciu następującej konfiguracji:

./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache  > conf.txt

Potem oczywiście poprawianie plików httpd.conf i ssl.conf.

Potem po prostu uruchamiam ./httpd -k start

I to działa!

zauważ, że dodałem apache2.4 poprzez apt-get, ale nigdy go nie usunąłem. Oznacza to, że po uruchomieniu systemu muszę zabić proces Apache2. A potem mogę uruchomić apache2.2. Musiałem zainstalować apache2.4, aby używać apachectl, ale później go rozwiązałem, ponieważ używam ./httpd


Spójrz na moją odpowiedź dotyczącą używania apachectl dla Apache 2.2, być może będziesz musiał najpierw usunąć wersję 2.4 (/usr/sbin/update-rc.d -f apachectl remove).
— Johano Fierra

1

Uaktualniłeś system z Ubuntu 13.04 do 13.10? Nie ma sposobu na odzyskanie Apache 2.2 bez wychodzenia poza repozytoria pakietów Ubuntu. Lepiej po prostu napraw konfigurację Apache, aby działała z 2.4.


1
nie bardzo, patrz moja odpowiedź
— Coen Damen

@CoenDamen tak naprawdę odpowiadasz „wychodzisz poza repozytoria pakietów Ubuntu”. Ponadto twoja odpowiedź nie będzie działać „tak jak jest” w przypadku każdej nowej instalacji Ubuntu, ponieważ nie będzie w niej wielu zależności.
— Johano Fierra
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.