Quali sono le basi dell'esecuzione di un server Web?


26

Questa è una domanda canonica proposta sull'inizio dell'amministrazione del server Web.

Supponendo che tu sia un SysAd iniziale, che tu sia nuovo su WebOps o un piccolo team con supporto SysAd per server Web poco o nessun esperto (e non puoi permettertelo in questo momento), cosa dovresti fare per configurare e proteggere un server Web per la tua azienda?


Dici due volte i vantaggi di avere un sysad, il che implica che stai affrontando persone che non sono sysad. Certo, questo mette le tue domande e risposte fuori dal campo di applicazione di Server Fault che è per sysads et al? Forse Super User è una casa migliore per questo?
user9517 supporta GoFundMonica l'

8
La mia lettura delle FAQ è interpretata come "professionisti tecnici che pongono domande sull'amministrazione dei sistemi". Ho visto molte volte questo tipo di domande poste da tecnici (ma non da SysAd) (per lo più sviluppatori), a cui spesso rispondono duramente invece di essere effettivamente aiutate. Questa domanda si pone come un candidato per essere una risposta canonica di dove iniziare, e perché dovrebbero assumere SysAd reale aiutare appena possibile. (E spero che non dovrete mai più rispondere a questa particolare domanda.
gWaldo

Risposte:


32

Prima di iniziare:

Avere persone di qualità ti farà risparmiare denaro. Proprio come avere un buon avvocato (possibilmente NSFW per imprecare) o un contabile, avere un amministratore di sistema di qualità probabilmente ti farà risparmiare denaro, spesso semplicemente aiutandoti a evitare costosi errori. Potresti non avere i soldi per pagare le competenze ora, ma appena puoi, dovresti fare quell'investimento.

Non esiste una risposta semplice e singolare a questa domanda. Se sei tu a porre questa domanda, devi capire che questa domanda è il fulcro di un campo in cui i professionisti investono anni di studio e pratica. La domanda analoga a uno sviluppatore sarebbe "come faccio a scrivere un'applicazione Web?"; Certo, potremmo indicarti le indicazioni per installare Ruby-on-Rails e un RoR "Hello World". Mentre questo "risponderebbe alla domanda", in realtà non ti aiuterebbe. Questo Q / A è un tentativo di aiutarti davvero.

Dovresti sapere:

L'amministrazione del server Web è un argomento di grandi dimensioni ed è intrinsecamente intrecciata con molte discipline diverse. Per farlo bene avrai bisogno di una conoscenza fondamentale di TCP / IP, del tuo sistema operativo host, della tua applicazione WebServer e di una certa conoscenza dell'esecuzione dello stack di applicazioni.

Preparati a leggere. Un sacco .

Individua le tue esigenze:

Requisiti

  • Stai gestendo un sito Web semplice e statico (forse con alcuni effetti Javascript) o
  • (più probabilmente) stai eseguendo un'applicazione che ha un'interfaccia web?
  • Hai dati persistenti? (Hai bisogno di un database?)
  • Ci sono le credenziali dell'utente coinvolte? C'è un altro motivo per cui è necessario proteggere la connessione tra l'utente e il sito Web? (SSL)
  • Stai gestendo pagamenti di qualsiasi tipo? Oltre ad avere i requisiti SSL, ci sono ulteriori considerazioni che dovrai ricercare (a seconda della regione). Questi varieranno anche a seconda del processore di pagamento che usi.

Identifica il tuo stack:

Come hai intenzione di scrivere ed eseguire questo?

  • Piattaforma (Windows, Linux, altri Unix, ecc.)
  • Requisiti dell'app (Ruby / Rails, Python, Perl, PHP, .NET, ecc, ecc.)
  • Banca dati (...)
  • Caching? (Onestamente, non preoccuparti di questo ora; tieni presente che questo risolve alcuni problemi e può crearne altri. Questo è un problema di prestazioni e in questo momento stai solo cercando di iniziare.)

Alcune di queste scelte informeranno altre. Ad esempio, se si esegue un'app .NET, probabilmente si desidera utilizzare MSSQL e IIS; Se stai eseguendo Ruby on Rails, probabilmente vuoi un server Linux; eccetera...

Conosci il tuo prodotto:

Ora che hai deciso come sarà il tuo stack, devi conoscerlo. Qui è dove dovresti passare la maggior parte del tuo tempo. La ricerca di "Configura [prodotto]" o "[Guida dell'amministratore del prodotto" dovrebbe ottenere molte risorse.

Ad esempio, se stai eseguendo Apache su Ubuntu, dovresti assolutamente leggere:

Cerca documenti simili, articoli, post di blog per il tuo stack.

Installa il minimo indispensabile:

Esiste una vasta gamma di moduli per Apache, ma se non utilizzerai PHP (ad esempio), non installare mod-php.

Dovrebbe anche essere indicato qui che dovresti evitare di installare una GUI se è un server Linux; Le GUI consumano una quantità significativa di risorse di sistema.

Protezione del sito:

  • Garantire autorizzazioni minime per funzionare. Questo vale non solo per il filesystem, ma anche per servizi e processi
  • Mantieni le porte del server disabilitate per i servizi non necessari. (Ancora una volta, installa solo il minimo.)
  • Limitare le interfacce dell'applicazione all'ambiente interno (se, ad esempio, eseguendo un'applicazione Web sullo stesso server (come Rails), limitarlo ad ascoltare solo localhost)

In chiusura:

Questo è solo l'inizio di ciò che dovresti fare per far funzionare un sito. Questo non inizia nemmeno a toccare i problemi di manutenzione dei server o di come gestire i problemi di ridimensionamento (nel caso in cui il progetto abbia successo), né qualsiasi altra miriade di problemi che un SysAd competente saprà risolvere per te.


L'esecuzione del minimo indispensabile è fondamentale, ma potrebbe non essere ovvio cosa / come disinstallare / disabilitare / proteggere. Sarebbe accettabile suggerire di eseguire pubblicamente una macchina barebone, totalmente protetta da firewall che inoltra / inoltra richieste specifiche al proprio server delle applicazioni in esecuzione su una rete privata? Sarebbe anche possibile suggerire una distro / configurazione per questo dato che non deve essere lo stesso ambiente utilizzato dalla loro app.
Carlos Lima,

1
È un buon inizio. Una cosa che non hai trattato è l'abilità di ripetizione. Ad un certo punto crescerai oltre la configurazione attuale. Le indicazioni per l'impostazione dell'ambiente sono ripetibili? Meglio ancora, sono automatizzati? Stai salvando tutti i pacchetti sorgente in modo da poter ricreare l'ambiente o fai affidamento su repository esterni? Come saprai quando è il momento di eseguire l'aggiornamento? Stai monitorando le metriche corrette? Come stai segnalando su di loro?
toppledwagon l'

@toppledwagon Questi sono tutti punti positivi, ma stavo affrontando il corso 101. Tutto ciò che hai menzionato (coerenza / config mgt, ridimensionamento, monitoraggio / metriche, ecc.) Mi sento venire più tardi. E onestamente, preferirei consigliare un System Pro piuttosto che approfondire quelle aree.
gWaldo,

3
@toppledwagon Una volta arrivato a quel punto, hai bisogno di un amministratore di sistema. O almeno un Sysadmin-as-a-Service.
Michael Hampton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.