Update s9y - Shell script

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
chrisbra
Regular
Posts: 63
Joined: Wed Jun 08, 2005 4:12 pm

Update s9y - Shell script

Post by chrisbra »

Vielleicht interessiert es den einen oder anderen.
Ich hab ein update-Script geschrieben, mit dem man eine vorhandene serendipity (und wahrscheinlich auch andere Installationen) updaten kann. Unter Angabe der existierenden Installation und eines neuen Releases als Archiv, legt es vorher verschiedene Backups an und updated die gegebene Installation.

Ich habe versucht es so generell wie möglich zu halten und dennoch
relativ einfach zu bedienen.

Da bei meiner Installation jedoch root-Rechte benötigt werden, besteht es auf einem Aufruf als root. Dennoch sollte es theoretisch möglich sein, damit jede andere Installation upzudaten, ich garantiere jedoch für nichts.

Der Aufruf dann folgendermaßen, hier mal beispielhaft:

Code: Select all

$ ~/bin/s9yupdate-sh -h
s9y_update.sh [-s|-h|-?|-u] <DIR> <ARCHIV>
s9y_update.sh will take the archive <ARCHIV> to update your installation
in <DIR>. Unless the option -s is given, it will not do anything just tell
you, what it would do.
Please carefully control the actions, I will not take any responsibility!
-s do not simulate but really update my installation
-u restore the last backup

The variables on top of the script can also be set by a configuration file
in ~/.s9y_update.rc.

$ ls ~/script_test
backup_blog                <- Hierhin wird gesichert (konfigurierbar)
serendipity-1.0.3a.tar.gz  <- Das neue Archiv
testblog                   <- Die vorhandene Installation
$ sudo ~/bin/s9yupdate.sh -s ~/script_test/testblog
~/script_test/serendipity-1.0.3a.tar.gz

Archiving old backups of ~/script_test/testblog
Backing up old installation...
Archiving old installation in /home/chrisbra/script_test/backup_blog/
19476 blocks
Removing temporary directory
You might need to finish the installation by visiting you blog homepage
via a browser

$ ls -m ~/script_test
backup_blog serendipity-1.0.3a.tar.gz testblog testblog.20061205
   ^                ^                    ^             ^
   |                |                    |             Kopie der
   |                |                    |             Installation
   |                |                    |
   |                |                    upgedate Installation
   |                |
   |                Archiv des installierten Updates
   |
   Verzeichnis, in dem sich ein weiteres Backup der vorherigen
   Installation befindet (diesmal als .tar.bz2)
Es besitzt auch die Möglichkeit ein vorhandenes Backup zurück zu spielen, so denn eines vorhanden ist.

Einfach die Variablen am Anfang passend setzen (alternativ lassen sich diese Variablen auch über eine .s9yupdate.rc Datei steuern).

Aber bitte vorher gut testen, ich übernehme keine Verantwortung (es funktioniert jedoch bei mir problemlos).
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Post by stm999999999 »

mich würde ja was vergleichbares fürs normale Webhosting interessieren!

Es dauert immer so ewig lange, die ganzen einzelnen Dateien per ftp hochzuladen :-( Da wäre es wesentlich angenehmer, wenn man einfach nur das Archiv hochlädt und dann auf dem Webserver das ganze entpacken ließe. Am elegantesten wäre es natürlich, wenn es analog zu spartacus gleich noch das Archiv herunterladen würde :-)
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Das problem am webupload ist, dass dann ALLE Dateien die Rechte 777 benmötigen würden, da ja vorhandene dateieen überschrieben werden müssen.

Du müsstest also vorher per FTP ALLE Dateien und Unterordner auf 777 stellen, dann das update aufrufen, und danach müsste s9y oder du per FTP alle Rechte wieder richtig stellen.

Ausserdem müsste auf dem webserver ein ZIP-Utility vorhanden sein, was meiner erfahrung nach eher selten der Fall ist. Zumal benötigt das entzippen viel speicherplatz (das archiv ist ja 4-5MB groß, das belegt im speicher zum entpacken einiges).

Sprich: Das ist nicht trivial und hat viele Vorbedeutungen. Ich lade s9y files immer mit SmartFTP hoch und 4-5 parallelen Threads. Das ist dann in 2-3 Minuten erledigt mit dem Upload.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Post by stm999999999 »

