Jakie są podstawy działania serwera WWW?

26

To jest proponowane pytanie kanoniczne dotyczące rozpoczęcia administracji serwerem WWW.

Zakładając, że jesteś początkującym SysAd, jesteś nowy w WebOps lub małym zespole z niewielką lub żadną doświadczoną obsługą SysAd w zakresie Web Server (i nie możesz sobie na to teraz pozwolić), co powinieneś zrobić, aby skonfigurować i zabezpieczyć serwer WWW dla swojej firmy?

gWaldo
źródło
Wspominasz dwukrotnie o korzyściach z posiadania sysadu, co oznacza, że ​​zwracasz się do ludzi, którzy nie są sysadami. Na pewno to wyłącza twoje pytania i odpowiedzi dotyczące błędu serwera, który dotyczy sysads i in.? Być może superużytkownik jest lepszym miejscem do tego?
user9517 obsługuje GoFundMonica
8
Moje czytanie FAQ jest interpretowane jako „specjaliści techniczni zadający pytania dotyczące administracji systemów”. Widziałem tego rodzaju pytania zadawane wiele razy osobom technicznym (ale nie SysAd) (głównie programistom), i często reaguje się na nie surowo, a nie pomaga. To pytanie jest kandydatem na kanoniczną odpowiedź na pytanie, od czego zacząć i dlaczego powinni zatrudnić prawdziwą pomoc SysAd jak najszybciej. (I mam nadzieję, że już nigdy nie będę musiał odpowiadać na to konkretne pytanie.
gWaldo

Odpowiedzi:

32

Zanim zaczniemy:

Posiadanie wysokiej jakości ludzi pozwoli Ci zaoszczędzić pieniądze. Podobnie jak posiadanie dobrego prawnika (prawdopodobnie NSFW do przeklinania) lub księgowego, posiadanie wysokiej jakości SysAd prawdopodobnie pozwoli Ci zaoszczędzić pieniądze, często po prostu pomagając uniknąć kosztownych błędów. Być może nie masz teraz pieniędzy na fachową wiedzę, ale jak najszybciej powinieneś zainwestować.

Nie ma prostej, pojedynczej odpowiedzi na to pytanie. Jeśli zadajesz to pytanie, musisz zdać sobie sprawę, że to pytanie stanowi rdzeń dziedziny, w której specjaliści inwestują lata nauki i praktyki. Analogiczne pytanie do programisty brzmiałoby: „jak napisać aplikację internetową?”; Jasne, możemy wskazać Ci wskazówki dotyczące instalacji Ruby-on-Rails i RoR „Hello World”. Chociaż to „odpowiedziałoby na pytanie”, to tak naprawdę nie pomogłoby ci. To pytanie jest próbą rzeczywistej pomocy.

Powinieneś wiedzieć:

Administracja serwera WWW jest dużym tematem i jest nierozerwalnie związana z wieloma różnymi dyscyplinami. Aby to zrobić dobrze, potrzebujesz podstawowej znajomości protokołu TCP / IP, systemu operacyjnego hosta, aplikacji WebServer i pewnej wiedzy na temat uruchamiania stosu aplikacji.

Przygotuj się na czytanie. Wiele .

Określ swoje potrzeby:

Wymagania

  • Prowadzisz prostą, statyczną stronę internetową (może z niektórymi efektami Javascript), czy
  • (bardziej prawdopodobne) czy korzystasz z aplikacji, która ma interfejs sieciowy?
  • Czy masz trwałe dane? (Potrzebujesz bazy danych?)
  • Czy zaangażowane są poświadczenia użytkownika? Czy jest jeszcze jeden powód, dla którego należy zabezpieczyć połączenie między użytkownikiem a witryną? (SSL)
  • Czy obsługujesz płatności jakiegokolwiek rodzaju? Oprócz wymagań dotyczących protokołu SSL należy zbadać dodatkowe kwestie (w zależności od regionu). Różnią się one również w zależności od używanego procesora płatności.

Zidentyfikuj swój stos:

Jak zamierzasz to napisać i uruchomić?

  • Platforma (Windows, Linux, inny Unix itp.)
  • Wymagania aplikacji (Ruby / Rails, Python, Perl, PHP, .NET itp.)
  • Baza danych (...)
  • Buforowanie? (Szczerze mówiąc, nie martw się o to teraz; pamiętaj, że to rozwiązuje niektóre problemy i może tworzyć inne. Jest to problem z wydajnością, a teraz próbujesz zacząć.)

Niektóre z tych opcji poinformują innych. Na przykład jeśli używasz aplikacji .NET, prawdopodobnie chcesz używać MSSQL i IIS; Jeśli korzystasz z Ruby on Rails, prawdopodobnie potrzebujesz serwera Linux; itp...

Poznaj swój produkt:

Teraz, gdy już zdecydowałeś, jak będzie wyglądał twój stos, musisz go poznać. W tym miejscu powinieneś spędzać większość czasu. Wyszukiwanie „Konfiguruj [produkt]” lub „[produkt] Podręcznik administratora” powinno zapewnić ci mnóstwo zasobów.

Na przykład, jeśli używasz Apache na Ubuntu, powinieneś absolutnie przeczytać:

Poszukaj podobnych dokumentów, artykułów, postów na blogu dla swojego stosu.

Zainstaluj absolutne minimum:

Istnieje szeroka gama modułów dla Apache, ale jeśli nie zamierzasz używać PHP (na przykład), nie instaluj mod-php.

Należy również stwierdzić, że należy unikać instalowania GUI, jeśli jest to serwer Linux; GUI zużywa znaczną ilość zasobów systemowych.

Zabezpieczanie strony:

  • Zapewnij minimalne uprawnienia do działania. Dotyczy to nie tylko systemu plików, ale także usług i procesów
  • Utrzymuj porty serwera wyłączone dla niepotrzebnych usług. (Ponownie zainstaluj tylko minimum).
  • Ogranicz interfejsy aplikacji do środowiska wewnętrznego (jeśli, na przykład, uruchomisz aplikację internetową na tym samym serwerze (takim jak Rails), ogranicz ją tylko do nasłuchania localhost)

W zamknięciu:

To tylko początek tego, co powinieneś zrobić, aby uruchomić witrynę. To nawet nie zaczyna dotykać problemów związanych z utrzymywaniem serwerów ani radzenia sobie z problemami skalowania (w przypadku powodzenia projektu), ani żadnych innych niezliczonych problemów, które rozwiąże dla Ciebie kompetentna SysAd.

gWaldo
źródło
Uruchomienie absolutnego minimum jest kluczowe, ale może nie być oczywiste, co / jak odinstalować / wyłączyć / zabezpieczyć. Czy byłoby możliwe zasugerowanie publicznego uruchomienia całkowicie pozbawionej zapory maszyny typu barebone, która jedynie przesyła określone żądania do serwera aplikacji działającego w sieci prywatnej? Byłoby nawet możliwe zasugerowanie dystrybucji / konfiguracji, ponieważ nie musi to być to samo środowisko, z którego korzysta ich aplikacja.
Carlos Lima,
1
To dobry początek. Jedną z rzeczy, których nie zakryłeś, jest zdolność powtarzania. W pewnym momencie przekroczysz obecną konfigurację. Czy wskazówki dotyczące konfigurowania środowiska są powtarzalne? Jeszcze lepiej, czy są zautomatyzowane? Czy zapisujesz wszystkie pakiety źródłowe, aby móc odtworzyć środowisko, czy też korzystasz z zewnętrznych repozytoriów? Skąd będziesz wiedzieć, kiedy nadszedł czas na aktualizację? Czy śledzisz właściwe dane? Jak o nich raportujesz?
toppledwagon 11.04.13
@toppledwagon To wszystko są dobre punkty, ale miałem do czynienia z kursem 101. Wszystko, co wspomniałeś (spójność / konfiguracja mgt, skalowanie, monitorowanie / metryki itp.) Czuję, że przyjdzie później. I szczerze mówiąc wolałbym raczej dostać Systems Pro niż zagłębiać się w te obszary.
gWaldo
3
@toppledwagon Gdy dojdziesz do tego punktu, potrzebujesz sysadmin. Lub przynajmniej Sysadmin-as-a-Service.
Michael Hampton