Wie kann ich Apache mit einer bestimmten Version installieren?

26

Aufgrund der Ubuntu-Aktualisierung habe ich den Fehler gemacht, Apache 2.2 auf 2.4 zu aktualisieren - viele Dinge sind schiefgelaufen.

Ich habe keine Ahnung, wie ich die Version danach angeben soll apt-get remove apache2. apt-get install apache2installiert immer 2.4.

Wie kann ich es tun?

Mithril
quelle

Antworten:

22

Sie müssen Folgendes tun:

apt-cache showpkg <pachagename>

Der obige Befehl zeigt eine Liste der verfügbaren Versionen für dieses Paket an. Wählen Sie dann die gewünschte Version und gehen Sie wie folgt vor.

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

Beispiel:

apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
MohyedeenN
quelle
2
Die einzige Version, die für mich angezeigt wird, ist 2.4 unter Ubuntu 16. Dies ist ein großes Problem, da 2.4 bekannte Probleme aufweist, die meine Site vollständig beschädigt haben.
Felwithe
2
Version 2.2.14-5ubuntu8.7 für Apache2 wurde nicht gefunden
Braian Mellor
Danke - das hat besser geklappt, als den PPA-Weg zu gehen.
M Thomas
5

Wie installiert man Apache 2.2 auf einer Ubuntu-Distribution, die es nicht in den Repositories hat?

Bedarf

Dazu muss das Paket build-essentials installiert sein.

~# sudo apt-get install build-essential

Damit Apache die Ausgabe in Browsern komprimieren kann, die dies unterstützen, müssen Sie zlib installieren. Laden Sie die aktuelle Version von der zlip-Homepage herunter (zlib-1.2.11.tar.gz zum Zeitpunkt des Schreibens), extrahieren Sie sie, navigieren Sie zum extrahierten Ordner, erstellen Sie sie und installieren Sie sie.

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

Installieren Sie Apache 2.2

Laden Sie die aktuelle Version von der Apache-Download-Seite (httpd-2.2.32.tar.gz) herunter , extrahieren Sie sie, navigieren Sie zum extrahierten Ordner, erstellen Sie sie und installieren Sie sie.

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

Starten Sie Apache:

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

Überprüfen Sie, ob alles in Ordnung ist

Navigieren Sie in Ihrem Browser zu http: // localhost . Dort sollte die Meldung "It works!" (Es funktioniert!) Angezeigt werden.

Alternativ können Sie dies über das Terminal tun:

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

Welches sollte so etwas im Terminal ausgeben:

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

Erstelle "service" für Apache2

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

Hinweis: Sie können apachectl jetzt mit dem sudo-Dienst apache22 aufrufen .

Lassen Sie Apache beim Booten starten

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

Sicherer 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

Überprüfen Sie die neuen Einstellungen

ps -aux | grep httpd

Wenn die Terminalausgabe des letzten Befehls einige Zeilen anzeigt, die mit "apache" beginnen, ist alles in Ordnung.

Konfigurieren Sie Ihre Site (s)

Wenn Sie Ihren Apache nur für eine Site konfigurieren möchten, bearbeiten Sie einfach die httpd.conf

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

Die wesentlichen Parameter, die Sie ändern möchten, sind:

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>

Wenn Sie mehr als eine Site konfigurieren möchten, besuchen Sie httpd-vhosts.conf

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

Sie müssen einen Abschnitt <Directory> mit dem <VirtualHost> hinzufügen, der dem obigen ähnelt, jedoch für das Dokumentstammverzeichnis des VitualHost. Beispielsweise:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>
Johano Fierra
quelle
Nach diesen Anweisungen stoße ich auf Folgendes: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl ist standardmäßig insserv: script apachectl: service apache2 bereits bereitgestellt! insserv: jetzt beenden! update-rc.d: fehler: insserv hat den script header
Dženan 30.10.17
In der Tat gibt es auf Ubuntu 16.04 bereits /etc/init.d/apache2Dateien mit radikal unterschiedlichem Inhalt.
Dženan
Durch das Entfernen der fehlerhaften Datei werden wir über diesen Schritt hinwegkommen, aber sudo service apachectl stopder Dienst wird nicht beendet.
Dženan
"sudo service apachectl stop" würde nur dann nicht funktionieren, wenn Sie die Schritte unter Apache beim Booten starten lassen nicht befolgt hätten . Nachdem ich meine Antwort gelesen hatte, entschied ich mich, sie zu ändern ... Zunächst einmal ist apachectl wirklich ein schlechter Name für einen "Dienst", und es war schlecht, ihn Teil dieses Abschnitts zu machen. Stattdessen würden Sie jetzt den sudo-Dienst apache22 starten / stoppen , NACHDEM Sie die Schritte unter "Dienst" für Apache2 erstellen ausgeführt haben .
Johano Fierra
Ich habe mich entschieden, diesen Ansatz aufzugeben und meine Konfigurationsdatei so zu aktualisieren, dass sie mit Apache 2.4 kompatibel ist. Weniger Kopfschmerzen auf diese Weise. Aber danke für die ausführliche Antwort!
7.
4

