Ankündigung

Einklappen
Keine Ankündigung bisher.

Die perfekte Entwicklungsumgebung gesucht (dev, staging, live)

Einklappen

Neue Werbung 2019

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

  • Die perfekte Entwicklungsumgebung gesucht (dev, staging, live)

    Hallo Kollegen,
    Ich habe mal eine Frage.

    Wie setzt Ihr Eure Projekte sinnvoll um?
    Wie aktualisiert ihr Eure Drupal Projekte ohne viel Aufwand?

    Wie ich es bisher mache:
    • Umsetzung direkt auf Live Server
    • Entwicklung mit PHPstorm mit automatisiertem Upload auf den Server
    • Updates spiele ich am LIVE System ein (Ich weiß, sehr mutig
    • Bei größeren Änderungen ziehe ich mir händisch eine Kopie der Seite und entwickele auf einer Testumgebung

    Wie ich es gerne hätte:
    • Entwicklung auf einem LOKALEN Webserver
    • per einfachem Klick oder Konsolen-Befehl möchte ich das Projekt gerne auf die Staging Umgebung packen (Zur Kundensicht)
    • Anschließend möchte ich es wieder per Klick LIVE schalten (Hier allerdings mit Merge der Datenbank / Synchronisation)
    • Updates würde ich gerne erst Lokal einspielen und dann auf Weg wie oben veröffentlichen. > Somit muss es möglich sein per Klick die Liveumgebung auf die Lokale DEV Umgebung zu kopieren
    • Dies soll sowohl bei meinem eigenen Server funktionieren als auch bei dem Kunden, falls er selber hostet (Dort habe ich nur FTP und SQL zur Verfügung

    Hat jemand von Euch hier Erfahrungen gemacht?
    Mir ist äußerst wichtig, dass ich meinen Arbeitsprozess professionalisiere, ohne dabei einen riesen Aufwand zu haben.

    Ich besitze derzeit ein shared Hosting Paket mit rudimentären SSH Zugang bei All Inkl.
    Geplant ist es irgendwann einen zusätzlichen MANAGED Server oder vServer zu mieten (Ich habe nicht die Zeit mich um die Administration des Servers zu kümmern) als cms kommt Drupal zum Einsatz.

    Ich habe mir bereits Docker angeschaut. Ansich finde ich dies ganz cool, allerdings klappt das dann wieder bei Kunden nicht, die selber hosten.

    Ich würde mich über Tipps freuen und bedanke mich schon mal im voraus


  • #2
    Moin,

    also Docker wäre da tatsächlich eine wichtige Möglichkeit. Also mit Docker kannst du ja nativ unter Windows dann ein Server aufsetzen, dabei konfigurierst du nur eine Datei und könntest pro Projekt dann eine eigene Instanz starten. Es ist auch übrigens von PHPStorm aus möglich. Mit Docker kannst du dann auch irgendwann von vServer etc zum Beispiel auf AWS wechseln. Falls mal ein Projekt größer wird der eigentlich Server nicht ausreicht. AWS und weitere CLoud Hosting Provider haben die Möglichkeit einfach so resourcen dazu zu schalten. Sprich wenn der Load ansteigt, kannst du einfach hardware dazuschalten. Dank Docker hast du sowohl lokal als auch remote gleiche Einstellung. Und die, die einfachen FTP nutzen, da kannst du ja weiterhin dein Code hochladen aber dennoch docker container parat halten.

    Mit docker kannst du ja dann auch bei dir den staging Server zur Verfügung stellen.

    Bezüglich upload auf Server. Dazu empfehle ich https://deployer.org/ es ist ein PHP Script wo du alles konfigurieren kannst, deinen Upload prozess iklusive Datenbank Migration usw und kannst in PHP Storm oben eine Konfiguration hinzufügen zum Ausführen des PHP Scripts. Damit kannst du dann von PHP Storm aus dein Code live deployen. Den Deployer könntest du sogar auf einen Zentralen Server legen und ihn dann per URL triggern. Damit kannst du zum Beispiel externe Entwickler zur Hilfe holen und die können den Code dann live deployen ohne jetzt die Zugangsdaten von deinen Kunden zu wissen.

    Auch kannst du Deployer mit PHP CI kombinieren https://github.com/dancryer/PHPCI könntest also auch noch ein Test Server aufsetzen und vorher automatisiert alles testen

    Also Docker empfehle ich dennoch lokal zu benutzen egal ob Kunde selber hostet oder nicht, jeder Hoster hat seine eigenen PHP Extensions und eigene php.ini Einstellungen, allein Schon desswegen lohnt es sich lokal pro Projekt eigene Docker instanzen zu haben.
    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


    • #3
      Hm, ich entwickle lokal auf einem XAMPP Stack. Auf dem externen (managed) Webserver gibt es zwei Installationen - Test und Live.
      Wenn ich etwas Neues mache, teste ich es erst lokal. Wenn das soweit passt, lade ich es - manuell per FTP - ins Testsystem des Webservers.
      Dort teste ich nochmal und dann die Kollegen bzw. Kunden.
      Wenn dann immer noch alles OK ist, gibt der Chef es frei für's Live System.

      Änderungen in der Datenbank werden mit entsprechenden Export-Statements aus PHPMyAdmin übertragen.

      Bisher hatte ich kaum darüber nachgedacht, ob man das evtl. besser machen kann. Da die Vorgehensweise schon seit über 10 Jahren gut funktioniert,
      sehe ich zumindest für mich keinen Bedarf, da irgendwelche Tools einzusetzen. Zudem male ich mir aus, wie man durch unachtsame/unbeholfene Konfiguration solcher Tools gleich mal alles durcheinander bringt.

      Meine Vorgehensweise ist vlt. auch nur deshalb für mich OK, weil ich alleine arbeite.




      Es ist schon alles gesagt. Nur noch nicht von allen.

      Kommentar


      • #4
        Zitat von drsoong Beitrag anzeigen
        Meine Vorgehensweise ist vlt. auch nur deshalb für mich OK, weil ich alleine arbeite.
        Oder weil du kein Verteiltes System hast.

        Wir haben zum Beispiel ein Loadbalancer und dahitner mehrere Docker Instanzen, der Loadbalancer leitet die Anfragen weiter an eigene Instanzen. Hier hast du schon mal dann mehrere Probleme

        1) Filestorage, wenn der Loadbalancer dich auf Server1 umleitet und du hier Dateiupload machst. Danach kommt ein Page Refresh und es kann sein dass du auf Server 5 umgeleitet wurdest, die Datei von Server 1 muss unter Server 5 zur Verfügung stehen. Dazu haben wir zum Beispiel GLuster FS instanz. Von PHP sieht es aus wie ein einfacher Ordner wo ich meine Dateien ablege, aber in wirklichekeit ist es ein Gemounteter Ordner

        2) Session, die Normale Session wird ja als Datei abgespeichert, wir nutzen stattdessen Redis, wieder ein Server

        3) Mysql, wir haben getrennte Anfragen, du hast ein mal ein Server wo du die Daten lesen kannst und ein Server zum Schreiben. Da du durch diese Aufteilung auch eventuell probleme haben kannst, verzögerung beim lesen oder schreiben auf dem Falschen Server, machen wir das dann auch lokal über Docker.

        4) Upload auf FTP von mehreren Servern. Der Quellcode muss gleichzeitig auf allen Servern ausgerollt werden, das könnte dauern und somit kann es sein dass Loadbalancer dann auf veralteten Code weiterleitet. Wir haben desswegen mit dem Deployer zwei prozesse
        a) Rollout vom code auf jedem einzelnen server in eigenes Verzeichnis mit eventueller Migration und wenn das in Ordnung ist
        b) schalte den Symlink auf jeden Server um

        da das setzen des Symlinks schnell ist, hatten wir bisher keine Probleme damit gehabt. Und wir brauchen diese Zentrale deploy möglichkeit weil ich jetzt nicht mehrere Connections gespeichert haben will auf meinem lokalen PC

        Es geht nicht darum ob man allleine macht, sondern wieviele Target Server man hat. Sobald du mehr als nur ein FTP Server hast, wirst du eventuell auch darüber nachdenken.

        PHPMyAdmin nutzen wir übrigens gar nicht, weil Sicherheitslücken etc. Wir nutzen HeidiSQL mit SSH Tunnel

        Desswegen verwenden wir docker, weil du das alles unter windows emulieren kannst und die gleichen Docker container dann auf einem beliebigen Server nutzen kannst
        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


        • #5
          BlackScorp : Verstehe, vielen Dank.

          Es geht nicht darum ob man allleine macht,...
          Da scheinst Du wohl recht zu haben. Man könnte bestenfalls sagen, weil ich alleine arbeite, mache ich keine größeren Projekte, die mir Anlass geben, über verteilte Systeme nachzudenken?!

          Frage: Bei dem was Du da beschreibst, was ist das denn für eine Anwendung, Site, wie auch immer? Wie viel "Load" muss denn da gebalanced werden? Und was macht die Applikation?

          Übrigens, habe gerade mal ein Video zum Thema Docker angeschaut https://www.youtube.com/watch?v=utI9Dcd5iY0 , weil mir das gar nichts gesagt hat. Klingt aber interessant, werde mich da mal näher mit beschäftigen.
          Es ist schon alles gesagt. Nur noch nicht von allen.

          Kommentar


          • #6
            Zitat von drsoong Beitrag anzeigen
            BlackScorp : Verstehe, vielen Dank.



            Da scheinst Du wohl recht zu haben. Man könnte bestenfalls sagen, weil ich alleine arbeite, mache ich keine größeren Projekte, die mir Anlass geben, über verteilte Systeme nachzudenken?!

            Frage: Bei dem was Du da beschreibst, was ist das denn für eine Anwendung, Site, wie auch immer? Wie viel "Load" muss denn da gebalanced werden? Und was macht die Applikation?

            Übrigens, habe gerade mal ein Video zum Thema Docker angeschaut https://www.youtube.com/watch?v=utI9Dcd5iY0 , weil mir das gar nichts gesagt hat. Klingt aber interessant, werde mich da mal näher mit beschäftigen.
            Ich arbeite für eine Wissenschaftlichen Verlag und wir veranstalten die Größte Europäische Geowissenschaftliche Konferenz europas die EGU, die findet jährlich in Wien statt. Da kommen Stündlich 50-60k Requests an. Es ist nicht Facebook/Amazon/Google aber dennoch sollte alles Flüssig sein und doch gibt es manchmal Ausfälle.

            Aber wir wollen ja nicht diesen Thread vollmüllen, kannst ja private Sachen Fragen
            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


            • #7
              Ich habe nicht ganz verstanden wieso docker oder ähnliches BlackScorp .
              Gerade ein verteiltes Dateisystem sollte es doch unmöglich machen, dass verschiedene Inhalte auf verschiedenen servern sind.

              Kommentar


              • #8
                Zitat von tomBuilder Beitrag anzeigen
                Ich habe nicht ganz verstanden wieso docker oder ähnliches BlackScorp .

                Damit verwende ich den gleichen Build Sript lokal und auf dem server, somit kann ich das live system emulieren, das geht mit Xampp und co natürlich auch aber nicht wenn du ein verteiltes System hast, bzw bestimmt kann man das alles auch machen aber je nach dem wieviele Systeme man hat und wie unterschiedliche die sind, wird es schwierig sein zu tracken was lokal anders ist als live. wenn man aber sowohl live als auch lokal gleichen Container nutzt ist es einfacher.

                Zitat von tomBuilder Beitrag anzeigen
                Gerade ein verteiltes Dateisystem sollte es doch unmöglich machen, dass verschiedene Inhalte auf verschiedenen servern sind.
                Ich habe von gleichen Daten gesprochen. Oder worauf war das jetzt bezogen? jetzt spammen wir doch den thread hier voll..
                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


                • #9
                  Mich würde mal interessieren ab wann ihr gemerkt habt, dass lediglich ein Server etwas "untermotorisiert" ist.

                  Kommentar


                  • #10
                    Zitat von protestix Beitrag anzeigen
                    Mich würde mal interessieren ab wann ihr gemerkt habt, dass lediglich ein Server etwas "untermotorisiert" ist.
                    Gute Frage! BlackScorp mein ja, dass er 50k - 60k Requests pro Stunde hat. Das sind gerundet 17 pro Sekunde. Da wird es wohl nicht anfangen, oder ?!
                    Es ist schon alles gesagt. Nur noch nicht von allen.

                    Kommentar


                    • #11
                      Zitat von protestix Beitrag anzeigen
                      Mich würde mal interessieren ab wann ihr gemerkt habt, dass lediglich ein Server etwas "untermotorisiert" ist.
                      war eigentlich preventiv, wir habe nicht gesagt ab dann,sondern, lass mal erweitern für Notfälle. ALlein schon als Failover brauchst du mindestens 2-3 Server
                      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


                      • #12
                        Offtopic:

                        BlackScorp wenn Ihr schon Docker einsetzt, würde ich mich mal mit Kubernetes beschäftigen. Dort sind so genannte RollingUpgrades ohne Probleme möglich. Sprich der Traffic läuft so lange auf die alten Container weiter bis die neuen Container einsatzbereit sind.

                        tomBuilder
                        Gerade ein verteiltes Dateisystem sollte es doch unmöglich machen, dass verschiedene Inhalte auf verschiedenen servern sind.
                        In der regel hat man aber nur die Dateien auf einem SharedStorage welche auch wirklich geteilt werden müssen. Der eigentliche PHP Code ist dies in der regel nicht, da ein Netzwerk Storage immer eine deutlich höhere Latenz hat wie das lokale Dateisystem.

                        Kommentar


                        • #13
                          Zitat von Zeichen32 Beitrag anzeigen
                          Offtopic:

                          BlackScorp wenn Ihr schon Docker einsetzt, würde ich mich mal mit Kubernetes beschäftigen. Dort sind so genannte RollingUpgrades ohne Probleme möglich. Sprich der Traffic läuft so lange auf die alten Container weiter bis die neuen Container einsatzbereit sind.
                          Vielleicht passiert das auch, ich weiß nicht was unser Sysadmin tut, ich kriege Docker IMages, starte die Lokal und Arbeite mit meinem Code und sehe zu dass da alles korrekt ist, bin kein Devop Auch ist der deployer befehl nicht von mir Konfiguriert, ich habe ein Button zum Rollout und den Drücke ich dann. Es interessiert mich auch nicht was auf dem Server konfiguriert ist, davon habe ich nicht so viel Ahnung, aber finde es cool dass ich das Live System auf meinem Notebook in etwa simulieren kann


                          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


                          • #14
                            Zitat von BlackScorp Beitrag anzeigen
                            Oder weil du kein Verteiltes System hast.

                            Wir haben zum Beispiel ein Loadbalancer und dahitner mehrere Docker Instanzen, der Loadbalancer leitet die Anfragen weiter an eigene Instanzen. Hier hast du schon mal dann mehrere Probleme

                            1) Filestorage, wenn der Loadbalancer dich auf Server1 umleitet und du hier Dateiupload machst. Danach kommt ein Page Refresh und es kann sein dass du auf Server 5 umgeleitet wurdest, die Datei von Server 1 muss unter Server 5 zur Verfügung stehen. Dazu haben wir zum Beispiel GLuster FS instanz. Von PHP sieht es aus wie ein einfacher Ordner wo ich meine Dateien ablege, aber in wirklichekeit ist es ein Gemounteter Ordner

                            2) Session, die Normale Session wird ja als Datei abgespeichert, wir nutzen stattdessen Redis, wieder ein Server

                            3) Mysql, wir haben getrennte Anfragen, du hast ein mal ein Server wo du die Daten lesen kannst und ein Server zum Schreiben. Da du durch diese Aufteilung auch eventuell probleme haben kannst, verzögerung beim lesen oder schreiben auf dem Falschen Server, machen wir das dann auch lokal über Docker.

                            4) Upload auf FTP von mehreren Servern. Der Quellcode muss gleichzeitig auf allen Servern ausgerollt werden, das könnte dauern und somit kann es sein dass Loadbalancer dann auf veralteten Code weiterleitet. Wir haben desswegen mit dem Deployer zwei prozesse
                            a) Rollout vom code auf jedem einzelnen server in eigenes Verzeichnis mit eventueller Migration und wenn das in Ordnung ist
                            b) schalte den Symlink auf jeden Server um

                            da das setzen des Symlinks schnell ist, hatten wir bisher keine Probleme damit gehabt. Und wir brauchen diese Zentrale deploy möglichkeit weil ich jetzt nicht mehrere Connections gespeichert haben will auf meinem lokalen PC

                            Es geht nicht darum ob man allleine macht, sondern wieviele Target Server man hat. Sobald du mehr als nur ein FTP Server hast, wirst du Nutze eventuell auch darüber nachdenken.

                            PHPMyAdmin nutzen wir übrigens gar nicht, weil Sicherheitslücken etc. Wir nutzen HeidiSQL mit SSH Tunnel

                            Desswegen verwenden wir docker, weil du das alles unter windows emulieren kannst und die gleichen Docker container dann auf einem beliebigen Server nutzen kannst
                            Ich empfinde Docker irgendwie als unnötig umständlich. Aber ok, kann man machen. Finde deine Punkte zum Teil interessant:

                            1) Warum arbeitet ihr nicht mit Sticky Sessions?
                            3) Wie macht ihr das? Wenn ich das richtig rauslese, dann nutzt ihr keinen Galera-Cluster.
                            @Heidi: Warum nutzt du nicht den Datenbank-Client von PHPStorm? Nutze Heidi mittlerweile nur noch ganz selten...
                            Standards - Best Practices - AwesomePHP - Guideline für WebApps

                            Kommentar


                            • #15
                              Zitat von rkr Beitrag anzeigen

                              Ich empfinde Docker irgendwie als unnötig umständlich. Aber ok, kann man machen. Finde deine Punkte zum Teil interessant:

                              1) Warum arbeitet ihr nicht mit Sticky Sessions?
                              Naja, weil wir nicht wissen das sowas exestiert, wir haben einfach das genommen was viele andere damals genommen haben. + Es ist es ja nicht so dass sticky sessions plötzlich unser Problem lösen. Wir arbeiten für WIssenschaftler die sich in Instituten aufhalten, IP Basierte Sticky Session würde da schon nicht gehen. Es ist aber auch wirklich kein problem PHP SEitig ein Redis Server anzusprechen, du kannst ja einfach den session handler überschreiben. War der einfachste Weg. Es ist einfacher eine Session implementierung zu schreiben als dann im Loadbalancer alles einzustellen. Natürlich ansichtssache
                              Zitat von rkr Beitrag anzeigen
                              3) Wie macht ihr das? Wenn ich das richtig rauslese, dann nutzt ihr keinen Galera-Cluster.
                              https://www.mysql.com/products/cluster/

                              mysql bietet halt ein Tool dafür an
                              Zitat von rkr Beitrag anzeigen
                              @Heidi: Warum nutzt du nicht den Datenbank-Client von PHPStorm? Nutze Heidi mittlerweile nur noch ganz selten...
                              Naja wir nutzen halt auch sowohl als auch, nur eben NICHT PMA

                              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