Frage Wie kann ich Apache mit einer bestimmten Version installieren?


Aufgrund der Aktualisierung von Ubuntu machte ich den Fehler, Apache 2.2 auf 2.4 zu aktualisieren - viele Dinge liefen schief.

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

Wie kann ich es tun?


24
2017-10-09 05:55


Ursprung




Antworten:


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 benötigte Version und gehen Sie folgendermaßen vor.

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

Beispiel:

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

20
2017-10-09 06:17



Die einzige Version, die für mich angezeigt wird, ist 2.4 unter Ubuntu 16. Das ist ein großes Problem, weil 2.4 bekannte Probleme hat, die meine Seite komplett zerstört haben. - felwithe
Version 2.2.14-5ubuntu8.7 für apache2 wurde nicht gefunden - Braian Mellor
Danke - das hat besser funktioniert, als zu versuchen, die PPA-Route zu gehen. - M Thomas


Sehen Sie sich das ubuntu Howto an Paketfixierung:

Datei bearbeiten /etc/apt/preferences

In der Datei 'Preferences' wird das eigentliche Pinning durchgeführt. Um ein Paket zu fixieren, setzen Sie seine Pin-Priorität auf eine höhere Nummer. Hier ist ein Beispiel:

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

Testen Sie vor dem Ausführen apt-get update oder apt-get install mit apt-cache policy apache2

Sehen man apt_preferences für Details. Ich habe das Pinning gewählt raring's Release, denn auf diese Weise erhalten Sie immer noch Updates für den 2.2.x-Zweig. Vergiss nicht, dass du APT das Paket zur Verfügung stellen musst, indem du hinzufügst raringdie Repository-URLs.

Aktualisieren:

Wie raring Ist EOL, könntest du entweder den noch unterstützten verwenden precise oder das archivierte raring Pakete von http://old-releases.ubuntu.com.

Verwenden Sie dies als /etc/apt/sources.list.d/raring.list ermöglicht es Ihnen, ältere Pakete zu 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

4
2017-10-09 06:26



Hallo. Das scheint genau das zu sein, was ich will. Kannst du 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
Netter Haken, ich habe die APT-Spiegelliste nach korrigiert raring. Natürlich, wenn Sie das verwenden möchten precise Ausführung, /etc/apt/preferences muss auch entsprechend geändert werden. - fuero
Danke vielmals. Wie auch immer sich herausstellt, dass es sich um eine Würmerdose handelt ... muss die VM-Route so nehmen, dass sie nach der Ausführung bestimmter Schritte folgt (und auch die Option -f und clean versucht). Die folgenden Pakete haben noch nicht abgeschlossene Abhängigkeiten. apache2: Hängt davon ab: apache2-mpm-worker (= 2.2.22-1ubuntu1.7) aber es wird nicht installiert oder apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) aber es wird nicht sein installiert oder .... usw - Ravish Bhagdev


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

Bedarf

Sie müssen das build-essentials-Paket installiert haben, um dies zu tun.

~# sudo apt-get install build-essential

Um Apache die Möglichkeit zu geben, die Ausgabe an Browser zu komprimieren, die es unterstützen, müssen Sie zlib installieren. Laden Sie die aktuelle Version von der zlip Startseite (zlib-1.2.11.tar.gz zum Schreiben), extrahiere es, navigiere zum extrahierten Ordner, baue und installiere.

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 Downloadseite (httpd-2.2.32.tar.gz zum Schreiben), extrahieren Sie es, navigieren Sie zum extrahierten Ordner, erstellen und installieren 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 zu http: // localhost in Ihrem Browser, wo Sie die Nachricht "Es funktioniert!"

Alternativ können Sie dies über Terminal tun:

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

Was sollte so etwas im Terminal ausgeben:

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

Erstellen Sie "Service" für Apache2

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

Tipp: Sie können apachectl mit aufrufen Sudo-Service apache22 jetzt.

Veranlasse Apache beim Booten

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 zeigt, die mit "Apache" beginnen, ist alles in Ordnung.

Konfigurieren Sie Ihre Website (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, werfen Sie einen Blick auf httpd-vhosts.conf

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

Sie müssen einen <Directory> -Abschnitt mit dem <VirtualHost> ähnlich dem oben genannten hinzufügen, aber für den Dokumentenstamm des VitualHost. Zum Beispiel:

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

4
2018-05-31 15:10



Folgen Sie diesen Anweisungen: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl Standardeinstellungen insserv: script apachectl: service apache2 ist bereits vorhanden! insserv: Jetzt beenden! update-rc.d: error: insserv hat den Script-Header abgelehnt - Dženan
In der Tat, auf Ubuntu 16.04 gibt es bereits /etc/init.d/apache2 Datei mit radikal anderem Inhalt. - Dženan
Das Entfernen der anstößigen Datei bringt uns über diesen Schritt, aber sudo service apachectl stop stoppt den Dienst nicht. - Dženan
"sudo service apachectl stop" würde nur dann nicht funktionieren, wenn Sie nicht die Schritte unter Veranlasse Apache beim Booten. Nachdem ich meine Antwort gelesen habe, habe ich beschlossen, sie zu ändern ... Erstens, Apachectl ist wirklich ein schlechter Name für einen "Dienst" und es war schlecht, es zu einem Teil dieses Abschnitts zu machen. Also, stattdessen würdest du es jetzt tun Sudo-Service Apache22 Start / Stopp, NACH dem Folgen der Schritte unter Erstellen Sie "Service" für Apache2. - Johano Fierra
Ich entschied mich, diesen Ansatz aufzugeben und meine Konfigurationsdatei zu aktualisieren, um mit Apache 2.4 kompatibel zu sein. Weniger Kopfschmerzen auf diese Weise. Aber danke für die ausführliche Antwort! - Dženan


Du hast von Ubuntu 13.04 auf 13.10 aktualisiert? Es gibt keine Möglichkeit, Apache 2.2 zurück zu erhalten, ohne die Ubuntu-Paket-Repositories zu verlassen. Es ist besser, einfach Ihre Apache-Konfiguration zu reparieren, so dass sie mit 2.4 funktioniert.


1
2018-02-06 20:41



nicht wirklich, sehe meine Antwort - Coen Damen
@CoenDamen, das du eigentlich antwortest, ist "außerhalb der Ubuntu-Paket-Repositories". Außerdem wird Ihre Antwort nicht "so wie sie ist" für eine neue Ubuntu-Installation funktionieren, da einige Abhängigkeiten fehlen werden. - Johano Fierra


Um apache2.2 zu installieren, verwende den folgenden Prozess:

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

Ich habe es mit folgender 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 Dateien httpd.conf und ssl.conf optimieren.

Danach starte ich einfach den ./httpd -k Start

Und es funktioniert !

Beachten Sie, dass ich den Apache2.4 über apt-get hinzugefügt, aber nie entfernt habe. Das 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, aber später löste ich das, weil ich ./httpd verwende


1
2017-09-16 09:59



Werfen Sie einen Blick auf meine Antwort in Bezug auf die Verwendung von Apachectl für Apache 2.2, möglicherweise müssen Sie jedoch zuerst die Version 2.4 entfernen (/usr/sbin/update-rc.d -f apachectl remove). - Johano Fierra