Ngnix und Xampp auf Windows VPS Server

BTCStorage

Ensign
Registriert
Mai 2020
Beiträge
137
Ich baue gelegentlich Webseiten, schon seit einigen Jahren, ich mache das nicht beruflich aber probiere zur Zeit einige Grundprinzipien professionel zu lernen, ich hoffe mit Hilfreichen Tipps aus der Community etwas in die richtige Richtung auf zu arbeiten.

Fuer das Betreiben einer Webseite habe ich im Moment folgende Sachen auf einem Windows Vps Server aufgebaut und mein Gefuehl sagt mir das dies wahrscheinlich nicht optimal ist.

1. Xampp damit PHP und Mysql zur Verfuegung stehen
2. Node.js mit einem Webserver Script der auf Port 8080 gesetzt ist
3. Den Port 8080 habe ich fuer den Node.js Webserver feigeschaltet in der Windows Firewall und den Port 80 habe ich auch freigeschaltet damit der Apache PHP Server erreicht werden kann.

Die Webseite ist jetzt ueber die IP Adresse des Windows VPS Servers auf dem Webbrowser erreichbar und der Node.js Webserver ist auch erreichbar, alles funktionieren soweit wie es soll.

Jetzt stellt sich mir aber die Frage wie gehts weiter, kann man das so oeffentlich laufen lassen, muss ich nicht noch ein Proxy Server einbauen der die Anfragen auf Port 8080 und Port 80 ueberwacht, ist ein Windows VPS Server ueberhaupt geeignet fuer den Betrieb einer Webseite oder sollte man das nur mit Linux Servern aufbauen, brauch man ueberhaupt ein Proxyserver oder ubernimmt die Windows Firewall diese Aufgabe eines Proxysservers bei Windows VPS Servern, usw. Ich bin mir also nicht sicher wie man was am besten macht.

Fuer die meisten Leute die das auch Hauptberuflich machen sind das wahrscheinlich einfache Fragen und Standardaufgaben, ich probiere das im Moment aber erst neu.

Zuvor habe ich nur einfache Webseiten gebaut und die Dateien fuer die Webseite dann auf ein fertig eingerichteten Webserver bei eimen Webhoster rauf geladen und jetzt will ich gerne lernen wie man das selber aufbauen kann, vor allem auch weil ich Node.js diesmal einsetzen will.
 
XAMPP sollte nie vom Internet aus erreichbar sein, dieses Paket ist dafür nicht geeignet.
Das wird seitens der Entwickler aber auch so kommuniziert, das der Server nur zum Testen in internen Netzen geeignet ist.
Installiere dir direkt Apache mit entsprechenden Skriptsprachen, am besten in einem Linux.
 
  • Gefällt mir
Reaktionen: Th3Dan und BTCStorage
Xampp bitte wieder runter. Installier dir php und mariadb als mysql server vernünftig. xampp kommt immer mal wieder mit unsicheren defaults daher und bringt auch gern einen Haufen unnützer dependencies, die dann auh noch gepatched werden müssen. Es ist abgesehen davon nur zum lernen, NICHT für den Produktiveinsatz gedacht. Steck dir selber zusammen was wirklich gebraucht wird und was nihct.

Warum Apache zum ausliefern der PHP Inhalte? Warum dann noch der node.js Webserver?

Aktuell klingt das irgendwie, als würdest du deinen Nodejs Webserver laufen lassen und apache als Reverseproxy nutzen? Aber was macht php in der Kette? Hast du noch PHP Inhalte, die der Apache parallel ausliefert?


Und warum Windows? Da ist das alles ein bisschen fummelig..
 
  • Gefällt mir
Reaktionen: BTCStorage
Windows ist für einfache Websites overkill. Nimm einfach ein Serverlinux (z.B. CentOS) mit LAMP-stack (Linux, Apache, MySQL, PHP). Läuft auch out of the box und ist bei Bedarf erweiterbar.
 
  • Gefällt mir
Reaktionen: Th3Dan und BTCStorage
BTCStorage schrieb:
ist ein Windows VPS Server ueberhaupt geeignet fuer den Betrieb einer Webseite oder sollte man das nur mit Linux Servern aufbauen
Kommt drauf an, in welcher Welt du mehr Know-how hast. Apache und nginx fühlen sich aber in einer *NIX Umgebung wohler.
BTCStorage schrieb:
brauch man ueberhaupt ein Proxyserver oder ubernimmt die Windows Firewall diese Aufgabe eines Proxysservers
Eine Firewall ist eine Firewall und ein (reverse)proxy ein (reverse)proxy.