Du müsstest also vorher per FTP ALLE Dateien und Unterordner auf 777 stellen, dann das update aufrufen, und danach müsste s9y oder du per FTP alle Rechte wieder richtig stellen.
Warum "wieder richtig" stellen? Was spricht gegen dauerhaftes 777? Entweder die Sicherheit meines Webspace ist gesichert, dann macht 777 nix, oder sie ist lückenhaft, dann ist eh alles für die Katz, weil dann jemand mein Datenbankpaßwort auslesen kann, an Plugins rumpfuschen etc ...

In übrigen "alles umstellen":

Man könnte ja einen s9y-Installer bauen!

Ein kleines, einzelnes Skript, was dann analog Spartacus auch für die Erstinstallation erlaubt, sich das aktuelle Release oder die beta oder die aktuelle nigthly zu laden und zu installieren! ;-)
Ausserdem müsste auf dem webserver ein ZIP-Utility vorhanden sein, was meiner erfahrung nach eher selten der Fall ist.
Warum zip? Es liegt doch alles als tar.gz vor und das sollte jeder Linux-Server doch haben!?
Zumal benötigt das entzippen viel speicherplatz (das archiv ist ja 4-5MB groß, das belegt im speicher zum entpacken einiges).
hm, ich habe das jetzt mal probiert, es hat eigentlich alles geklappt - einziges Problem, es wird immer in den Ordner serendipity-nightly installiert :-( Ist aber auch nur ein kleiner, unsauberer Hack gewesen.
Sprich: Das ist nicht trivial und hat viele Vorbedeutungen. Ich lade s9y files immer mit SmartFTP hoch und 4-5 parallelen Threads. Das ist dann in 2-3 Minuten erledigt mit dem Upload.
Gucke ich mir mal an.
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!
Warum "wieder richtig" stellen? Was spricht gegen dauerhaftes 777?
Hm, gute Frage. Einfach das Gefühl was ich dabei hätte wäre schlecht. :)
Ein kleines, einzelnes Skript, was dann analog Spartacus auch für die Erstinstallation erlaubt, sich das aktuelle Release oder die beta oder die aktuelle nigthly zu laden und zu installieren! ;-)
Das wäre grundsätzlich schon was nettes, aber da hat man mit allerlei Problemen zu kämpfen. Nicht ohne Grund gibt es sowas bei PHP-Applikationen kaum. :-)
Warum zip? Es liegt doch alles als tar.gz vor und das sollte jeder Linux-Server doch haben!?
gz ist ja auch zip. Und nicht jeder Linux-Server erlaubt das ausführen von externen zip tools; und intern müsste PHP es einkompiliert haben wenn man es ohne exec() nutzen will.

Viele GRüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Post by stm999999999 »

Hm, gute Frage. Einfach das Gefühl was ich dabei hätte wäre schlecht.
naja, ich verweise mal auf http://www.s9y.org/forums/viewtopic.php ... 8213e83b8e ;-)

Ein kleines, einzelnes Skript, was dann analog Spartacus auch für die Erstinstallation erlaubt, sich das aktuelle Release oder die beta oder die aktuelle nigthly zu laden und zu installieren! ;-)
Das wäre grundsätzlich schon was nettes, aber da hat man mit allerlei Problemen zu kämpfen. Nicht ohne Grund gibt es sowas bei PHP-Applikationen kaum. :-)
Aber gibt es denn einen strukturellen Unterschied zu unserem Spartacus-System, außer daß es eben nur für kleine Codeteile aka Plugins zuständig ist?
gz ist ja auch zip. Und nicht jeder Linux-Server erlaubt das ausführen von externen zip tools; und intern müsste PHP es einkompiliert haben
ist das sowas wie BZip2 Support oder Zip Support oder ZLib Support?
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!
Aber gibt es denn einen strukturellen Unterschied zu unserem Spartacus-System, außer daß es eben nur für kleine Codeteile aka Plugins zuständig ist?
Nein, aber genau das ist der Unterschied. Wenn spartacus läuft ist ja auch das ganze s9y framework indiziert; beim der installation fehlt ja noch eine Datenbank etc., das plugin ist nicht auf einen mirror konfiguriert etc.

Zudem sieht man ja bereits bei größeren Plugins mit vielen Dateien dass da der transfer ganz gerne plötzlich fehlschlägt. Bei den vielen Dateien einer s9y installation könnte das früher zum tragen kommen.

Ich denke, dass das grundsätzlich schon schaffbar ist, und ich wäre froh wenn sich jemand darum kümmern möchte! :-)
ist das sowas wie BZip2 Support oder Zip Support oder ZLib Support?
Exakt jenes. :)

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Post Reply