Was sind die Grundlagen zum Ausführen eines Webservers?

26

Dies ist eine vorgeschlagene kanonische Frage zum Einstieg in die Webserververwaltung.

Angenommen, Sie sind ein Anfänger von SysAd, WebOps-Neuling oder ein kleines Team mit wenig oder keinem erfahrenen SysAd-Support für Webserver (und können es sich derzeit nicht leisten). Was müssen Sie tun, um einen Webserver für Ihr Unternehmen zu konfigurieren und abzusichern?

gWaldo
quelle
Sie erwähnen zweimal die Vorteile eines Sysad, was bedeutet, dass Sie sich an Menschen wenden, die keine Sysad sind. Stellt dies sicher, dass Ihre Fragen und Antworten für Serverfehler, die für Sysads et al. Vielleicht ist Super User ein besseres Zuhause dafür?
User9517 unterstützt GoFundMonica
8
Meine Lektüre 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 (hauptsächlich Entwicklern) gestellt bekommen, und sie werden oft hart beantwortet, anstatt tatsächlich geholfen zu haben. Diese Frage ist ein Kandidat für die kanonische Antwort auf die Frage, wo Sie anfangen sollen und warum Sie so schnell wie möglich echte SysAd-Hilfe einstellen sollten. (Und hoffentlich müssen Sie diese Frage nie wieder beantworten.
gWaldo

Antworten:

32

Bevor wir anfangen:

Wenn Sie gute Leute haben, sparen Sie Geld. Genau wie ein guter Anwalt (möglicherweise NSFW für Fluchen) oder ein Buchhalter, spart Ihnen ein qualitativ hochwertiger SysAd wahrscheinlich Geld, oftmals indem er Ihnen einfach hilft, kostspielige Fehler zu vermeiden. Sie haben möglicherweise 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öchten, müssen Sie sich darüber im Klaren sein, dass diese Frage der Kern eines Fachgebiets ist, in das Fachleute jahrelanges Lernen und Üben investieren. Die analoge Frage für einen Entwickler wäre: "Wie schreibe ich eine Webanwendung?" Klar, wir könnten Ihnen eine Anleitung zur Installation von Ruby-on-Rails und einer RoR "Hello World" geben. Während das die Frage beantworten würde, würde es dir nicht wirklich helfen. Dieses Q / A ist ein Versuch, Ihnen tatsächlich zu helfen.

Du solltest wissen:

Die Webserververwaltung ist ein großes Thema, das eng mit vielen verschiedenen Disziplinen verwoben ist. Um dies zu erreichen, benötigen Sie grundlegende Kenntnisse über TCP / IP, Ihr Host-Betriebssystem, Ihre WebServer-Anwendung und einige Kenntnisse über die Ausführung des Anwendungsstapels.

Seien Sie bereit zu lesen. Viel .

Identifizieren Sie Ihre Bedürfnisse:

Bedarf

  • Betreiben Sie eine einfache, statische Website (möglicherweise mit einigen Javascript-Effekten) oder
  • (mit größerer Wahrscheinlichkeit) führen Sie eine Anwendung mit einer Weboberfläche aus?
  • Haben Sie persistente Daten? (Benötigen Sie eine Datenbank?)
  • Sind Benutzeranmeldeinformationen erforderlich? Gibt es einen weiteren Grund, warum die Verbindung zwischen dem Benutzer und der Website gesichert werden muss? (SSL)
  • Bearbeiten Sie Zahlungen jeglicher Art? Zusätzlich zu den SSL-Anforderungen müssen Sie weitere Überlegungen anstellen (abhängig von der Region). Diese variieren auch in Abhängigkeit von dem von Ihnen verwendeten Zahlungsprozessor.

Identifizieren Sie Ihren Stapel:

Wie wirst du das schreiben und ausführen?

  • Plattform (Windows, Linux, andere Unix usw.)
  • App-Anforderungen (Ruby / Rails, Python, Perl, PHP, .NET usw. usw.)
  • Datenbank (...)
  • Caching? (Ganz ehrlich, machen Sie sich jetzt keine Sorgen. Beachten Sie, dass dies einige Probleme löst und andere verursachen kann. Dies ist ein Leistungsproblem, und im Moment versuchen Sie nur, loszulegen.)

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

Lernen Sie Ihr Produkt kennen:

Nachdem Sie festgelegt haben, wie Ihr Stapel aussehen soll, müssen Sie ihn kennenlernen. Hier sollten Sie die meiste Zeit verbringen. Wenn Sie nach "Configure [product]" oder "[product] Admin Guide" suchen, erhalten Sie eine Vielzahl von Ressourcen.

Wenn Sie beispielsweise Apache unter Ubuntu ausführen, sollten Sie unbedingt Folgendes lesen:

Suchen Sie nach ähnlichen Dokumenten, Artikeln und Blogeinträgen für Ihren Stapel.

Installieren Sie das Nötigste:

Es gibt eine Vielzahl von Modulen für Apache, aber wenn Sie (zum Beispiel) kein PHP verwenden möchten, installieren Sie nicht mod-php.

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

Sicherung der Site:

  • Stellen Sie sicher, dass nur minimale Funktionsberechtigungen vorhanden sind. 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 erneut nur das Minimum.)
  • Anwendungsschnittstellen auf die interne Umgebung beschränken (wenn Sie beispielsweise eine Webanwendung auf demselben Server ausführen (z. B. Rails), beschränken Sie sich darauf, nur localhost abzuhören)

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 beim Umgang mit Skalierungsproblemen (sollte Ihr Projekt erfolgreich werden) oder all den anderen unzähligen Problemen, die ein sachkundiger SysAd für Sie lösen wird.

gWaldo
quelle
Das Ausführen des Minimums ist von entscheidender Bedeutung, es ist jedoch möglicherweise nicht klar, was / wie deinstalliert / deaktiviert / geschützt werden soll. Wäre es akzeptabel vorzuschlagen, einen vollständig durch eine Firewall geschützten Barebone-Computer öffentlich zu betreiben, der nur bestimmte Anforderungen an seinen Anwendungsserver weiterleitet, der in einem privaten Netzwerk ausgeführt wird? Es wäre sogar möglich, eine Distribution / Konfiguration dafür vorzuschlagen, da es nicht die gleiche Umgebung sein muss, die ihre App verwendet.
Carlos Lima
1
Das ist ein guter Anfang. Eine Sache, die Sie nicht behandelt haben, ist die Wiederholbarkeit. Irgendwann werden Sie über das aktuelle Setup hinauswachsen. Sind Ihre Anweisungen zum Einrichten der Umgebung wiederholbar? Besser noch, sind sie automatisiert? Speichern Sie alle Quellpakete, um die Umgebung neu zu erstellen, oder verlassen Sie sich auf externe Repositorys? Woher wissen Sie, wann ein Upgrade erforderlich ist? Verfolgen Sie die richtigen Metriken? Wie berichten Sie über sie?
Sturzwagen
@toppledwagon Das sind alles gute Punkte, aber ich habe den 101 Kurs angesprochen. Alles, was Sie erwähnt haben (Konsistenz / Konfiguration, Skalierung, Überwachung / Metrik usw.), komme ich später. Und ehrlich gesagt würde ich eher empfehlen, sich ein Systems Pro anzuschaffen, als sich mit diesen Bereichen zu befassen.
gWaldo
3
@toppledwagon Wenn Sie diesen Punkt erreicht haben, benötigen Sie einen Sysadmin. Oder zumindest ein Sysadmin-as-a-Service.
Michael Hampton