Und ob man einen (Reverse)Proxy braucht oder nicht, ergibt sich teilweise aus dem abzubildenden Szenario und der eigenen Befindlichkeiten. Ist wie mit Werkzeug... die Frage, ob man einen Hammer braucht, ergibt sich aus den Aufgaben, die man zu erledigen hat und kann nicht allgemeingültig beantwortet werden ;)

Vielleicht mietest du dir lieber einen managed webserver. Da kümmern sich andere um webserver und co und du kannst dich komplett auf deine webseiten konzentrieren.
 
  • Gefällt mir
Reaktionen: BTCStorage
martinallnet schrieb:
XAMPP sollte nie vom Internet aus erreichbar sein, dieses Paket ist dafür nicht geeignet.

Danke fuer den Hinweis, ich habe das ganz vergessen das Xampp nur zum testen ist.

madmax2010 schrieb:
Warum Apache zum ausliefern der PHP Inhalte? Warum dann noch der node.js Webserver?

Danke fuer deine Fragen. Ich habe im Moment folgendes gebaut:

Eine index.php mit Login, die ganze Webseite besteht im Moment nur aus einer index Seite wo man sich einloggen kann.

Wenn man eingeloggt ist kann man Handelsergebnisse von verschiedenen Konten sehen. Diese Kontos werden mit der Software Metatrader gehandelt und die Handelsergebnisse werden vom Metatrader ueber HTTP GET Aufrufe zum Node.js Webserver in die Mysql Datenbank gespeichert.

Und auf der index.php wo man sich die Ergebnisse der Konten anschauen kann ist auch PHP im Einsatz. Zusammen mit Javascript und PHP habe ich dann die Ansicht der Handelsergebnisse gebaut. Wahrschienlich koennte ich das dann am ebsten auch ohne PHP irgendwann aufbauen und alles vom Node.js Webserver machen.

madmax2010 schrieb:
Und warum Windows? Da ist das alles ein bisschen fummelig..

Ich habe bisher immer nur mit Windows VPS Servern gearbeitet und dort Programme laufen lassen, falls ich irgendetwas fuer eine Webseite gebraucht habe an Daten. Und die Webseiten selber habe ich immer direkt bei einem Webhoster hochgeladen. Ich habe nie selber irgendwelche Server eingerichtet und kenne mich mit Linux noch nicht aus. Die Entscheidung fuer ein Windows VPS Server war daher einfach deswegen weil ich noch nie Linux benutzt habe.

Aslo schrieb:
Windows ist für einfache Websites overkill. Nimm einfach ein Serverlinux (z.B. CentOS) mit LAMP-stack (Linux, Apache, MySQL, PHP). Läuft auch out of the box und ist bei Bedarf erweiterbar.
Bedeutet das vielleicht aber auch das anspruchsvollere Webseiten mit einem Windows VPS Server besser funktionieren koennen? Ist hier Windows vielleicht staerker als Linux und man benutzt Linux nur solange man kein Windows brauch? Oder warum sagst du das es fuer einfache Webseiten nicht noetig ist?

KillerCow schrieb:
Vielleicht mietest du dir lieber einen managed webserver. Da kümmern sich andere um webserver und co und du kannst dich komplett auf deine webseiten konzentrieren.
Da hast du natuerlich auch Recht, man muss ja auch nicht unbedingt alles selber koennen, aber soweit ich weis kosten Managed Webserver auch viel mehr, fuer ein einfachen Windows VPS Server zahle ich jetzt circa 10 Euro pro Monat und fuer einen Managed Server zahlt man bestimmt jeden Monat das doppelte. Aber wenn du mir gute Managed Webserver Angebote empfehlen kannst waere das nett.
 
BTCStorage schrieb:
Aber wenn du mir gute Managed Webserver Angebote empfehlen kannst waere das nett.
Leider nicht, weil ich meine Sachen selber betreue ;)
Müssen die Seiten denn während der Entwicklung überhaupt zwingend im Internet erreichbar sein? Denn wenn nicht, mach das doch zuhause auf deinem Rechner (da kannste dann auch LAMP oder so genutzen) und sobald du nen vorzeigbaren Stand hast, wirfst du den auf einen webspace. Der kostet auch nicht wirklich was.
 
  • Gefällt mir
Reaktionen: BTCStorage
Linux, nginx, MariaDB, PHP7.x, oder was auch immer du einsetzen möchtest.
Datenbankverbindung über Sockets, TCP-Zugriff dicht machen.

