Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Maintenance  (Gelesen 751 mal)
0 Mitglieder und 2 Gäste betrachten dieses Thema.
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« am: November 07, 2010, 04:49:37 »

Hallo Jens,

Wie hast du dir das mit dem Maintenance gedacht?

So wie es im moment ist, soll das über einen Filter ausgelöst werden.
d.h. nachdem die DB conected, session und user(gast) definiert sind.

Meiner Meinung nach ist das nicht korrekt, denn wenn Wartungsarbeiten an der DB stattfinden,
die DB also erst gar nicht connected werden soll oder darf, sollte dies auch nicht passieren.

Hier sollte nach logischen Aspekten das maintenance evtl. nach der localization aber vor der
start_Session() stattfinden, bzw. in der start_Session(), vor der DB conection.

Die Sprache ist dann bereits definiert und man könnte entsprechend der Sprache html dateien
erstellen (z.B. maintenance_de.tpl oder .html), welche dann mittels einer funktion (siehe index.php aus css-framework)
eingelesen und ausgegeben werden könnte.
Oder man gibt die Information direkt in der maintenace.tpl mehrsprachig ein.

So wird nicht erst der gesamte bootstrap durchlaufen und ggfs. die wartungsarbeiten stören oder verhindern.
Abgesehen davon das die maintenance.tpl erst gar nicht angezeigt wird, vorheriger Abbruch mit fehlermeldung
oder weisser Seite, weil DB nicht connected oder user tabelle nicht gelesen werden konnte.

Es brauchen da auch nicht unbedingt noch umfangreiche externe libraries geladen zu werden.
Dies Informationsseite kann durchaus RenderEngine neutral ausgegeben werden, da es ja ein Sonderfall ist
und nicht all zu oft vorkommt, bzw. vorkommen sollte.

Maintenance ist ja nur eine Information bzgl. der kurzfristigen Abschaltung der Webseite, im Regelfall
aus Wartungsgründen an der DB.
In der clansuite.config.php Sektion: maintenace kann man einen timer setzen.
[maintenance]
maintenance = 0
timeout=60   ;Angabe in Minuten

Welche dann in das maintenace.tpl als ungefähre Ausfallzeit angezeigt werden kann.
Ich weiss aus Erfahrung, das es den meisten Ärgert nicht zu wissen wann die Webseite
endlich wieder ON ist, so hat jeder einen anhaltspunkt.

Wenn man die maintenance noch flexibler gestalten möchte, könnte man auch noch den Grund
des Ausfalls in der clansuite.config.php angeben:
reason = ''  ; 1=Wartung an der DB; 2=Softwareumstellung ......

Die Gründe können dann in der maintenance.tpl die entsprechenden blöcke freischalten um die
richtige Information anzuzeigen.

Ich denke man benötigt nicht das laden der gesamten clansuite mit den externen libraries nur um
am ende eine Information bzgl. des kurzeitigen Abschaltens auszugeben.


gruss
paul
Gespeichert
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #1 am: November 08, 2010, 12:05:46 »

Wie ich aus dem Ticket #26 entnehmen kann, ist es sinnigerweise angedacht, die Webseite
mittels Maintenance abschalten und als admin trotzdem Öffnen zu können.

Der Filter macht dies aber nicht, da kein login zu dem Zeitpunkt des filterns stattfindet,
hierzu müsste ein login angezeigt werden, welches aber auch jeder Besucher zu sehen
bekommt.

Es gibt aber eine recht einfache Alternative!

Wenn developer dann normales Starten der Clansuite, wenn kein developer greift die
Maintenance.

a) Wenn clansuite online geht, kann man das ebenfalls über das staging checken.
    Man schaltet einfach eine 2. URL z.B. clansuite-devmode.com mit auf, welche nun das
    development des Productionservers einliest (zusätzlicher vorteil, man kann den
    debugmode ebenfalls aktivieren).

b) Oder man übergibt beim Aufruf der clansuite einen speziellen parameter.
    Wobei ich persönlich die erste Alternative bevorzuge, schon aus gründen der Sicherheit.
    Man kann ja den Zugriff einer Domain am Server User-IP-Abhängig beschränken.

Hinzu käme eine weitere Staging: z.b. productiondev.config.php, da der Datenbankzugang
im Regelfall anderst als der lokale ist.

Hierzu sollte die Sektion: Maintenance ebenfalls in die developer gesetzt werden.

Lokal ist das ebenfalls einfach, wenn staging=1 wird die clansuite normal geladen,
wenn staging = 0 und maintenance = 1 ist, ist man im Maintenance Modus.

Ich habe das mal umgesetzt:
 1. maintenance.core.php
 2. anpassung in clansuite.application.php
 3. anpassung des maintenance.tpl
 4. anpassen der development.config.php

Ich möchte das aber nicht ins svn laden, bevor ich nicht weiss, wie das mit dem Maintenance
angedacht ist.

gruss
paul
Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #2 am: November 09, 2010, 11:47:37 »

Hallo Paul,

es war folgende Funktionalität angedacht:

