Quais são os princípios básicos da execução de um servidor Web?

26

Esta é uma pergunta canônica proposta sobre o início da administração de servidores Web.

Supondo que você seja o SysAd iniciante, seja novo no WebOps ou seja uma equipe pequena com pouco ou nenhum suporte experiente ao SysAd do servidor Web (e não possa pagar agora), o que você deve fazer para configurar e proteger um servidor Web para seus negócios?

gWaldo
fonte
Você menciona duas vezes os benefícios de ter um sysad, o que implica que você está abordando pessoas que não são sysads. Certamente isso coloca suas perguntas e respostas fora do escopo para a falha do servidor, que é para sysads et al? Talvez o Superusuário seja um lar melhor para isso?
user9517 suporta GoFundMonica
8
Minha leitura das perguntas frequentes é interpretada como 'profissionais técnicos fazendo perguntas sobre administração de sistemas'. Eu já vi esse tipo de pergunta muitas vezes de pessoas técnicas (mas não SysAd) (principalmente desenvolvedores), e elas geralmente são respondidas com severidade, em vez de ser realmente ajudadas. Esta pergunta é colocada como candidata a uma resposta canônica de Onde começar, e por que eles deveriam contratar ajuda real do SysAd o mais rápido possível. (E espero que nunca tem que responder a esta questão em particular novamente.
gWaldo

Respostas:

32

Antes de começarmos:

Ter pessoas de qualidade economiza seu dinheiro. Assim como ter um bom advogado (possivelmente NSFW por juramento) ou um contador, ter um SysAd de qualidade provavelmente economizará seu dinheiro, geralmente ajudando-o a evitar erros dispendiosos. Você pode não ter dinheiro para pagar a experiência agora, mas assim que puder, faça esse investimento.

Não existe uma resposta simples e singular para essa pergunta. Se você é quem faz essa pergunta, deve perceber que essa é a essência de um campo no qual os profissionais investem anos de estudo e prática. A pergunta análoga a um desenvolvedor seria "como faço para escrever um aplicativo da Web?"; Certamente, podemos apontar as instruções para instalar o Ruby-on-Rails e um RoR "Hello World". Embora isso 'responda à pergunta', na verdade não ajudaria. Este Q / A é uma tentativa de realmente ajudá-lo.

Você deveria saber:

A administração do servidor da Web é um tópico amplo e está intrinsecamente entrelaçado com muitas disciplinas diferentes. Para fazer isso bem, você precisará de um entendimento fundamental do TCP / IP, do sistema operacional host, do aplicativo WebServer e de entender a execução da pilha de aplicativos.

Esteja preparado para ler. Muito .

Identifique suas necessidades:

Exigências

  • Você está executando um site simples e estático (talvez com alguns efeitos Javascript) ou
  • (mais provável) você está executando um aplicativo que possui uma interface da web?
  • Você tem dados persistentes? (Você precisa de um banco de dados?)
  • Existem credenciais de usuário envolvidas? Existe outro motivo para você precisar da conexão entre o usuário e o site? (SSL)
  • Você está lidando com pagamentos de qualquer tipo? Além de ter requisitos de SSL, há considerações adicionais que você precisará pesquisar (dependendo da região). Isso também varia dependendo do processador de pagamento que você usa.

Identifique sua pilha:

Como você vai escrever e executar isso?

  • Plataforma (Windows, Linux, outro Unix, etc)
  • Requisitos de aplicativo (Ruby / Rails, Python, Perl, PHP, .NET etc.)
  • Base de dados (...)
  • Armazenamento em cache? (Honestamente, não se preocupe com isso agora; lembre-se de que isso resolve alguns problemas e pode criar outros. Esse é um problema de desempenho, e agora você está apenas tentando começar.)

Algumas dessas opções informarão outras. Por exemplo, se você estiver executando um aplicativo .NET, provavelmente desejará usar o MSSQL e o IIS; Se você estiver executando o Ruby on Rails, provavelmente desejará um servidor Linux; etc ...

Conheça o seu produto:

Agora que você decidiu como será a sua pilha, precisará conhecê-la. É aqui que você deve gastar a maior parte do seu tempo. A pesquisa de "Configurar [produto]" ou "[produto] Guia de administração" deve fornecer muitos recursos.

Por exemplo, se você estiver executando o Apache no Ubuntu, leia absolutamente:

Procure documentos, artigos e postagens de blog semelhantes para sua pilha.

Instale o mínimo necessário:

Existe uma vasta gama de módulos para o Apache, mas se você não usar o PHP (por exemplo), não instale o mod-php.

Também deve ser declarado aqui que você deve evitar instalar uma GUI se for um servidor Linux; As GUIs utilizam uma quantidade significativa de recursos do sistema.

Protegendo o site:

  • Garanta permissões mínimas para funcionar. Isso se aplica não apenas ao sistema de arquivos, mas também a serviços e processos
  • Mantenha as portas do servidor desativadas para serviços desnecessários. (Novamente, instale apenas o mínimo.)
  • Restrinja as interfaces de aplicativos ao ambiente interno (se, por exemplo, executando um aplicativo Web no mesmo servidor (como o Rails), restrinja-o a apenas ouvir localhost)

No fechamento:

Este é apenas o começo do que você deve fazer para colocar um site em funcionamento. Isso nem começa a tocar nos problemas de manutenção de servidores ou em como lidar com problemas de dimensionamento (caso seu projeto seja bem-sucedido), nem em nenhum dos outros inúmeros problemas que um SysAd experiente resolverá para você.

gWaldo
fonte
Executar o mínimo necessário é crucial, mas pode não ser óbvio o que / como desinstalar / desativar / proteger. Seria aceitável sugerir executar publicamente uma máquina com barebones, totalmente com firewall, que apenas encaminha / solicita proxies específicos para o servidor de aplicativos em execução em uma rede privada? Seria até possível sugerir uma distribuição / configuração para isso, pois não precisa ser o mesmo ambiente que o aplicativo usa.
Carlos Lima
1
Esse é um bom começo. Uma coisa que você não abordou é a capacidade de repetição. Em algum momento, você crescerá além da configuração atual. Suas instruções para configurar o ambiente são repetíveis? Melhor ainda, eles são automatizados? Você está salvando todos os pacotes de origem para recriar o ambiente ou depende de repositórios externos? Como você saberá quando é hora de atualizar? Você está acompanhando as métricas adequadas? Como você está relatando sobre eles?
Toplaywagon
@toppledwagon Esses são todos os pontos positivos, mas eu estava abordando o curso 101. Tudo o que você mencionou (consistência / configuração, dimensionamento, monitoramento / métricas, etc.) eu sinto que chego mais tarde. E honestamente, eu preferiria adquirir um Systems Pro do que investigar essas áreas.
precisa saber é o seguinte
3
@toppledwagon Depois de chegar a esse ponto, você precisa de um administrador de sistema. Ou pelo menos um Sysadmin como serviço.
Michael Hampton