Ich hab meine eigen Subversion-Server mti eigenen Repositories und ein paar einfache Shell-Skripte, sodass ich lokal entwickeln kann und am Server Updates auschecken kann.
 
  • Gefällt mir
Reaktionen: BTCStorage
KillerCow schrieb:
und sobald du nen vorzeigbaren Stand hast, wirfst du den auf einen webspace. Der kostet auch nicht wirklich was.

Ich habe das bisher auch immer so gemacht, bei meinem neuen Projekt will ich aber gerne mit Node;js arbeiten und das ist in normalen Webspace Packeten glaube nicht dabei, oder bieten die sowas auch an? Weil Node.js wird ja normal ueber Powershell und aehnliche Kommandoeingaben gesteuert und im Webspace Packet funktioniert das ja so das man einfach nur seine Webseiten Dateien hoch ladet, da gibt es ja kein Powershell fuer Webspace Packete.

Wer so Sachen wie Node.js benutzen will muss das auf ein VPS Server laufen lassen, so habe ich das zumindest bisher verstanden, oder geht das auch anders?
Ergänzung ()

Gonzo28 schrieb:
Linux, nginx, MariaDB, PHP7.x, oder was auch immer du einsetzen möchtest.
Datenbankverbindung über Sockets, TCP-Zugriff dicht machen.

Sockets sind Websockets oder? Ich habe in meinem Node.js Webserver Script keine Websockets Codes eingebaut, warum empfehlst du gerade Sockets? Ist es nicht zu empfehlen wenn ich mir zum Beispiel mit HTTP GET Anfragen Daten vom Node.js Webserver ausgeben lasse, so wie bei einer geweohnlichen API?

Meine Idee ist so, in der HTML Seite baue ich mit Javascript HTTP GET Anfragen zum Node.js Webserver und der Webserver sendet mir dann das zurueck was ich angefragt habe.
 
Zuletzt bearbeitet:
Wir Websockets sind nicht das gleiche wie Sockets unter Linux. Du kannst zwischen nginx und PHP via TCP oder Socket kommunizieren, das gleiche gilt für PHP und Datenbank. Dabei sind Sockets immer schneller als TCP und zu bevorzugen, sofern es keine Gründe gibt, TCP zu nutzen.

Websockets sind etwas ganz anderes.
 
  • Gefällt mir
Reaktionen: Th3Dan und BTCStorage
Gonzo28 schrieb:
Dabei sind Sockets immer schneller als TCP
Das ist interessant, kann ich das den selber einstellen welche Variante benutzt wird oder kommt es auf den Aufbau von meinem PHP oder Javascript Code an was benutzt wird?
 
BTCStorage schrieb:
Bedeutet das vielleicht aber auch das anspruchsvollere Webseiten mit einem Windows VPS Server besser funktionieren koennen? Ist hier Windows vielleicht staerker als Linux und man benutzt Linux nur solange man kein Windows brauch? Oder warum sagst du das es fuer einfache Webseiten nicht noetig ist?
Nein. Es gibt nur einen sinnvollen Grund, Windows Server für Webhosting einzusetzen: Man betreibt Anwendungen die das aus technischen Gründen zwingend benötigen. Ist heutzutage aber selten geworden, da immer mehr auf Linux läuft. Selbst Bibliotheken die z.B. was mit Excel machen, das lief früher nur über die Win-Api auf Win Servern. Sind daher meist alte ASP.NET 4.x Legacy Anwendungen wofür man den IIS benötigt und dementsprechend eher im Firmenumfeld zu finden.

Ansonsten hast du mit Windows nur Nachteile. Neben den üblichen Nachteilen proprietärer Software wie z.B. Lizenzkosten ist die Performance von Webanwendungen meist schlechter. Grade die offenen Stacks wie Apache, Nginx, PHP, Python uvm stammen aus dem klassischen Linux-Umfeld. Auf Windows wurden sie wohl nur portiert, weil viele Windows-Clients zum entwickeln hatten (damals noch mehr als heute) und es halt grade in Unternehmen auch heute noch Admins gibt, die nur Windows machen und deswegen für ein paar kleine Webanwendungen nicht parallel noch Linux machen wollen (oder können, ist ja oft auch ein Ressourcenthema). Die Performancenachteile nimmt man dann oft in Kauf. Ich würde es nicht so machen, aber kann ich grade in kleineren Unternehmen verstehen, dass das für die praktikabler ist, wenn die primär Windows Umgebungen haben (müssen).