Siehe das Ubuntu-Howto zum Anheften von Paketen :

Datei bearbeiten /etc/apt/preferences

In der 'Preferences'-Datei findet das eigentliche Pinning statt. Um ein Paket zu pinnen, setzen Sie seine Pin-Priorität auf eine höhere Zahl. Hier ist ein Beispiel:

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

Test vor dem Laufen apt-get updateoder apt-get installmitapt-cache policy apache2

Siehe man apt_preferencesfür weitere Einzelheiten. Ich habe mich für raringdie Veröffentlichung von pinning entschieden, da Sie auf diese Weise weiterhin Updates für den 2.2.x-Zweig erhalten. Vergessen Sie nicht, dass Sie das Paket APT zur Verfügung stellen müssen, indem Sie raringdie Repository-URLs hinzufügen .

Update :

Wie raringbei EOL können Sie entweder die noch unterstützten preciseoder die archivierten raringPakete von http://old-releases.ubuntu.com verwenden .

Wenn Sie dies als verwenden /etc/apt/sources.list.d/raring.list, können Sie ältere Pakete installieren:

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
fuero
quelle
Hallo. Das scheint genau das zu sein, was ich will. Können Sie bitte auch Befehle zum Hinzufügen der Repository-URLs von raring hinzufügen? Ich kann nicht die richtigen finden.
Ravish Bhagdev
Ich habe meine Antwort aktualisiert.
fuero
Guter Fang, ich habe die APT-Mirrorlist auf korrigiert raring. Natürlich, wenn Sie die preciseVersion verwenden möchten , /etc/apt/preferencesmuss auch entsprechend geändert werden.
Füro
Vielen Dank. Wie auch immer, es wird sich herausstellen, dass es sich um eine Dose Würmer handelt ... Nachdem Sie die angegebenen Schritte ausgeführt haben (und auch versucht haben, die Option -f zu installieren und zu bereinigen), müssen Sie die VM-Route wie folgt einordnen. Die folgenden Pakete weisen nicht erfüllte Abhängigkeiten auf. apache2: Hängt ab von: apache2-mpm-worker (= 2.2.22-1ubuntu1.7), wird aber nicht installiert oder apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) wird aber nicht installiert installiert oder .... etc etc
Ravish Bhagdev
2

Verwenden Sie den folgenden Prozess, um apache2.2 zu installieren:

In einer späteren Distribution (zB 16.04) habe ich die Version 2.2.31 von der Apache-Site heruntergeladen.

Ich habe es mit der folgenden Konfiguration erstellt:

./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

Dann natürlich die httpd.conf und ssl.conf Dateien anpassen.

Danach starte ich einfach mit ./httpd -k

Und es funktioniert !

beachte, dass ich den apache2.4 über apt-get hinzugefügt, ihn aber nie entfernt habe. Dies bedeutet, dass ich nach dem Systemstart den Apache2-Prozess beenden muss. Und dann kann ich Apache2.2 starten. Ich musste apache2.4 installieren, um apachectl zu verwenden, löste mich aber später auf, weil ich ./httpd verwende

Coen Damen
quelle
Werfen Sie einen Blick auf meine Antwort bezüglich der Verwendung von Apachectl für Apache 2.2. Möglicherweise müssen Sie zuerst die Version 2.4 entfernen (/usr/sbin/update-rc.d -f apachectl remove).
Johano Fierra
1

Sie haben ein Upgrade von Ubuntu 13.04 auf 13.10 durchgeführt? Apache 2.2 kann nicht wiederhergestellt werden, ohne die Ubuntu-Paket-Repositorys zu verlassen. Es ist besser, die Apache-Konfiguration so zu ändern, dass sie mit 2.4 funktioniert.

Sciurus
quelle
1
Nicht wirklich, siehe meine Antwort
Coen Damen
@CoenDamen eigentlich antwortest du "gehst außerhalb der Ubuntu-Paket-Repositories". Außerdem funktioniert Ihre Antwort bei einer neuen Ubuntu-Installation nicht wie sie ist, da einige Abhängigkeiten fehlen.
Johano Fierra