Welcher Server ist sinvoll - Bin total ratlos
Hi an alle Profis des Forums!
Ich stehe vor einem Problem, was mich seit einer Woche nicht schlafen lässt.
Als kleiner Webentwickler hatte ich vor 3 Monaten eine Idee und bin dabei diese als erstes eigenes Projekt zu realisieren. Die Entwicklung geht eigentlich gut voran, jedoch komme ich jetzt an einen Punkt, an dem ich nicht weiterweiß, da meine Kenntnisse hier komplett fehlen.
Ich habe ein kleines Webtool entwickelt, welches sich über eine API mit z.B. YouTube LiveStreams connecten kann.
Die Zuschauer der Streams können dann Interaktionen in meinem Webtool ausführen. Diese werden als Aktivität in einer Datenbank gespeichert und der Streamer hat eine Source (quasi eine kleine PHP-Page), die er in seinen Stream einbinden kann. Diese Page checkt alle 3 Sekunden die Datenbank auf neue Aktivitäten ausgelöst durch Zuschauer.
Wenn eine Aktivität gefunden wird, wird diese im Stream ausgeführt.
Ob ich das weiterhin über einen 3Sek. Timer und eine direkte PDO Abfrage an die Datenbank über meine API mache oder dafür vielleicht doch lieber später Echtzeit-Tools wie Pusher.io nutze, die dann eine Info an die PHP-Page des Streamers, vom Backend beim Auslösen einer Interaktion, senden, weiß ich noch nicht. Aber natürlich habe ich hier diese Thematik mit maximalen Verbindungen zur Datenbank im Hinterkopf. Das hatte ich irgendwo mal gelesen, weiß jedoch nicht mehr so genau was es da tatsächlich zu bedenken gibt.
Nun stehe ich jedoch vor der großen Frage was brauche ich für eine Infrastruktur, wenn meine kleine Idee über Nacht groß werden sollte.
Bisher ist meine Testumgebung lediglich in einem Hosting Paket aufgebaut. Noch gibts auch keine Streamer, die die Idee nutzen und erst recht keine Zuschauer, die Requests zur Datenbank bzw. Backend aufbauen müssen.
Und hier wende ich mich jetzt an euch Spezialisten in der Hoffnung, dass ihr mich in die richtige Richtung lenken könnt.
Vor folgender Situation habe ich nämlich wirklich Sorge. Klar könnte ich jetzt einfach ein Hosting-Paket nutzen. Da kann es dann passieren, dass irgendwann der Hoster sagt, ok Freund du blockierst die Seiten der anderen Kunden so geht das nicht.
Ich könnte ausweichen auf einen V-Server oder Managed Server, hierbei kenne ich mich jedoch null aus, welche CPUs Arbeitsspeicher und Co man mieten müsste um X Aufrufe / Requests / Connections stabil halten zu können.
Ich könnte auch einen Root Server mieten oder selber zusammenbauen? Bei dem ich dann aber 100%ig komplett an der eigentlichen Konfiguration zusammenbrechen werde ^^
Meine Sorge ist, wenn die Idee anlaufen sollte und tatsächlich die Runde macht und vielleicht sogar große Streamer mit 40 - 100k Zuschauern die Idee einsetzen wollen, dass dann der Server einfach aufgibt und das ganze Offline geht. Ab dem Moment würde es keiner der Streamer nochmal nutzen und die Chance wäre vertan.
Wie kann ich jetzt hier die richtige Entscheidung treffen um vorsorglich save zu sein und das mit kleinen finanziellen Mitteln.
Vielleicht muss man noch wissen, wie die Requests ablaufen dazu hier eine kleine Zusammenfassung:
1. Website (einmaliger Call durch einen Streamer)
Es gibt eine Website. Über die kann sich ein Streamer Anmelden und einloggen. Der Streamer erhält dort einen Link zu seiner PHP-Page, die er in seinen Stream einbinden kann.
2. PHP-Page (alle 3 Sekunden Calls)
Ab da gibt es dann alle 3 Sekunden einen Verbindungsaufbau zu der MySQL Datenbank, um zu prüfen ob es Aktivitäten gibt.
3. Iframe Page (Calls durch Buttons)
Es gibt eine andere Page die z.B. bei YouTube per IFrame geladen werden kann und die jeder Zuschauer sieht, wenn er einen Stream anschaut. Die Page ist statisch und noch leer solange bis der Zuschauer einen Button drückt. So stell ich sicher, dass nicht bereits vorab für jeden einzelnen Zuschauer des Streams die Datenbank Dinge ausgelesen werden, obwohl der Zuschauer gar nichts machen will. So verhindere ich dann zusätzlich Traffic.
Hat er den Button gedrückt erfolgt ein Request zur API meines Backends. Diese liest aus der Datenbank alle möglichen Aktivitäten / Interaktionen und sendet sie zurück an das Iframe. Dadurch wird eine Liste aller Interaktionen angezeigt und der Zuschauer kann über einen Button pro Integration diese starten. Startet er eine Interaktion folgt ein weiterer Request zur API und in die Datenbank wird diese Aktivität geschrieben, die gestartet werden soll.
Die PHP-Page unter 2. merkt jetzt ok da ist eine Aktivität die ich ausführen soll und macht das. Nachdem die Aktivität ausgeführt wurde wird von der PHP-Page ein weiterer Request an die API gesendet und diese setzt die Aktivität in der Datenbank als ausgeführt / abgeschlossen / done.
- - - - - - - -
Das war es im Grunde auch schon. Im Hinterkopf muss man jetzt behalten, dass es Hunderttausende gar Millionen potentielle Streamer weltweit mit x Millionen Zuschauern gesamt gibt. Aber wie man so etwas am besten skalieren kann, da weiß ich einfach nicht weiter.
Ich bin wirklich sehr gespannt ob ihr mir bei meinem ersten eigenen Projekt helfen könnt - VIELEN DANK - für eure Zeit
LG
Ich stehe vor einem Problem, was mich seit einer Woche nicht schlafen lässt.
Als kleiner Webentwickler hatte ich vor 3 Monaten eine Idee und bin dabei diese als erstes eigenes Projekt zu realisieren. Die Entwicklung geht eigentlich gut voran, jedoch komme ich jetzt an einen Punkt, an dem ich nicht weiterweiß, da meine Kenntnisse hier komplett fehlen.
Ich habe ein kleines Webtool entwickelt, welches sich über eine API mit z.B. YouTube LiveStreams connecten kann.
Die Zuschauer der Streams können dann Interaktionen in meinem Webtool ausführen. Diese werden als Aktivität in einer Datenbank gespeichert und der Streamer hat eine Source (quasi eine kleine PHP-Page), die er in seinen Stream einbinden kann. Diese Page checkt alle 3 Sekunden die Datenbank auf neue Aktivitäten ausgelöst durch Zuschauer.
Wenn eine Aktivität gefunden wird, wird diese im Stream ausgeführt.
Ob ich das weiterhin über einen 3Sek. Timer und eine direkte PDO Abfrage an die Datenbank über meine API mache oder dafür vielleicht doch lieber später Echtzeit-Tools wie Pusher.io nutze, die dann eine Info an die PHP-Page des Streamers, vom Backend beim Auslösen einer Interaktion, senden, weiß ich noch nicht. Aber natürlich habe ich hier diese Thematik mit maximalen Verbindungen zur Datenbank im Hinterkopf. Das hatte ich irgendwo mal gelesen, weiß jedoch nicht mehr so genau was es da tatsächlich zu bedenken gibt.
Nun stehe ich jedoch vor der großen Frage was brauche ich für eine Infrastruktur, wenn meine kleine Idee über Nacht groß werden sollte.
Bisher ist meine Testumgebung lediglich in einem Hosting Paket aufgebaut. Noch gibts auch keine Streamer, die die Idee nutzen und erst recht keine Zuschauer, die Requests zur Datenbank bzw. Backend aufbauen müssen.
Und hier wende ich mich jetzt an euch Spezialisten in der Hoffnung, dass ihr mich in die richtige Richtung lenken könnt.
Vor folgender Situation habe ich nämlich wirklich Sorge. Klar könnte ich jetzt einfach ein Hosting-Paket nutzen. Da kann es dann passieren, dass irgendwann der Hoster sagt, ok Freund du blockierst die Seiten der anderen Kunden so geht das nicht.
Ich könnte ausweichen auf einen V-Server oder Managed Server, hierbei kenne ich mich jedoch null aus, welche CPUs Arbeitsspeicher und Co man mieten müsste um X Aufrufe / Requests / Connections stabil halten zu können.
Ich könnte auch einen Root Server mieten oder selber zusammenbauen? Bei dem ich dann aber 100%ig komplett an der eigentlichen Konfiguration zusammenbrechen werde ^^
Meine Sorge ist, wenn die Idee anlaufen sollte und tatsächlich die Runde macht und vielleicht sogar große Streamer mit 40 - 100k Zuschauern die Idee einsetzen wollen, dass dann der Server einfach aufgibt und das ganze Offline geht. Ab dem Moment würde es keiner der Streamer nochmal nutzen und die Chance wäre vertan.
Wie kann ich jetzt hier die richtige Entscheidung treffen um vorsorglich save zu sein und das mit kleinen finanziellen Mitteln.
Vielleicht muss man noch wissen, wie die Requests ablaufen dazu hier eine kleine Zusammenfassung:
1. Website (einmaliger Call durch einen Streamer)
Es gibt eine Website. Über die kann sich ein Streamer Anmelden und einloggen. Der Streamer erhält dort einen Link zu seiner PHP-Page, die er in seinen Stream einbinden kann.
2. PHP-Page (alle 3 Sekunden Calls)
Ab da gibt es dann alle 3 Sekunden einen Verbindungsaufbau zu der MySQL Datenbank, um zu prüfen ob es Aktivitäten gibt.
3. Iframe Page (Calls durch Buttons)
Es gibt eine andere Page die z.B. bei YouTube per IFrame geladen werden kann und die jeder Zuschauer sieht, wenn er einen Stream anschaut. Die Page ist statisch und noch leer solange bis der Zuschauer einen Button drückt. So stell ich sicher, dass nicht bereits vorab für jeden einzelnen Zuschauer des Streams die Datenbank Dinge ausgelesen werden, obwohl der Zuschauer gar nichts machen will. So verhindere ich dann zusätzlich Traffic.
Hat er den Button gedrückt erfolgt ein Request zur API meines Backends. Diese liest aus der Datenbank alle möglichen Aktivitäten / Interaktionen und sendet sie zurück an das Iframe. Dadurch wird eine Liste aller Interaktionen angezeigt und der Zuschauer kann über einen Button pro Integration diese starten. Startet er eine Interaktion folgt ein weiterer Request zur API und in die Datenbank wird diese Aktivität geschrieben, die gestartet werden soll.
Die PHP-Page unter 2. merkt jetzt ok da ist eine Aktivität die ich ausführen soll und macht das. Nachdem die Aktivität ausgeführt wurde wird von der PHP-Page ein weiterer Request an die API gesendet und diese setzt die Aktivität in der Datenbank als ausgeführt / abgeschlossen / done.
- - - - - - - -
Das war es im Grunde auch schon. Im Hinterkopf muss man jetzt behalten, dass es Hunderttausende gar Millionen potentielle Streamer weltweit mit x Millionen Zuschauern gesamt gibt. Aber wie man so etwas am besten skalieren kann, da weiß ich einfach nicht weiter.
Ich bin wirklich sehr gespannt ob ihr mir bei meinem ersten eigenen Projekt helfen könnt - VIELEN DANK - für eure Zeit
LG
Please also mark the comments that contributed to the solution of the article
Content-ID: 12738833768
Url: https://administrator.de/contentid/12738833768
Printed on: October 16, 2024 at 01:10 o'clock
28 Comments
Latest comment
Wenn du viele Requests erwartest, solltest du dir Gedanken machen auf ein System zu wechseln welches nur ein einmal auf dem Server läuft. Z.b. mit .Net Core und kein PHP verwenden.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.
Dann halten sich die Datenbankanfragen auch in Grenzen. Zudem ist es dann ein leichtes die App zu skalieren und weitere Instanzen mit nem Load-Balancer davor zu verbinden.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.
Dann halten sich die Datenbankanfragen auch in Grenzen. Zudem ist es dann ein leichtes die App zu skalieren und weitere Instanzen mit nem Load-Balancer davor zu verbinden.
Moin,
dafür gibt es keine einfache Antwort
Ohne ein Ziel in der Auslastung auf die man sein System auslegt, wirst Du, wenn alles gut läuft, Deine Infrastruktur mehrmals umbauen müssen. Die Super-Duper-Lösung wird jetzt schlicht zu teuer sein. Hosting-Kosten von 10-20 TEUR sind für einen frequentierten Online-Shop normal.
Kurz 2 Basics zu Zuverlässig und Leistung.
Die meisten normalen Hosting-Systeme und v-Server laufen mit einer Zuverässigkeit von 99%.
Klingt viel, aber ein Ausfall von 3,65 Tagen pro Jahr auf einmal ist schon doof. Mehr gibt es mit HA (Hochverfügbarkeit) was die Hostingkosten um ca. den Faktor 5 verteuert.
Und ja, meine Hetzner-Server haben keinen Ausfall von 3,65 Tagen im Jahr. Aber wenn Du Verträge mit Kunden machst, kommen da auch SLAs zum tragen.
Zu Leistung muss man wissen, dass neben der reinen CPU-Leitung auch eine IO-Lestung zum tragen kommen.
Statt einem Super-Server (Epic 256 Cores) sind 10 Server mit 24 Core deutlich schneller.
Tipp. Nimmer ein halbfertiges Hosting-System was man skalieren kann.
z.B. ein skalierbaren managed Root-Server mit Plesk. Damit kannst Du mit 2-3 Probekunden Dein System sowohl von der Logik als auch Leistung testen. Danach sieht man dann weiter.
Stefan
dafür gibt es keine einfache Antwort
Ohne ein Ziel in der Auslastung auf die man sein System auslegt, wirst Du, wenn alles gut läuft, Deine Infrastruktur mehrmals umbauen müssen. Die Super-Duper-Lösung wird jetzt schlicht zu teuer sein. Hosting-Kosten von 10-20 TEUR sind für einen frequentierten Online-Shop normal.
Kurz 2 Basics zu Zuverlässig und Leistung.
Die meisten normalen Hosting-Systeme und v-Server laufen mit einer Zuverässigkeit von 99%.
Klingt viel, aber ein Ausfall von 3,65 Tagen pro Jahr auf einmal ist schon doof. Mehr gibt es mit HA (Hochverfügbarkeit) was die Hostingkosten um ca. den Faktor 5 verteuert.
Und ja, meine Hetzner-Server haben keinen Ausfall von 3,65 Tagen im Jahr. Aber wenn Du Verträge mit Kunden machst, kommen da auch SLAs zum tragen.
Zu Leistung muss man wissen, dass neben der reinen CPU-Leitung auch eine IO-Lestung zum tragen kommen.
Statt einem Super-Server (Epic 256 Cores) sind 10 Server mit 24 Core deutlich schneller.
Tipp. Nimmer ein halbfertiges Hosting-System was man skalieren kann.
z.B. ein skalierbaren managed Root-Server mit Plesk. Damit kannst Du mit 2-3 Probekunden Dein System sowohl von der Logik als auch Leistung testen. Danach sieht man dann weiter.
Stefan
Hi,
PHP ist hier nicht das Problem, unsere Seite hier läuft mit Millionen von Zugriffen und mit PHP. Du solltest als Webserver z.B. NGINX nehmen und kein Apache. Das Problem würde ich eher bei der MySQL sehen, diese skaliert nicht wirklich gut. Da würde ich eher zu einer In-Memory DB wie DragonflyDB oder Redis tendieren.
Ein WebSocket Server wie Open Swoole funktioniert sehr gut und sehr schnell mit PHP. Wenn du es mit PHP richtig performant haben willst, dann schau dir FrankenPHP an - das ist ein PHP App Server geschrieben in GO.
Wenn keine In-Memory DB gewünscht ist, dann schau dir mal die NoSQL DBs wie z.B. MongoDB oder CouchDB an. Diese sind alle schneller und skalierbarer als eine MySQL und haben eine komfortable PHP Schnittstelle oder Bibliothek dazu.
Für das Hosting würde ich einen beliebigen Cloud-Anbieter nutzen, z.B. OVH oder Amazon AWS , etc. Eigene Server oder Hardware kann ich nicht mehr empfehlen, macht nur Arbeit und ist auf Dauer zu teuer.
Gruß
Frank
Wenn du viele Requests erwartest, solltest du dir Gedanken machen auf ein System zu wechseln welches nur ein einmal auf dem Server läuft. z.b. mit .Net Core und kein PHP verwenden.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.
PHP ist hier nicht das Problem, unsere Seite hier läuft mit Millionen von Zugriffen und mit PHP. Du solltest als Webserver z.B. NGINX nehmen und kein Apache. Das Problem würde ich eher bei der MySQL sehen, diese skaliert nicht wirklich gut. Da würde ich eher zu einer In-Memory DB wie DragonflyDB oder Redis tendieren.
Ein WebSocket Server wie Open Swoole funktioniert sehr gut und sehr schnell mit PHP. Wenn du es mit PHP richtig performant haben willst, dann schau dir FrankenPHP an - das ist ein PHP App Server geschrieben in GO.
Wenn keine In-Memory DB gewünscht ist, dann schau dir mal die NoSQL DBs wie z.B. MongoDB oder CouchDB an. Diese sind alle schneller und skalierbarer als eine MySQL und haben eine komfortable PHP Schnittstelle oder Bibliothek dazu.
Für das Hosting würde ich einen beliebigen Cloud-Anbieter nutzen, z.B. OVH oder Amazon AWS , etc. Eigene Server oder Hardware kann ich nicht mehr empfehlen, macht nur Arbeit und ist auf Dauer zu teuer.
Gruß
Frank
Moin,
die Sprache PHP ist, wie der Name schon sagt, nur eine Sprache.
Ja, C++ ist schneller als PHP, aber in der Praxis spielen andere Faktoren, wie z.B. die Logik und Abläufe eine viele größere Rolle.
Man kann immer mehr und schnellere Server mieten um bestimmte Daten immer on the Fly zu berechnen.
Bis man irgendwann feststellt, dass man diese zentrale und nur einmal alle 5 Minuten berechnet und sonst nur die fertigen Ergebnisse ausliefern kann und damit 2% Rechenleistung benötigt.
Beispiel 1: Ich habe einen Kunden der für ein Festival in Hamburg einen Vorverkauf zu einem bestimmten bekannten Zeitpunkt gestartet hat. Die ersten 1000 Tickets waren günstiger. Also saßen 10.000 Leute vor Ihren Computer, meist sogar 2-3 und ab 17:55 Uhr drückten alle im Sekundentakt F5. Das sind dann schnell 40.000 Anfragen pro Sekunde. Die Meisten Shop-Systeme, wie z.B. Magento schaffe mit guter Hardware 100 pro Sekunde. Wir haben dann eine Warteschlange programmiert wo jeder eine Nummer bekommen hat. Fand die Marketingabteilung nicht gut weil es die Spannung nahm, funktionierte aber. Aktuell werden immer kleine Gruppen gestaffelt angeschrieben die schon man da war.
Beispiel 2: Eine Firma hatte ein Skript in Ihrem Web-Shop welches eine Export-Datei aus dem Onlinebanking mit den Rechungen abgliech um diese als bezahlt zu markieren. Irgendwie lief das Skript 600 Sekunde statt 10 am Anfang. Ich hatte mir das Skript angeschaut und festgestellt, dass sie die Datei immer mit allen Rechnungen abglichen. Auch jenen aus vergangen Jahren und schon bezahlten Rechnungen. Also wurde das Skript umgestellt dass es nur aktuelle unbezahlte Rechnungen geprüft hat. Laufzeit: 2 Sekunden.
Fazit: Server heutzutage sind ganz schön schnell. Aber mit einer falschen Logik kannst Du alles Platt machen.
Nutze wenn möglich verteilte Rechenleistung und verteilte Daten. Ein Javascript im Browser hat auch einen lokalen Speicher. Dort einfach nur Updates hinsenden und der Javascript-Webclient macht die Arbeit für Dich.
Stefan
die Sprache PHP ist, wie der Name schon sagt, nur eine Sprache.
Ja, C++ ist schneller als PHP, aber in der Praxis spielen andere Faktoren, wie z.B. die Logik und Abläufe eine viele größere Rolle.
Man kann immer mehr und schnellere Server mieten um bestimmte Daten immer on the Fly zu berechnen.
Bis man irgendwann feststellt, dass man diese zentrale und nur einmal alle 5 Minuten berechnet und sonst nur die fertigen Ergebnisse ausliefern kann und damit 2% Rechenleistung benötigt.
Beispiel 1: Ich habe einen Kunden der für ein Festival in Hamburg einen Vorverkauf zu einem bestimmten bekannten Zeitpunkt gestartet hat. Die ersten 1000 Tickets waren günstiger. Also saßen 10.000 Leute vor Ihren Computer, meist sogar 2-3 und ab 17:55 Uhr drückten alle im Sekundentakt F5. Das sind dann schnell 40.000 Anfragen pro Sekunde. Die Meisten Shop-Systeme, wie z.B. Magento schaffe mit guter Hardware 100 pro Sekunde. Wir haben dann eine Warteschlange programmiert wo jeder eine Nummer bekommen hat. Fand die Marketingabteilung nicht gut weil es die Spannung nahm, funktionierte aber. Aktuell werden immer kleine Gruppen gestaffelt angeschrieben die schon man da war.
Beispiel 2: Eine Firma hatte ein Skript in Ihrem Web-Shop welches eine Export-Datei aus dem Onlinebanking mit den Rechungen abgliech um diese als bezahlt zu markieren. Irgendwie lief das Skript 600 Sekunde statt 10 am Anfang. Ich hatte mir das Skript angeschaut und festgestellt, dass sie die Datei immer mit allen Rechnungen abglichen. Auch jenen aus vergangen Jahren und schon bezahlten Rechnungen. Also wurde das Skript umgestellt dass es nur aktuelle unbezahlte Rechnungen geprüft hat. Laufzeit: 2 Sekunden.
Fazit: Server heutzutage sind ganz schön schnell. Aber mit einer falschen Logik kannst Du alles Platt machen.
Nutze wenn möglich verteilte Rechenleistung und verteilte Daten. Ein Javascript im Browser hat auch einen lokalen Speicher. Dort einfach nur Updates hinsenden und der Javascript-Webclient macht die Arbeit für Dich.
Stefan
Ich würde auch eher in die Cloud gehen, da kannst du jederzeit Ressourcen dazubuchen oder auch abschalten.
Ich will ja keine Werbung machen aber meine Firma wo ich Arbeite bietet auch Cloud Dienste an > https://www.hivehero.cloud
Ich will ja keine Werbung machen aber meine Firma wo ich Arbeite bietet auch Cloud Dienste an > https://www.hivehero.cloud
Nachtrag zum Theme Software.
Definiert wird Deine Software durch den Browser.
Der kann: HTML, CSS, Javascript und neuerdings WebAssemblys.
Info: Full-Stack-Webentwickler werden sehr schnell wahnsinnig.
Wer schlau ist und die Möglichkeit hat macht nur Front-End oder nur Backend.
Ich persönlich finde CSS und Javascript unglaiublich schlecht. Über die Jahre immer wieder aufgepuscht und erweitert und in vielen Bereichen einfach unlogisch.
Ich mag Backend. Frontend mache ich das nötigste mit Bootstrap.
Dein Feinschliff übernimmt mein Kollege.
Sinnvoll wären aber Lösungen wie z.B. React oder Vue.
Da die aber zwangsweise auf Javascript basieren müssen, der Browser kann halt nix anderes, sind die genauso verkorkst.
Ich habe mich mal eine Woche damit beschäftigt und kann damit auch arbeiten. Es führt aber zu psychischen Nebenwirkungen
Allgemein halte ich es für sinnvoll Frontend und Backend zu trennen und mit APIs zu verbinden.
Stefan
Definiert wird Deine Software durch den Browser.
Der kann: HTML, CSS, Javascript und neuerdings WebAssemblys.
Info: Full-Stack-Webentwickler werden sehr schnell wahnsinnig.
Wer schlau ist und die Möglichkeit hat macht nur Front-End oder nur Backend.
Ich persönlich finde CSS und Javascript unglaiublich schlecht. Über die Jahre immer wieder aufgepuscht und erweitert und in vielen Bereichen einfach unlogisch.
Ich mag Backend. Frontend mache ich das nötigste mit Bootstrap.
Dein Feinschliff übernimmt mein Kollege.
Sinnvoll wären aber Lösungen wie z.B. React oder Vue.
Da die aber zwangsweise auf Javascript basieren müssen, der Browser kann halt nix anderes, sind die genauso verkorkst.
Ich habe mich mal eine Woche damit beschäftigt und kann damit auch arbeiten. Es führt aber zu psychischen Nebenwirkungen
Allgemein halte ich es für sinnvoll Frontend und Backend zu trennen und mit APIs zu verbinden.
Stefan
Wenn sich jetzt Jemand fragt warum der Kittel hier solche Romane schreibt: Ich komme aus der Softwareentwicklung aus dem Desktop-Bereich. in Visual-Studio mit C++ eine kleine Desktop-Software zu schreiben ist meist nur eine Sache von wenigen Stunden. Primäre Fragen sind dann eher C# oder C++, Console oder Desktop, welche .net version. Go.
Im Web-Bereich dauert alles viel länger. Alleien für ein Projekt die Frage zu klären welches Framework, welche Sprache, welche EDI, welche Server, etc kann schon so lange dauern, dass man gar nicht erst anfängt. Und dann ist da noch das HTTP-Konzept in der Kommunkation und der Browser mit CSS und JS. Ein Logging von Fehlern oder Debugging von JS-Anwendung live im Feld ist ein graus.
Ich habe, glaube ich, mein System für meine kleine Web-Anwendung gefunden.
Aber das hat 2 Jahre gedauert, eigentlich länger und enthält mehrere Dutzend Kompromisse.
Meine frustrierten 50 Pfennige.
Stefan
Im Web-Bereich dauert alles viel länger. Alleien für ein Projekt die Frage zu klären welches Framework, welche Sprache, welche EDI, welche Server, etc kann schon so lange dauern, dass man gar nicht erst anfängt. Und dann ist da noch das HTTP-Konzept in der Kommunkation und der Browser mit CSS und JS. Ein Logging von Fehlern oder Debugging von JS-Anwendung live im Feld ist ein graus.
Ich habe, glaube ich, mein System für meine kleine Web-Anwendung gefunden.
Aber das hat 2 Jahre gedauert, eigentlich länger und enthält mehrere Dutzend Kompromisse.
Meine frustrierten 50 Pfennige.
Stefan
Ein Mistding bei Webprojekten ist die Vielzahl an Variationsmöglichkeiten
Trenne Dich von der Vorstellung eine Liste mit allen Optionen zu erstellen um diese zu testen.
Wenn Du damit fertig ist, ist sie schon überholt.
Da Du Dich mit PHP auskennst würde ich erst einmal da bleiben.
Ich mag die Server von Netcup. Alles funktioniert, die Preise sind günstig und der Support ist nett und meist kompetent.
Bedenke bitte, dass Du bei so einem Server einen nakten Server mit SSH-Zugang bekommst.
Dinge wie LAMP musst Du selber installieren und konfigurieren.
Auch für die Sicherheit bist Du verantwortlich.
Stefan
Trenne Dich von der Vorstellung eine Liste mit allen Optionen zu erstellen um diese zu testen.
Wenn Du damit fertig ist, ist sie schon überholt.
Da Du Dich mit PHP auskennst würde ich erst einmal da bleiben.
Ich mag die Server von Netcup. Alles funktioniert, die Preise sind günstig und der Support ist nett und meist kompetent.
Bedenke bitte, dass Du bei so einem Server einen nakten Server mit SSH-Zugang bekommst.
Dinge wie LAMP musst Du selber installieren und konfigurieren.
Auch für die Sicherheit bist Du verantwortlich.
Stefan
FrankenPHP
Ja, das funktioniert nicht über ein Hostingpaket. Dafür braucht man einen eigenen Cloud Server, auf dem Linux installiert ist und den man FrankenPHP installiert. Im Prinzip ist es ein eigener HTTP- und PHP-Server, der kein NGINX etc. braucht. Aber klar, das ist etwas relativ Neues und daher am Anfang schwer einzuordnen. Schau es dir einfach mal an.
Was ich nicht genau weiß ist ob FrankenPHP auf der ARM64 Plattform (die du bei netcup gewählt hast) läuft. Da der FrankenPHP Kern auf Caddy basiert und dieser für ARM64 verfügbar ist, sollte es aber gehen.
Thema Serverauswahl / V Server und Co
Ein Webhosting-Paket ist natürlich ein sehr einfaches, in der Regel nicht sehr leistungsfähiges Angebot. Vorteil: einfach zu handhaben, Nachteil: keine Kontrolle über das System und unflexibel.
Ein V-Server oder VPS ist immer ein virtueller Server mit IP Adresse, CPU, Speicher, Festplatte, auf dem z.B. ein Linux System deiner Wahl, Ubuntu oder Debian läuft - Windows hat in diesem Bereich nichts zu suchen (sorry). Die benötigten Komponenten wie PHP, Webserver oder Datenbank musst du dann selbst von Hand installieren. Im Prinzip so, als hättest du einen eigenen Server. Dank der aktuellen Linux-Distributionen ist das aber meist sehr einfach. Oft haben die Cloud Anbieter auch eine Benutzeroberfläche, um die wichtigsten Dinge automatisch zu installieren. Oder du bekommst einen SSH-Zugang und musst das selbst machen. Du solltest dich auf jeden Fall mit Linux auseinandersetzen.
Der Vorteil eines V-Servers oder VPS ist, dass du dich nicht um Hardware oder Skalierung kümmern musst. Wenn du jetzt ein kleines Paket bestellst, sollte der Anbieter jederzeit in der Lage sein, die Hardware auf Wunsch nach oben zu skalieren, also mehr CPU, Speicher oder SSD-Platz, etc. Gute Cloud-Anbieter können das. Natürlich muss man nicht gleich bei AWS anfangen, das ist wirklich unübersichtlich und kompliziert, ein kleiner VPS-Server reicht völlig aus.
netcup.de kannte ich noch nicht, aber die Angebote scheinen sehr fair zu sein. Ich werde mir das bei Gelegenheit mal genauer anschauen. In deinem Link geht es um einen ARM64 Server. Der ist sehr, sehr günstig, aber noch nicht alltäglich. D.h. man muss dann auch ein ARM64 Linux installieren und auch die restliche Software wie Webserver, DB etc. muss ARM64 kompatibel sein. Von Ubuntu gibt es eine ARM64 Version, also sollte das funktionieren. Ich denke, ich werde mir das kleinste ARM64 Paket für 6,95 bestellen, nur um es zu testen
Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall?
Bei virtuellen Servern muss man sich um die Sicherheit des Linux-Systems immer selbst kümmern. Gegen Angriffe auf die IP von außen (DDoS etc.) schützt in der Regel der Cloud-Anbieter. Du kannst bei der Ubuntu Installation das System so einstellen, dass es Sicherheitsupdates automatisch installiert, sobald sie veröffentlicht werden. Für die Sicherheit deiner PHP-Skripte bist du selbst verantwortlich (ist aber beim Hosting schon jetzt so). Das alles ist keine unlösbare Aufgabe.
In-Memory DB
Ja, In-Memory-DBs sind faszinierend und verdammt schnell, unsere Seite läuft z.B. mit der oben erwähnten DragonflyDB. D.h. alle Detailseiten und Kommentare kommen direkt aus dem Speicher. Der Nachteil solcher DBs ist die permanente Speicherung der Daten. D.h. alles wird zunächst nur im Arbeitsspeicher gehalten, wenn der Server abgeschaltet wird, ist theoretisch alles weg. Gute In-Memory DBs haben aber die Möglichkeit, jederzeit einen Snapshot der DB zu erstellen, der dann auch beim Start geladen wird. Wird ein System aktualisiert und muss dafür neu gestartet werden, erstellt die In-Memory DB einen aktuellen Snapshot, fährt herunter und startet neu. Beim Hochfahren wird dieser Snapshot wieder geladen und alle Daten sind wieder vorhanden. Der einzige Nachteil von Snapshots ist, dass die Daten nicht in Echtzeit gespeichert werden können. Die DragonflyDB ist jedoch so schnell, dass man Snapshots jede Minute erstellen könnte (was aber nicht empfohlen wird). Besser man erstellt einen 3er Cluster aus der In-Memory DB und die Daten können bei einem VPS Server mit 99,9% Verfügbarkeit eigentlich nicht mehr verloren gehen. So kompliziert ist eine In-Memory DB von der Ansteuerung auch nicht, man arbeitet mit ihr eher wie mit einem PHP-Array. Im Vergleich zur redis DB hat die dragonflyDB direkt native JSON Unterstützung (ohne Module) und ist einfach viel, viel schneller.
MySQL
Ich habe auch vor 30 Jahren mit MySQL angefangen. MySQL ist nicht schlecht und ziemlich einfach. Der wirkliche Nachteil im Web ist die fehlende Skalierbarkeit. So kann ein normaler MySQL Server maximal 500 bis 600 Verbindungen gleichzeitig verarbeiten. Mehr habe ich mit sehr schneller Server-Hardware (32 Cores, 256 GB RAM, SSDs, etc.) nie hinbekommen. Bei Hostingpaketen wird der Wert wahrscheinlich deutlich niedriger liegen (200 bis 300 gleichzeitige Verbindungen). Überlege dir also gut, ob du für dein Projekt wirklich darauf setzen willst.
Es gibt jedoch Alternativen, wenn du bei SQL bleiben möchtest. Schau dir die CockroachDB an. Diese ist vollständig kompatibel mit den PostgreSQL-Befehlen, die wiederum fast identisch mit denen von MySQL sind (natürlich gibt es kleine Unterschiede, aber die kann man schnell lernen). Sie wurde speziell für die Cloud und Skalierbarkeit entwickelt. Die DB hat sogar eine eigene Admin GUI und ist für ARM64 verfügbar. Sie kann mehrere tausend Clients gleichzeitig bedienen, je nachdem wie viele Instanzen man laufen lässt. Sie ist OpenSource und das Beste ist, dass sie mit dem offiziellen PHP PostgreSQL PDO Client Driver (pdo_pgsql) funktioniert. Wenn du PDO für MySQL verwendest, musst du fast nichts in deinen PHP-Skripten ändern (du solltest MySQLi sowieso nicht verwenden, PDO ist viel besser und schneller).
Für mich bleibt jetzt ein sehr großes Fragezeichen. Kann das Projekt mit dem Code und der Datenbank die ich aktuell verwende doch an den Start gehen, oder macht das so überhaupt keinen Sinn?
Lass dich nicht entmutigen. Das sind alles nur Tipps. Mach einfach weiter mit dem, was du hast, oder passe es ein bisschen an. Wenn es erfolgreich wird, kannst du es sowieso immer wieder verändern oder erweitern. Ich habe das hier mit meiner Seite auch so gemacht und bis jetzt hat es ganz gut funktioniert
Probiere es aus, nur so kannst du Erfahrungen sammeln.
P.S. Ich wollte gar nicht so viel schreiben, sorry für die langen Texte. Die WhatsApp oder Twitter Generation hat bestimmt nur die ersten 256 Zeichen gelesen und hat längst weiter gescrollt. Ich hoffe trotzdem, dass ich dir oder jedem der das liest, ein wenig weiterhelfen und einen kleinen Einblick geben konnte.
Gruß
Frank
Zitat von @DKX777:
Ach so warte mal, ist das bei V Servern grundsätzlich so? Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall? Falls ja dann sollte ich doch auf eine andere Lösung zugreifen. Sicherlich blick ich dahinter wie das geht, aber bevor ich da dann ne Fehlkonfiguration mache oder irgendwelche Sicherheitslücken unbewusst implementiere, dann lieber auf Nummer Sicher gehen.
Ach so warte mal, ist das bei V Servern grundsätzlich so? Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall? Falls ja dann sollte ich doch auf eine andere Lösung zugreifen. Sicherlich blick ich dahinter wie das geht, aber bevor ich da dann ne Fehlkonfiguration mache oder irgendwelche Sicherheitslücken unbewusst implementiere, dann lieber auf Nummer Sicher gehen.
You get what you pay for
Die meisten günstigen Server sind root-server wo Du nur den nakten Server bekommst.
Mehr als ein Reset auf Werkseinstellungen bietet der Support meist nicht an.
Ein managed-Server ist meist vorinstalliert mit Plesk oder ähnlichen und man darf keine oder nur ausgewählte Software installieren. Wenn man alles installieren könnte wäre der Support-Aufwand zu groß.
Die 3. Alternative sind SaaS-Systeme. Wenn man z.B. bei AWS einen reinen DB-Server mietet.
Stefan
Überraschung Netcup hat keine Firewall...
Doch, das haben sie. Aber für dich nicht sichtbar. Der Datenverkehr, der in das Netcup-Netzwerk gelangt, geht durch ihre Firewall. Sie werben damit, dass sie DDoS Attacken erkennen und filtern.
Was du meinst und brauchst ist die Firewall auf deinem virtuellen Server. Diese wird vom jeweiligen Linux-Kernel der virtuelle Maschine verwaltet. Unter Ubuntu wird sie z.B. über UFW verwaltet. Das ist ein sehr einfaches Linux Kommando, das die Firewall ein- und ausschaltet, verwaltet und die Einstellungen und den Status anzeigt. Es ist sehr einfach aufgebaut.
Generell ist ein Linux-Server von Haus aus ziemlich sicher, so dass man sich keine großen Sorgen um Sicherheitslücken machen muss. Mit einem
ufw enable
schaltet man einmalig die Firewall ein und mit ufw status
kann man den aktuellen Status auslesen. Da man sich nicht als 'root' einloggen kann (Standard bei Ubuntu), braucht man sich darüber nicht so viele Gedanken zu machen.Wie gesagt, um ein bisschen Linux-Administration kommst du nicht herum. Installiere doch einfach zu Hause ein Ubuntu in einer virtuellen Maschine und schau dir die Grundlagen an.
In-Memory DB
Die Snapshot-Funktion macht die In-Memory DB automatisch beim Starten und Herunterfahren, du brauchst nichts zu tun. Du kannst das noch zusätzlich so einstellen, dass sie jede Stunde einen Snapshot machen. Auch hier einfach etwas weniger Angst vor dem Neuen haben, die kochen auch alle nur mit Wasser.
Einen KI-Assistenten fragen
Was dir helfen könnte, ist ein KI-Assistent wie Chatgpt, CoPilot (oder natürlich unsere Seite hier). Du kannst ihn alles über die Ubuntu-Installation, die Datenbank oder die Firewall fragen und bekommst im Regelfall eine sehr hilfreiche Antwort, z.B. "Wie greife ich mit PHP und Redis auf meine Daten zu" oder "Wie schreibe und lese ich einen Datensatz in Redis". Redis und DragonflyDB sind vom Befehlssatz her vollständig kompatibel, so dass alles, was in Redis geht, auch in der schnelleren DragonflyDB funktioniert. Auch Fragen wie "wie kann ich unter Ubuntu mit ufw den Status der Firewall abfragen?" funktionieren gut.
Gruß
Frank
Hallo,
ich hab mich jetzt extra hier angemeldet um dir ein paar Infos zu schreiben. Ich finde das viele Kommentare zwar hilfreich sind, aber dich vielleicht zu sehr verunsichern. Jeder fängt mal irgendwo an, sammelt Erfahrungen und weis dann was man hätte besser machen können. Der Grundstein für Version 2.0 ;)
Darum möchte ich dir hier ein paar Tipps für den Server zu deinem Projekt mitgeben:
Hab keine Angst vor einem Root Server. Kein Hoster möchte in einer Tour irgendwelche Zombies im Netzwerk stehen haben, daher sind die ab Werk schon nicht ganz doof konfiguriert.
Einen managed Server möchtest du dir nicht ans Bein hängen, du kannst in der Regel keine Konfigurationen selbst ändern, sondern musst immer zum Support des Hosters. Daher kosten die auch so viel. Und es gibt nix blöderes als ständig aufgehalten zu werden oder gar im Notfall nicht reagieren zu können!
Ich würde dir sogar zu "Blech", also einem real existierenden Server raten. Hier bekommst du viel Leistung für vergleichsweise wenig Geld. Je nach Konditionen sind auch diese monatlich kündbar, so dass dein finanzielles Risiko überschaubar bleibt.
1. generiere einen Private und einen Public Key. Wie das für dein Betriebssystem geht, dafür gibts Anleitungen. Auch Windows 11 kann das mittlerweile ab Werk.
2. Wenn möglich gib den Public Key bereits beim Erstellen des Servers an. Bei Hetzner z.B. geht das bereits während dem Bestellvorgang.
3. Wenn das nicht möglich ist, logge dich via SSH in deinen Server als root ein und mach folgendes (ich gehe jetzt mal von Debian/Ubuntu aus):
STRG + X zum speichern und schließen
Was passiert hier? Mit nano ... erstellst du eine Abweichende, updatesichere Konfiguration für deinen SSH Server. Port 666 ändert den Standardport 22 auf 666. Das senkt die Anzahl der Loginversuche von 1000/m auf 0 ;) Du darfst auch jeden anderen Port verwenden. Mit den beiden letzten Befehlen schaltest du die Authentifizierung via Passwort ab, nur noch Public/Private Key ist dann möglich. Dies ist viel sicherer als Benutzername / Passwort.
4. Als nächstes installierst du die Programme die du brauchst. Vermutlich PHP und MySQL und einen Webserver. Ich lege dir mal MariaDB ans Herz. Ist im Prinzip gleich mit MySQL, unterscheidet sich nur in Feinheiten. Als Webserver verwende ich nginx. fail2ban überwacht deine Loginversuche bei SSH und bannt dann automatisch. Kann man noch auf andere Dienste ausweiten, aber es reicht erstmal SSH. Certbot wird benötigt um dir ein SSL Zertifikat zu besorgen
5. Wie du nginx für deine Bedürfnisse konfigurierst -> Google, oder ChatGPT.
Hier mal ein Beispiel welches ich z.B. für meine Laravel Installationen verwende:
6. Der PHP FPM ist dafür zuständig dass der PHP Code ausgeführt wird. Der FPM hat sogenannte Worker, diese kümmern sich um den einzelnen Seitenaufruf. Sind alle Worker verbraucht (also gerade beschäftigt), dann bekommt dein Besucher nur eine 500 Seite zu Gesicht. Hier ist das super gut erklärt, und wenn du viele gleichzeitige Zugriffe erwartest ist es sehr sehr wichtig die pm.max_children usw. Werte anzupassen -> https://geekflare.com/php-fpm-optimization/
7. echtes Blech hat in der Regel viel RAM, also nutzes es und gib es deiner Datenbank. Der passende Config Eintrag dazu ist "innodb_buffer_pool_size". Du kannst ihn hier hinterlegen: /etc/mysql/mariadb.conf.d/50-server.cnf
Das hat zufolge das MySQL mehr RAM belegen darf und folglich mehr Indezes und häufig benötigte Daten in den Speicher lädt. Erklärt wird das hier: https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-m ...
Ich hoffe ich konnte dir ein bisschen erläutern wie man PHP auch mit hohen Zugriffszahlen zum laufen bekommt. Für Detailfragen helfe ich dir gerne weiter.
Viele Grüße und viel Erfog
Martin
ich hab mich jetzt extra hier angemeldet um dir ein paar Infos zu schreiben. Ich finde das viele Kommentare zwar hilfreich sind, aber dich vielleicht zu sehr verunsichern. Jeder fängt mal irgendwo an, sammelt Erfahrungen und weis dann was man hätte besser machen können. Der Grundstein für Version 2.0 ;)
Darum möchte ich dir hier ein paar Tipps für den Server zu deinem Projekt mitgeben:
Hab keine Angst vor einem Root Server. Kein Hoster möchte in einer Tour irgendwelche Zombies im Netzwerk stehen haben, daher sind die ab Werk schon nicht ganz doof konfiguriert.
Einen managed Server möchtest du dir nicht ans Bein hängen, du kannst in der Regel keine Konfigurationen selbst ändern, sondern musst immer zum Support des Hosters. Daher kosten die auch so viel. Und es gibt nix blöderes als ständig aufgehalten zu werden oder gar im Notfall nicht reagieren zu können!
Ich würde dir sogar zu "Blech", also einem real existierenden Server raten. Hier bekommst du viel Leistung für vergleichsweise wenig Geld. Je nach Konditionen sind auch diese monatlich kündbar, so dass dein finanzielles Risiko überschaubar bleibt.
1. generiere einen Private und einen Public Key. Wie das für dein Betriebssystem geht, dafür gibts Anleitungen. Auch Windows 11 kann das mittlerweile ab Werk.
2. Wenn möglich gib den Public Key bereits beim Erstellen des Servers an. Bei Hetzner z.B. geht das bereits während dem Bestellvorgang.
3. Wenn das nicht möglich ist, logge dich via SSH in deinen Server als root ein und mach folgendes (ich gehe jetzt mal von Debian/Ubuntu aus):
nano /etc/ssh/sshd_config.d/custom.conf
Port 666
PasswordAuthentication no
PubkeyAuthentication yes
systemctl restart sshd.service
4. Als nächstes installierst du die Programme die du brauchst. Vermutlich PHP und MySQL und einen Webserver. Ich lege dir mal MariaDB ans Herz. Ist im Prinzip gleich mit MySQL, unterscheidet sich nur in Feinheiten. Als Webserver verwende ich nginx. fail2ban überwacht deine Loginversuche bei SSH und bannt dann automatisch. Kann man noch auf andere Dienste ausweiten, aber es reicht erstmal SSH. Certbot wird benötigt um dir ein SSL Zertifikat zu besorgen
apt install -y nginx unzip zip certbot python3-certbot-nginx fail2ban mariadb-server php8.1 php8.1-{common,bcmath,bz2,intl,gd,mbstring,mysql,zip,soap,xml,curl,fpm,imagick,dom,pdo}
5. Wie du nginx für deine Bedürfnisse konfigurierst -> Google, oder ChatGPT.
Hier mal ein Beispiel welches ich z.B. für meine Laravel Installationen verwende:
server {
server_name your.domain.tld;
root /var/vhosts/domain/sub/public;
index index.php index.html;
location / {
try_files $uri /index.php?$query_string;
}
location ~* \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
6. Der PHP FPM ist dafür zuständig dass der PHP Code ausgeführt wird. Der FPM hat sogenannte Worker, diese kümmern sich um den einzelnen Seitenaufruf. Sind alle Worker verbraucht (also gerade beschäftigt), dann bekommt dein Besucher nur eine 500 Seite zu Gesicht. Hier ist das super gut erklärt, und wenn du viele gleichzeitige Zugriffe erwartest ist es sehr sehr wichtig die pm.max_children usw. Werte anzupassen -> https://geekflare.com/php-fpm-optimization/
7. echtes Blech hat in der Regel viel RAM, also nutzes es und gib es deiner Datenbank. Der passende Config Eintrag dazu ist "innodb_buffer_pool_size". Du kannst ihn hier hinterlegen: /etc/mysql/mariadb.conf.d/50-server.cnf
Das hat zufolge das MySQL mehr RAM belegen darf und folglich mehr Indezes und häufig benötigte Daten in den Speicher lädt. Erklärt wird das hier: https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-m ...
Ich hoffe ich konnte dir ein bisschen erläutern wie man PHP auch mit hohen Zugriffszahlen zum laufen bekommt. Für Detailfragen helfe ich dir gerne weiter.
Viele Grüße und viel Erfog
Martin
Moin, ich werfe noch zwei Begriffe in den Raum.
LoadBalancer (LB).
Das ist ein Server der Zugriffe (Web, API, etc) auf mehrere Server verteilt.
So etwas gibt es bei jedem IaaS-Anbieter und bei vielen Root-Server-Anbietern.
Damit kannst Du recht einfach weitere Web-Server hinzubuchen um die Leistung zu erhöhen.
Natürlich muss die Datenbasis stimmen.
Meine Empfehlung wäre hier Hetzner mit seinen Cloud-Servern.
Skalierbar, mit Firewall-ähnlichen Regeln, Load-Balancer und Backup.
ELK-Stack
Das ist eine Sammlung von mehreren Komponenten.
Ich greife damit z.B. auf Protokolle einer Web-Application-Firewall zu und kann innerhalb von Sekunden ca. 100 Millionen Einträge filtern.
Stefan
LoadBalancer (LB).
Das ist ein Server der Zugriffe (Web, API, etc) auf mehrere Server verteilt.
So etwas gibt es bei jedem IaaS-Anbieter und bei vielen Root-Server-Anbietern.
Damit kannst Du recht einfach weitere Web-Server hinzubuchen um die Leistung zu erhöhen.
Natürlich muss die Datenbasis stimmen.
Meine Empfehlung wäre hier Hetzner mit seinen Cloud-Servern.
Skalierbar, mit Firewall-ähnlichen Regeln, Load-Balancer und Backup.
ELK-Stack
Das ist eine Sammlung von mehreren Komponenten.
Ich greife damit z.B. auf Protokolle einer Web-Application-Firewall zu und kann innerhalb von Sekunden ca. 100 Millionen Einträge filtern.
Stefan
Hallo DKX777,
mir fällt gerade auf das ich zu Punkt 3 nochwas wichtiges vergessen habe. Wenn dein Hoster es nicht anbietet den Public Key bei der Installation zu hinterlegen, dann kannst du das nachträglich auch selbst machen.
Dazu kopierst du deinen Public Key und gibst folgendes ein:
anschließend fügst du den Publick Key ein und beendest den Nano Editor mit STRG + X.
Das Tilde ~ Symbol verweist in Linux immer auf das Home Verzeichnis des aktuell verwendeten Users, also z.B. /root/ oder wenn du als Benny eingeloggt bist zu /home/benny/
Ein Load Balancer nimmt die ankommenden Anfragen entgegen und reicht diese dann an andere Server weiter. Dabei gibt es verschiedene verfahren, am geläufigsten ist jedoch "round robin" wo z.B. 3 Server mit der selben Logik zur Verfügung stehen und der Load Balancer sendet ankommende Anfragen an Server 1, dann S2, S3 und wieder S1 usw.
Du hast quasi deine PHP Logik auf 2, 3 oder mehr Servern am laufen und die beantworten dann die Anfragen. Dadurch verteilst du die Last gleichmäßig auf mehrere Server.
Mit PHP ist das noch easy skalierbar, aber bei MySQL würdest du so inkonsistenzen erzeugen, das will man natürlich nicht. Hier würde dann z.B. für MariaDB ein "Galera Cluster" ins Spiel kommen. Aber das brauchst du zum Anfrang noch gar nicht. Ich weis zwar nicht was du genau vor hast, aber ich bin mir sicher das ein guter Server sogar mit dem Traffic und der Last eines Montana Black zurecht kommt ;)
Viele Grüße
Martin
mir fällt gerade auf das ich zu Punkt 3 nochwas wichtiges vergessen habe. Wenn dein Hoster es nicht anbietet den Public Key bei der Installation zu hinterlegen, dann kannst du das nachträglich auch selbst machen.
Dazu kopierst du deinen Public Key und gibst folgendes ein:
mkdir ~/.ssh
nano ~/.ssh/authorized.keys
Das Tilde ~ Symbol verweist in Linux immer auf das Home Verzeichnis des aktuell verwendeten Users, also z.B. /root/ oder wenn du als Benny eingeloggt bist zu /home/benny/
Aber ich kann mir vorstellen, dass ein solcher LoadBalancer zukünftig sehr wichtig werden kann. Wobei ich mich aktuell dazu noch frage, wie das dann Codetechnisch ausschaut.
Ein Load Balancer nimmt die ankommenden Anfragen entgegen und reicht diese dann an andere Server weiter. Dabei gibt es verschiedene verfahren, am geläufigsten ist jedoch "round robin" wo z.B. 3 Server mit der selben Logik zur Verfügung stehen und der Load Balancer sendet ankommende Anfragen an Server 1, dann S2, S3 und wieder S1 usw.
Du hast quasi deine PHP Logik auf 2, 3 oder mehr Servern am laufen und die beantworten dann die Anfragen. Dadurch verteilst du die Last gleichmäßig auf mehrere Server.
Mit PHP ist das noch easy skalierbar, aber bei MySQL würdest du so inkonsistenzen erzeugen, das will man natürlich nicht. Hier würde dann z.B. für MariaDB ein "Galera Cluster" ins Spiel kommen. Aber das brauchst du zum Anfrang noch gar nicht. Ich weis zwar nicht was du genau vor hast, aber ich bin mir sicher das ein guter Server sogar mit dem Traffic und der Last eines Montana Black zurecht kommt ;)
Viele Grüße
Martin
Hi DKX777
Frage 1:
Sieht soweit in Ordnung aus. Vergiss nicht die Ports auf zu machen die du benötigst. Wenn du z.B. den SSH Port geändert hast ;)
Ansonsten.... Dienste die nicht existieren beantworten keinen Portscan und haben keine Sicherheitslücken. Also nicht benötigte Dienste wieder deinstallieren.
Frage 2:
UFW ist die Linux interne Firewall. Da du bereits eine von Hetzner nutzt, kannst du UFW deaktiviert lassen.
Frage 3:
Alles fine. Deine Firewall blockt eh alles weitere weg in der Einstellung.
Frage 4:
Auch einwandfrei.
Nebenkriegsschauplätze:
Geht auch mit jedem anderen Client der SFTP verwendet. Damit kannst du dich genauso mit deinen SSH Zugangsdaten einloggen, geht aber erheblich schneller beim Dateitransfer. Und ist genauso einfach wie FTP
Gruß Martin
Frage 1:
Sieht soweit in Ordnung aus. Vergiss nicht die Ports auf zu machen die du benötigst. Wenn du z.B. den SSH Port geändert hast ;)
Ansonsten.... Dienste die nicht existieren beantworten keinen Portscan und haben keine Sicherheitslücken. Also nicht benötigte Dienste wieder deinstallieren.
Frage 2:
UFW ist die Linux interne Firewall. Da du bereits eine von Hetzner nutzt, kannst du UFW deaktiviert lassen.
Frage 3:
Alles fine. Deine Firewall blockt eh alles weitere weg in der Einstellung.
Frage 4:
Auch einwandfrei.
Nebenkriegsschauplätze:
Das war auch ein Kampf rauszufinden wie ich überhaupt per Terminal Dateien hoch und runterladen kann - ist das bescheuert im Vergleich zu FTP
https://winscp.net/eng/download.php -> WinSCPGeht auch mit jedem anderen Client der SFTP verwendet. Damit kannst du dich genauso mit deinen SSH Zugangsdaten einloggen, geht aber erheblich schneller beim Dateitransfer. Und ist genauso einfach wie FTP
Nach dem ich dann etwas weiter gesucht habe, fand ich raus, dass ich den Standard-Host-Dispatcher von Nginx löschen muss.
Nein musst du eigentlich nicht. Nginx kann die Anfrage anhand der Domain identifizieren und dann die entsprechenden Einstellungen verwenden. Ich kann aber ohne weiteres Wissen den Fehler nicht identifizieren. Deine Konfig ist eigentlich korrekt.Lange Rede kurzer Sinn, VIELEN LIEBEN DANK!
Ja bitte gerne doch. Drop zu gegebenen Zeitpunkt an was du arbeitest. Also sobald du es veröffentlichen kannst Gruß Martin