Hi Andreas,
meine Antwort setzt UNIX als Plattform voraus - unter Windows wird einiges von dem, was Du willst, nicht so einfach funktionieren.
Man findet zu den oben genannten Programmen ja immer ausführliche Informationen zu dessen Instalation, aber was wenn man eines der Programme mal auf eine neue Version updaten will?
nach Möglichkeit jede Installation so durchführen, daß sie koexistenzfähig mit anderen Installationen desselben Produkts auf derselben Maschine ist. Das mache ich bei Apache immer so - jedenfalls unter UNIX, weil es seit Apache 1.3.17 unter Windows leider nichit mehr funktioniert.
Bisher habe ich das immer so gemacht, ich habe die conf-Files gesichert, das Programm deinstalliert, neu installiert und dann die neue conf-File mit der alten überschreiben.
Und was ist, wenn das nicht funktioniert? Alles wieder rückgängig machen? Nein danke.
Ich installiere mir einen zweiten Apache _neben_ den ersten (/usr/local/apache/<versionsnummer>).
"/usr/local/apache" ist ein symbolic link auf diejenige Version, die ich aktuell als "die produktive" betreibe. Das ist also auch der Pfad, der beispielsweise verwendet wird, wenn der Apache beim Booten der Maschine automatisch gestartet werden soll usw.
Die Apache-Konfigurationsdatei httpd.conf besteht bei mir aus genau zwei Zeilen:
port 80
include ../common/httpd.conf
Die Konfiguration ist _nicht_ Bestandteil einer bestimmten Version des Apache.
Installiere ich einen neuen Apache, dann bekommt der auch wieder so einen Zweizeiler, allerdings mit einer anderen Portnummer. So kann ich beide Apaches parallel nebeneinander laufen lassen.
Sobald ich dem neuen Apache "traue", ändere ich die Port-Angaben, setze ihn also auf Port 80, und schalte den symbolic link um - fertig. War das eine zu optimistische Entscheidung, dann mache ich genau diese beiden Handgriffe rückgängig.
Ich kann sogar beide Apaches auf Port 80 laufen lassen - allerdings nicht gleichzeitig. In diesem Falle haben dann beide dieselbe httpd.conf und ich starte jeweils einen von ihnen per Hand; in diesem Zustand brauche ich jeweils nur den symbolic link umzusetzen, um zwischen beiden Versionen hin- und her zu schalten. Da ich dann allerdings nicht beide Apaches simultan laufen lassen kann, muß ich zum Testen ein erhöhtes Risiko eingehen - deshalb gefällt mir die Methode mit den verschiedenen Portnummern besser.
Das geht soweit ganz gut, nur weiß ich kein bisschen wie man das über die Kommandozeile macht! Wenn ich jetzt auf Linux von Apache 1.3 auf 2.0 aktualisieren will,
Genau das solltest Du eben nicht wollen. Es gibt keinen Grund, Dir den Rückweg zuzunageln. Und ganz nebenbei gibt es keineswegs für Apache 2.0 alle Module, die es für Apache 1.3 gibt ... (die mod_gzip-Versionen sind beispielsweise ziemlich heftig unterschiedlich)
Unter Windows sind laut meinen Informationen Apache 1.3 und 2.0 koexistenzfähig - allerdings wohl jeweils nur maximal je eine Version dieser beiden Produkte.
wie mache ich das über die Shell?
Installiere Apache 2.0 so, daß Apache 1.3 weiterhin lauffähig bleibt - also in ein neues Verzeichnis.
Wie kann ich da deinstallieren?
Wieso solltest Du das tun wollen?
Irgendwann, wenn Du die alte Version definitiv nicht mehr brauchst, löschst Du einfach deren Verzeichnisbaum mit "rm -rf" ... das kann aber ein paar Wochen nach dem Versionsumstieg sein.
Und woher weiß ich, ob ich ein Programm aktualisieren kann oder ob ich es neu installieren muß?
Du solltest es immer neu installieren, wenn Du meinem Ansatz folgen willst.
Und wenn - wie _akualisiere_ ich z.B. den Apache(jetzt bei einem kleineren Versionsschritt)?
So wie von mir oben beschrieben: Du installierst ihn einfach genau wie den vorherigen, nur eben in ein neues Verzeichnis.
Bei PHP ist das ja etwas anders, das wird ja gar nicht installiert, sondern soweit ich das weiß nur in das Verzsichnis geschreiben
Und wo soll das der Unterschied sein? "Installation" hat nichts mit "Registry" oder ähnlichem Unfug zu tun - jedenfalls unter UNIX.
Kann ich da nicht einfach alle Dateien überschreiben und es müßte gehen?
Du _willst_ das gar nicht ausprobieren, sofern die Change besteht, daß es _nicht_ geht.
Und Du willst definitiv nicht Dateien überschreiben, in denen Du selbst Änderungen vorgenommen hast - weißt Du das so gut auswendig?
Wie ist das aber dann mit Modulen? Wenn ich z.B. in meiner aktuellen Version CURL-Support einkompiliert habe, dann muß ich das vermutlich mit der neuen Version alles nochmal neu machen, oder? Selbiges mit PERL-Modulen, oder?
Ja, richtig.
Deshalb automatisierst Du den Installationsvorgang der vorherigen Version über ein kleines shell-Skript. Bei mir heißt das "install_apache.sh", und es enthält etwa fünf Zeilen:
INSTALLDIR=<pfadname>
make clean
configure (mit sehr langer Parameterliste)
make
echo "make install (manuell ausführen)"
Wenn dieses Skript hinreichend flexibel geschrieben ist, dann funktioniert es sogar für beliebige andere Versionen; es würde reichen, wenn das Skript beispielsweise die Versionsnummer des Apache als Parameter übergeben bekommt und sich daraus alle benötigten Pfadnamen ausrechnet. Ich habe aber lieber eine Kopie dieses Skripts pro Apache-Version ... und ich mag auch ein automatisches "make install" nicht - ich könnte ja vergessen haben, das INSTALLDIR anzupassen oder was auch immer.
Kann ich an dieser Stelle also keine RPMs verwenden, oder?
Willst Du eine packager-proprietäre Lösung oder eine, die funktioniert? ;-)
Vielleicht kann mal jemand ganz grob beschreiben wie man sowas remote (also von einem entfernten Rechner aus) macht(bei Linux[Redhat]).
Apaches installiert man laut Apache Group mit "configure" aus einer shell - eine beliebige Dialog-Verbindung a la telnet reicht aus.
Die Datei INSTALL ist sehr ausführlich, was die Parameter von "configure" betrifft.
Viele Grüße
Michael
T'Pol: I meant no insult.
V'Lar: Of course not. You're simply speaking your mind ... as you always have.