Ansonsten hat sich Windows in dem Umfeld nie wirklich durchgesetzt, weil es im Vergleich zu Linux viele Nachteile hat. Ausnahmen bestätigen die Regel. ASP.NET Core z.B. läuft auch auf Linux, auf Windows einen Ticken besser, weil MS das natürlich primär für Windows optimiert um das zu vermarkten. Aber ich sag mal so: Da bewegen wir uns in Dimensionen, die für die meisten irrelevant sind. Wer große Umgebungen betreibt wo das ins Gewicht fällt, der erhöht im schlimmsten Falle etwas die Ressourcen, muss sich dafür aber nicht mit Windows rumschlagen und ist immer noch günstiger.

BTCStorage schrieb:
fuer ein einfachen Windows VPS Server zahle ich jetzt circa 10 Euro pro Monat
Mit Linux bist du i.d.R. auch ein paar Euro günstiger bzw bekommst mehr Leistung fürs gleiche Geld. Beim Thema Management Hosting musst du für dich die Frage beantworten: Kannst und willst du die Infrastruktur selbst betreuen? Oder möchtest du das abgeben und zahlst dafür eben etwas extra? Gibt für beides valide Argumente.
Ergänzung ()

BTCStorage schrieb:
Das ist interessant, kann ich das den selber einstellen welche Variante benutzt wird oder kommt es auf den Aufbau von meinem PHP oder Javascript Code an was benutzt wird?
Entscheidet der Admin und ist vom Code abstrahiert, es geht da nur um Server2Server-Kommunikation. TCP-Sockets haben mehr Overhead als Unix Sockets. Unter Win hast du aber keine andere Wahl, da gibt es soweit ich weiß auch nix vergleichbares. Heißt da kommunizieren interne Systeme nur per TCP.

BTCStorage schrieb:
Ist es nicht zu empfehlen wenn ich mir zum Beispiel mit HTTP GET Anfragen Daten vom Node.js Webserver ausgeben lasse, so wie bei einer geweohnlichen API?
Wie so oft kommt es drauf an, was du machen willst. Du hast halt den HTTP Overhead. Für wenige kleine Anfragen kann das vernachlässigbar sein. Bei Websockets baust du eine dauerhafte Verbindung auf und kannst Daten verschicken, ohne jedes mal eine TCP + HTTP-Verbindung aufzubauen. Und das geht beidseitig. Websockets sind daher das Mittel der Wahl, wenn der Server den Client kontaktieren soll. Zum Beispiel wenn du in einem Forum eine PN bekommst.
 
Zuletzt bearbeitet:
Th3Dan schrieb:
Mit Linux bist du i.d.R. auch ein paar Euro günstiger bzw bekommst mehr Leistung fürs gleiche Geld. Beim Thema Management Hosting musst du für dich die Frage beantworten: Kannst und willst du die Infrastruktur selbst betreuen? Oder möchtest du das abgeben und zahlst dafür eben etwas extra?

Fuer das Einrichten von einem Linux VPS Server waere vielleicht sinnvoll wenn man da ein Monat Managed Server bezahlt damit die Leute das aufbauen und danach am besten nur normale VPS Server Preise, nicht jeden Monat weiter auf Managed Server Preise zahlen, das waere optimal.

Th3Dan schrieb:
Websockets sind daher das Mittel der Wahl,

Ich habe vor kurzen ein Video gesehen wo jemand erklaert das Websockets eigentlich nur dann eingesetzt werden sollten wenn es kaum anders geht, zum beispiel fuer Onlinegames usw. Fuer andere einfachere Aufgaben soll man besser Longpolling und EventSource benutzen. ->
Wuerdest du das auch so bestaetigen oder findest du Websockets trotzdem besser?

Ich selber will auch so eine Art Community Webseite bauen, wo Leute sich gegenseitig Nachrichten schicken koennen und Likes verteilen koennen auf Bilder oder auf Kommentare. Das soll dann auch angezeigt werden wenn jemand eine neue Nachricht bekommt oder andere Sachen.

Ich bin mir noch nicht so sicher wegen den techniken was ich am besten einbauen soll. Bisher habe ich einfach mit Javascript und PHP Datenbank Abfragen gearbeitet, aber ich will auch gerne bei diesem neuen Projekt Node.js einsetzen, aber ehrlich gesagt weis ich noch gar nicht welchen Vorteil es mir bringt, weil im Moment kann ich auch alles ohne Node.js aufbauen, trotzdem will ich gerne Node.js benutzen und suche Zur Zeit noch sowas wie ein Grund.
 
BTCStorage schrieb:
Fuer das Einrichten von einem Linux VPS Server waere vielleicht sinnvoll wenn man da ein Monat Managed Server bezahlt damit die Leute das aufbauen und danach am besten nur normale VPS Server Preise

