Frage Was sind die Grundlagen zum Ausführen eines Webservers?


Dies ist ein Vorschlag Kanonische Frage über Anfang Web Server Administration.

Angenommen, Sie sind ein beginnendes SysAd, sind neu bei WebOps oder einem kleinen Team mit wenig oder keiner erfahrenen SysAd-Unterstützung für Web Server (und können es sich jetzt nicht leisten). Was sollten Sie tun, um einen Webserver für Ihr Unternehmen zu konfigurieren und zu sichern?


26
2018-04-08 13:07


Ursprung


Sie erwähnen zweimal die Vorteile eines Systemadministrators, was bedeutet, dass Sie Leute ansprechen, die keine Systemadministratoren sind. Surey dies bringt dann Ihre Q & A aus dem Geltungsbereich für Serverfehler, die für Sysads et al ist? Vielleicht ist Super User dafür ein besseres Zuhause? - Iain
Mein Lesen der FAQ wird als "technische Fachleute, die Fragen zur Systemadministration stellen" interpretiert. Ich habe diese Art von Frage oft von technischen (aber nicht von SysAd) Leuten (meist Entwicklern) gestellt, und sie werden oft auf hart statt auf wirklich geholfen geantwortet. Diese Frage stellt sich als Kandidat für eine kanonische Antwort, wo Sie anfangen sollen, und warum sie so schnell wie möglich eine echte SysAd-Hilfe beauftragen sollten. (Und hoffentlich nie wieder auf diese Frage antworten. - gWaldo


Antworten:


Bevor wir anfangen:

Mit hochwertigen Menschen sparen Sie Geld. So wie einen guten Anwalt haben (möglicherweise NSFW für Fluchen) oder ein Buchhalter, mit einer Qualität SysAd wird wahrscheinlich sparen Sie Geld, oft einfach hilft Ihnen, kostspielige Fehler zu vermeiden. Sie haben vielleicht nicht das Geld, um das Fachwissen jetzt zu bezahlen, aber sobald Sie können, sollten Sie diese Investition tätigen.

Es gibt keine einfache, singuläre Antwort auf diese Frage. Wenn Sie diese Frage stellen, müssen Sie erkennen, dass diese Frage der Kern eines Feldes ist, in das Fachleute Jahre des Studiums und der Praxis investieren. Die analoge Frage für einen Entwickler lautet: "Wie schreibe ich eine Web-Anwendung?"; Sicher, wir könnten Sie auf eine Anleitung zum Installieren von Ruby-on-Rails und einem RoR "Hello World" hinweisen. Während das "die Frage beantworten würde", würde es Ihnen wirklich nicht helfen. Dieses Q / A ist ein Versuch, dir wirklich zu helfen.

Du solltest wissen:

Web Server Administration ist ein großes Thema, und es ist intrinsisch mit vielen verschiedenen Disziplinen verwoben. Um dies gut zu machen, benötigen Sie ein grundlegendes Verständnis von TCP / IP, Ihrem Host-Betriebssystem, Ihrer WebServer-Anwendung und ein gewisses Verständnis für die Ausführung des Anwendungs-Stacks.

Sei bereit zu lesen. Viel.

Identifizieren Sie Ihre Bedürfnisse:

Bedarf

  • Führen Sie eine einfache, statische Website (vielleicht mit einigen Javascript-Effekten), oder
  • (Wahrscheinlicher) führen Sie eine Anwendung, die zufällig eine Webschnittstelle hat?
  • Haben Sie persistente Daten? (Brauchen Sie eine Datenbank?)
  • Sind Benutzeranmeldeinformationen beteiligt? Gibt es einen weiteren Grund, dass Sie die Verbindung zwischen dem Benutzer und der zu sichernden Website benötigen? (SSL)
  • Bekommen Sie Zahlungen jeglicher Art? Zusätzlich zu den SSL-Anforderungen müssen Sie noch weitere Überlegungen anstellen (abhängig von der Region). Diese variieren auch je nach dem von Ihnen verwendeten Zahlungsprozessor.

Identifizieren Sie Ihren Stack:

Wie wirst du das schreiben und ausführen?

  • Plattform (Windows, Linux, andere Unix, usw.)
  • App-Anforderungen (Ruby / Rails, Python, Perl, PHP, .NET usw.)
  • Datenbank (...)
  • Zwischenspeichern? (Ehrlich, machen Sie sich darüber jetzt keine Sorgen; seien Sie sich bewusst, dass dies einige Probleme löst und andere schaffen kann. Dies ist ein Problem der Leistung, und gerade jetzt versuchen Sie nur, anzufangen.)

Einige dieser Entscheidungen werden andere informieren. Wenn Sie beispielsweise eine .NET-Anwendung ausführen, möchten Sie wahrscheinlich MSSQL und IIS verwenden. Wenn Sie Ruby on Rails ausführen, möchten Sie wahrscheinlich einen Linux-Server. usw...

Lernen Sie Ihr Produkt kennen:

Nachdem Sie sich entschieden haben, wie Ihr Stack aussehen soll, müssen Sie ihn kennenlernen. Hier sollten Sie die meiste Zeit verbringen. Die Suche nach "Configure [product]" oder "[product] Admin Guide" sollte Ihnen genügend Ressourcen zur Verfügung stellen.

Zum Beispiel, wenn Sie Apache auf Ubuntu ausführen, sollten Sie unbedingt lesen:

Suchen Sie nach ähnlichen Dokumenten, Artikeln und Blog-Posts für Ihren Stack.

Installieren Sie das absolute Minimum:

Es gibt eine große Auswahl an Modulen für Apache, aber wenn Sie nicht mit PHP arbeiten (zum Beispiel), installieren Sie nicht mod-php.

Es sollte hier auch angegeben werden, dass Sie die Installation einer GUI vermeiden sollten, wenn es sich um einen Linux-Server handelt. GUI verbrauchen eine erhebliche Menge an Systemressourcen.

Sicherung der Website:

  • Stellen Sie minimale Berechtigungen für die Funktion sicher. Dies gilt nicht nur für das Dateisystem, sondern auch für Dienste und Prozesse
  • Lassen Sie die Server-Ports für nicht benötigte Dienste deaktiviert. (Installieren Sie wiederum nur das Minimum.)
  • Beschränken Sie die Anwendungsschnittstellen auf die interne Umgebung (wenn Sie beispielsweise eine Webanwendung auf demselben Server ausführen (z. B. Rails), beschränken Sie sie auf das Abhören von localhost).

Abschließend:

Dies ist nur der Anfang dessen, was Sie tun sollten, um eine Website zum Laufen zu bringen. Dies berührt nicht einmal die Probleme bei der Wartung von Servern oder bei Problemen mit der Skalierung (falls Ihr Projekt erfolgreich sein sollte), noch bei den anderen unzähligen Problemen, die ein sachkundiges SysAd für Sie löst.


32
2018-04-08 13:07



Es ist wichtig, das Nötigste auszuführen, aber es ist vielleicht nicht offensichtlich, was / wie man es deinstalliert / deaktiviert / schützt. Wäre es akzeptabel zu empfehlen, einen Barebone-Firewall-Server öffentlich zu betreiben, der nur bestimmte Anfragen an seinen Anwendungsserver in einem privaten Netzwerk weiterleitet / proxitiert? Es wäre sogar möglich, eine Distro / Config dafür vorzuschlagen, da es nicht die gleiche Umgebung sein muss, die ihre App verwendet. - Carlos Lima
Das ist ein guter Anfang. Eine Sache, die Sie nicht abgedeckt haben, ist die Wiederholbarkeit. Irgendwann wirst du über das aktuelle Setup hinauswachsen. Sind Ihre Anweisungen zum Einrichten der Umgebung wiederholbar? Besser noch, sind sie automatisiert? Speichern Sie alle Quellpakete, damit Sie die Umgebung neu erstellen können oder stützen Sie sich auf externe Repositorys? Wie werden Sie wissen, wann es Zeit für ein Upgrade ist? Verfolgen Sie die richtigen Messwerte? Wie berichten Sie über sie? - toppledwagon
@topledwagon Das sind alles gute Punkte, aber ich sprach den Kurs 101 an. Alles was du erwähnt hast (Konsistenz / Konfiguration, Skalierung, Überwachung / Metriken, etc.) Ich fühle mich später. Und ehrlich gesagt, würde ich eher empfehlen, ein Systems Pro zu erwerben, als sich in diese Bereiche zu vertiefen. - gWaldo
@topledwagon Sobald Sie zu diesem Punkt kommen, benötigen Sie einen Systemadministrator. Oder zumindest ein Sysadmin-as-a-Service. - Michael Hampton♦