Ankündigung

Einklappen
Keine Ankündigung bisher.

Installation und Update - wie konzeptionell lösen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Installation und Update - wie konzeptionell lösen?

    Hoi,

    heut hab ich mal eher konzeptionelle Probleme.

    Situation ist folgende:
    Ich entwickle derzeit für mehrere Seiten ein eigenes CMS, welches auf die jeweilige Thematik der Seiten zurechtgeschnitten ist (Da es sich in den Fällen immer um die selbe Thematik handelt).

    Dabei ist es so, das die Seite (oder im folgenden auch Anwendung) unfertig ausgeliefert werden soll, sprich die wichtigsten Features ohne den optionalen, eher spezifischen Teil. Genauer gesagt der Funktionsumfang von Wordpress (Da das aktuell meist genutzt wird in der Zeilgruppe) plus ein paar kleine Features, nach und nach eben um die eigentlichen Funktionen erweitert.

    Um es den Nutzern einfach zu machen, habe ich einen Installations- und Update-Assistenten geschrieben, der konzeptionell in die Hose gegangen ist... scheinbar.

    Aktuelles Konzept bzw. Umsetzung:

    In einer System-Konfiguration steht die erforderliche Datenbank-Version.
    Stimmt diese nicht mit der Tatsächlich vorhandenen überein, schaltet die Seite automatisch in den Wartungsmodus, wo nur ein spezieller Login für einen Techniker möglich ist (via in der Konfiguration gespeichertem, 40-Stelligen, zufälligen Schlüssel).

    Die Installation läuft folgendermaßen ab:
    Im ersten Schritt wird das Datenbank-Schema angepasst, sofern notwendig. Dafür gibt es zu jeder Version definierbare CREATE-Skripts, MODIFY-Skripts sowie DELETE-Skripts. Diese werden chronologisch abgearbeitet und das Datenbak-Schema ist so, wie es sein soll.
    Dann gibt es zu den Versionen einen Satz an PHP-Befehlen, welcher ausgeführt wird - bspw. die erste Beispiel-News erstellen, Default-Kategorien anlegen, vorhandene Datensätze an das nun möglicherweiße modifizierte Schema anpassen und so weiter.

    Danach gibt es einmalig auszufüllende Formulare - aktuell sind dies konkretisiert der erste Nutzer (Admin) sowie ein kleiner Satz an Standard-Konfigurationswerten (Kommentartiefe, Serveradressen für dieverse Features hinterlegen, Features direkt zu Beginn ein- oder ausschalten usw.).

    Im Laufe der Entwicklung funktionierte das soweit ganz gut, allerdings scheint das Konzept nicht ganz zu funktionieren, wenn man von Null an alles installiert (Erstinstallation). Neben der Tatsache, dass einige Schema nicht gestimmt haben in der Datenbank (Also Bugs im Coding) gibt es auch andere Probleme.

    Bspw. benötigen manche der Standard-Datensätze einen Administrator, denen sie zugewiesen können. Auch brauchen die Beispielnews einen Nutzer, denen sie zugewiesen können. Dies funktioniert schonmal nicht, da diese Default-Skripte vor den ersten Nutzereingaben abgearbeitet werden.

    Nun suche ich nach einem verbesserten Konzept bzw. nach Ratschlägen und Meinungen.

    Ich habe überlegt, das ganze so umzugestalten, dass die Installation nicht in diese genannten Schritte geteilt wird, sondern für jede Version die jeweiligen Schritte ausführt und bspw. für den ersten Nutzer unterbrochen wird

    (Also bspw.

    Installiere Version 1, enthält ein paar Grundkonfigurationen, V2, V3
    Installiere Version 4 (hier sind Nutzer in der Datenbank hinzugekommen), unterbreche die Installation und frage Nutzernamen, PW und Mail für den ersten Nutzer ab
    Installiere Verion 5, 6, 7...
    usw.)
    [Durch die Schrittweise Entwicklung hab ich derzeit schon 10 Datenbank-Versionen, die so eingepflegt werden müssen]

    Da ich möchte, dass der Nutzer genau sieht, was aktuell passiert (Nicht einfach ein ewiger Ladekringel im Browser), ist es derzeit mit JQuery und dazugehörig PHP so gemacht, das der Nutzer bei jedem Schritt Rückmeldung erhält und einen Ladebalken auf der Seite selbst hat (Dort steht dann bspw. "Füge tabellen für Version x hinzu - y Tabellen hinzugefügt"... "Prüfe Datensätze für Version z"... usw usw...) - was zwar für den Nutzer toll sein mag und auch für mich beim Entwickeln ein kleines, nützliches Feedback ist (Ich sehe bei nem Fehler bspw. schon ohne Logfiles genau, wo er bei nem eventuellen Fehler abschmiert), allerdings auch Zeit kostet - das einspielen von 16 Datenbank-Tabellen dauert hier in dem Fall schon fast 10 Sekunden...

    Dazu muss das alles natürlich komplett neu gecodet werden, und bevor ich das tue und dann feststelle, dass ich wieder irgendwo nen Denkfehler habe, rede ich lieber mit anderen kurz darüber.

    Also was sagt ihr dazu? Wie würdet ihr es machen oder wie macht ihr es? Habt ihr da eventuell irgendwelche Tipps für mich?

    Danke im Voraus, Kagu-chan


  • #2
    http://symfony.com/doc/current/bundl...dle/index.html

    alles was du brauchst sind diese Migrations Klassen, für jede version
    https://github.com/Opentribes/Core/b...ionInitial.php

    eine kleine konfiguration https://github.com/Opentribes/Core/b...migrations.yml

    und die php CLI Datei in der Kommandos registriert sind

    https://github.com/Opentribes/Core/b.../migration.php

    das kommando "migrate" kann man aber auch in einem controller ausführen

    migrate/up/version
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

    Kommentar

    Lädt...
    X