Keine Ahnung ob das die Hoster mitmachen, hab noch nie managed Server gebucht. Würde ich aber mal nicht davon ausgehen. Wenn du dich nicht selbst einarbeiten willst, würde ich nach Schulungen/Consultants schauen. Das kostet natürlich.


BTCStorage schrieb:
Wuerdest du das auch so bestaetigen oder findest du Websockets trotzdem besser?

Seine Argumente dagegen sind:

1. Proxying is tricky, lots of proxies and transparent proxies don’t support it yet
Das kann in der Tat passieren. Halte ich aber nur in Firmenumgebungen für wirklich relevant. Der 0815 Nutzer lässt seinen Traffic nicht über einen Proxy laufen, zumindest nicht in DE. In Ländern mit starker Zensur mag das anders aussehen. Wenn das bei meiner Zielgruppe Konfliktpotenzial hat, würde ich tatsächlich über Alternativen nachdenken.

2. Layer 7 load balancing is tricky, timeouts on the load balancer.
Richtig konfiguriert ist das überschaubar. Wirkliche Probleme hatte ich da bisher mit mehreren bekannten noch nicht. Hauptsächlich ist bei mir Traefik davor, teils auch Nginx.


3. More complicated to implement (simple telnet use HTTP)
Klar bringt jede neue Technologie zusätzlichen Implementierungsaufwand, ist bei anderen genau so. Und wenn ich eine zusätzliche Funktionalität will, muss ich das in Kauf nehmen. Verstehe das Argument nicht, vor allem im Zusammenhang mit telnet. Was will er damit machen, HTTP-Anfragen Zeile für Zeile mühsam auf der Konsole zusammenbasteln? Wenn das der Maßstab für kompliziert ist, sollte man vllt mal seine Werkzeuge der Technologie anpassen.

4. Not ideal for all use cases - (microservices)
Websockets sind also doof weil sie keine eierlegende Wollmilchsau sind? Ernsthaft?!
Es gibt da so einen Spruch: Use the right tool for the right job...

BTCStorage schrieb:
Bisher habe ich einfach mit Javascript und PHP Datenbank Abfragen gearbeitet, aber ich will auch gerne bei diesem neuen Projekt Node.js einsetzen, aber ehrlich gesagt weis ich noch gar nicht welchen Vorteil es mir bringt, weil im Moment kann ich auch alles ohne Node.js aufbauen, trotzdem will ich gerne Node.js benutzen und suche Zur Zeit noch sowas wie ein Grund.
Kann man machen, PHP und vor allem JS sind beide nicht mehr so furchtbar wie früher (auch TypeScript sei Dank). Bei Node sollte man nur aufpassen, dass man nicht in die Dependency Hölle kommt und am Ende 20 NPM Pakete referenziert, die mit Abhängigkeiten auf zig Leveln dann hunderte oder gar tausende von Pakete einbinden. Die NodeJS Entwickler scheinen tendenziell kein Problem mit unkontrollierbaren Drittanbieter-Abhängigkeiten zu haben, im Gegenteil: Lieber mehr rein als zu wenig, was ich für keine gute Praxis halte.

Kann man aber auch mit ASP.NET Core in C# machen, wenn man Wert auf saubere OOP legt. Oder Python. Die laxe Typisierung von JS sehe ich als Problem, auch wenn viele Einsteiger das als Vereinfachung ansehen. Abseits der Spielwiese führt das halt zu stupiden Laufzeitfehlern, nur weil zwei Typen nicht passen. In C# oder wenn man genug RAM hat auch Java lässt sich solcher Code gar nicht erst kompilieren und der Entwickler muss sich Gedanken machen, was er da tut und wie er es Typenkonform tut.

Grundsätzlich gibts da nicht nur einen Weg. Wenn du der Meinung bist Node probieren zu wollen und das Lernen im Vordergrund steht, leg dir ein Git Repo an und los gehts. Durch das Ausprobieren verschiedener Stacks sammelt man Erfahrungen, um deren Stärken und Schwächen einschätzen zu können.
 
Ich werde mal Schritt fuer Schritt meine neue Webseite aufbauen wie ich das bisher immer gemacht habe und dann werde ich Schritt fuer Schritt Leuten im Forum zeigen wie ich etwas zur Zeit baue und dann nach Tipps fragen ob man irgendwo etwas besser machen kann, das gibt dann auch ein guten und einfachen Lerneffekt.
 
Zurück
Oben