Der Wartungsmodus wird als Admin aus dem Backend heraus eingeschaltet. Er bewirkt den Logout bzw. die Session-Inaktivierung aller User. Es erfolgt eine entsprechende Hinweis-Anzeige mit Login-Box, um als Admin wieder in das System zu kommen - die entsprechenden Updates oder Änderungen zu machen und dann den Wartungsmodus wieder abzuschalten.
Das sollte über den Filter gelöst werden. Er ist auf DB und User+Session-Tabelle angewiesen.

Deine Version gefällt mir auch gut, gerade weil diese Variante auch Veränderungen an der Datenbank erlaubt. Aber den Wartungsmodus wird man aus dem Backend zwar aktivieren, jedoch nicht wieder deaktivieren können, ohne eine Config manuell bearbeiten zu müssen, oder?
Ich denke das is zu verschmerzen - meist ist man ja für Updates eh mittels FTP verbunden.
Außerdem funktioniert Deine Version, ganz im Gegensatz zu meinem Ansatz ,) Also rein damit.

Gruß Jensa

Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #3 am: November 10, 2010, 11:15:55 »

Zitat
Aber den Wartungsmodus wird man aus dem Backend zwar aktivieren, jedoch nicht wieder deaktivieren können, ohne eine Config manuell bearbeiten zu müssen, oder?


das stimmt so nicht, es ist Möglich, hierzu 2 Beispiele!

1. Beispiel
   Wenn man z.B. eine 2. domain mit aufschaltet geht das ganz einfach zu lösen.
   z.B.
   web domain = www.clansuite.com
   adm domain = www.clansuite-devmode.com

   Man kann nun ganz normal in clansuite.com als admin das maintenance einschalten,
   jetzt wird die clansuite.com deaktiviert.

   Mit aufruf der domaine www.clansuite-devmode.com ist kein maintenance aktiviert,
   da hier eine andere staging-konfiguration (domain bezogen) geladen wird.

2. Beispiel ( security)
   Man setzt beim aufruf einen Parameter. z.B. www.clansuite.com/?mnt=<tokenstring> und schaltet
   damit das Maintenance ab, indem die Prüfung umgangen wird.
   mnt = maintenance
   <token> = generierter temporärer token zum automatischen auschalten des maintenance

   Umsetzung:
   Hier sollte aus Sicherheitsgründen ein spezieller Token generiert werden, welcher beim Einschalten
   des Maintenance durch einen Admin, automatisch generiert wird. Nur mit diesem kann der Admin und
   nur dieser admin, falls es mehrere gibt, das Maintenance automatisch abschalten.
   Der Token wird generiert und in ein file abgelegt, welches beim check geladen wird.
   Der Admin erhält vor dem Abschalten eine Bildschirmausgabe mit dem Link inkl. Tokenstring, den muss
   er sich nun bookmarken. Zum ausschalten reicht es dann diesen link aufzurufen.
   Sollte er vergessen den Link zu bookmarken, bleibt nur die manuelle Möglichkeit mittels FTP um
   das Maintenance auszuschalten übrig Zwinkernd

Es geht ja nur darum, das wenn an der DB arbeiten zu machen sind, diese nicht geladen werden kann/darf.
Meiner Meinung nach ist es so, das ein Maintenance ja in 98% aller Fälle nur dann von Nöten ist,
wenn an der DB gearbeitet wird.

Ich baue mal Beispiel 2 mit ein bevor ich es ins SVN lade.
Dafür generiere ich vorerst mal einen fixen pseudo Token.
Wenn der Login und das Rechtesystem wieder aktiviert sind, muss man nur im Adminbereich
bei der funktion zum Einschalten des Maintenance die Token generierung mit einbauen.

An der Klasse braucht man später dann auch nix mehr ändern, den der Token, ob fix oder temporär
wird automatisch gefunden werden.

gruss
paul
Gespeichert
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #4 am: November 10, 2010, 03:02:04 »


Gut ist im svn!

Zum testen in der clansuite.config.php Maintenance aktivieren.
[maintenance]
maintenance = 1
timeout = 60
reason = 1

timeout gibt die Ausfallzeit in Minuten an.
reason den Grund des Ausfalls.

Zum Auschalten des maintenance mittels token diesen token verwenden:
7aafb74dbe23ea352308be7b071db836

->  http://clansuite-dev.com/?mnt=7aafb74dbe23ea352308be7b071db836

  Server-Url entsprechend anpassen

Der Token ist vorläufig bis er über den Adminbereich temporär generiert werden kann, erst
einmal fix. Der Token Speicherort ist /cache/secure und in der securitytoken.core.php änderbar.

Der Token baut sich aus einem Verschlüsselungsstring + time() auf.
Beides ist in der securitytoken.core.php änderbar.

gruss
paul
Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #5 am: November 10, 2010, 06:09:17 »

An eine Lösungsmöglichkeit mittels Token hab ich gar nicht gedacht.
Mit dem Token kommst Du quasi dem manuellen Ausschalten über FTP zuvor und gleichzeitig ist FTP auch der Fallback, falls der Token abhanden kommt. Schöne Lösung!

Kleiner Nachtrag: Habe Ticket #26 geschlossen und Dir Rechte im Bugtracker eingestellt. Du kannst Dich mit den Anmeldedaten vom Forum dort anmelden und bei Bedarf Änderungen vornehmen.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Mai 10, 2012, 04:12:48