O que torna um PC capaz de ser um servidor da Web e o que o torna incapaz?

43

Tenho uma pergunta sobre o uso de um computador como servidor da web. Por que um determinado computador pode ser um servidor da web? Quais recursos o tornam capaz de ser um servidor da web? Existe algum caso em que um computador não pode atuar como um servidor da web?

VincentTheonardo
fonte
Uma placa de rede
el.pescado
1
O menor que eu já vi é um cartão SD wifi da Apacer. Possui 4 MB de RAM e roda Linux e pode responder a solicitações da Web e transmitir imagens quando estiver em uma câmera.
user3528438
@ el.pescado A menos que o cliente esteja no mesmo host.
Dmitry Grigoryev

Respostas:

96

Praticamente qualquer computador pode ser usado como servidor [web], desde que possa se conectar a uma rede e executar software de servidor web. Como um servidor da web pode ser bastante simples e existem servidores da web gratuitos e de código aberto, na prática, qualquer dispositivo pode atuar como um servidor da web.

O maior problema é o lado da rede. Para que um sistema atue como servidor, outras máquinas precisam poder acessá-lo. Se for apenas para uso em uma LAN, não há preocupações; no entanto, se for para uso na Internet mais ampla, os dados precisam ser roteados para ele. Isso requer um endereço IP estático associado ao servidor (ou porta encaminhada por meio de um roteador) ou um serviço externo que pode mapear um nome de domínio / subdomínio para um endereço IP dinâmico em mudança.

(FWIW, você pode comprar computadores de US $ 10 que podem atuar como um servidor Web básico.)

Obviamente, enquanto qualquer dispositivo pode atuar como um servidor da Web, a funcionalidade dos sites pode variar bastante, e um dispositivo barato (ou conexão lenta) pode não ser capaz de acompanhar as demandas, dependendo do site específico.

Observo que tudo acima fala sobre servidores da Web - mas o mesmo pode ser dito para praticamente qualquer tipo de servidor.

davidgo
fonte
2
outro problema é que os dispositivos baratos podem não ser tão confiáveis ​​quanto os servidores "reais" porque seus componentes não são certificados para rodar por muito tempo e sua memória não possui meios para impedir a podridão dos bits, como a RAM ECC. Eu vi os meus colegas deixando seus computadores durante vários meses e acabar em BSOD
phuclv
11
Sim e não. Eu executei muitos sistemas 24 horas por dia, 7 dias por semana, sem o ram ecc, e a maioria dos roteadores domésticos / de pequenas empresas - que são servidores wenb e também executam com bastante confiabilidade sem o bsod. Obviamente, os equivalentes BSOD não são tão comuns fora do mundo Windows.
Davidgo 13/03/19
9
Os erros do @davidgo Bugcheck também não são comuns no mundo Windows, a menos que haja falhas no hardware ou nos drivers desonestos. O que causa problemas semelhantes para qualquer sistema operacional. Perdeu a contagem do número de problemas relacionados ao driver de vídeo no Windows e Linux.
Bob
7
@davidgo BSOD é apenas à prova de falhas, não é um problema por si só. É uma última tentativa para evitar corrupção de código / dados furtivos e danos ao hardware. De qualquer forma, evidências anedóticas são totalmente inúteis em coisas como essa - há uma chance muito alta de você nunca encontrar um problema visível com isso, ou você o atribuirá de forma incorreta, e há uma enorme quantidade de fatores ambientais que o tornam mais ou menos provável (temperatura, latitude, ruído EM, qualidade da rede elétrica, carga do sistema, confiabilidade de um determinado componente). Custo e valor da RAM do ECC e tal é uma decisão de negócios.
Luaan 13/03/19
15
Você provavelmente já possui alguns servidores Web em casa: seu roteador / ponto de acesso, sua impressora e todos os outros tipos de dispositivos configuráveis ​​de automação residencial, como medidores inteligentes, câmeras IP, telefones VoIP, termostatos programáveis, sua TV. Os menores dão uma idéia de quão pouco hardware é necessário. Outra observação: a rede não é um requisito estrito para um servidor da Web - pode fazer todo o sentido ter um servidor que só serve páginas para usuários na mesma máquina .
Peter - Restabelece Monica
25

Não é nada complicado. Depende apenas da sua definição de "servidor web".

É inteiramente possível executar um "servidor web" em dispositivos tão simples quanto um microcontrolador.

Vamos considerar o que o servidor Web mínimo necessário precisaria fazer. Seria necessário produzir algum texto - nem necessariamente em HTML para um cliente. Seria necessário saber que uma solicitação é uma solicitação e responder adequadamente. Você nem precisaria de conectividade de rede se o seu "cliente" fosse local. Seria um servidor web totalmente inútil.

Seria o servidor da Web equivalente a um desses .

insira a descrição da imagem aqui

Adicionar conectividade de rede para um cliente (Ethernet é bom, mas não há motivo técnico para você não se conectar a um servidor Web rodando em wifi) e ser capaz de rotear a partir de um cliente seria melhor.

Um ESP8266 de US $ 5 - um microcontrolador barato e mínimo com wifi pode lidar com muito disso, e talvez até com conteúdo dinâmico básico

Eu uso algo assim para o compartilhamento rápido de arquivos usando Python. Ainda é totalmente possível escrever algo assim em um microcontrolador ou até mesmo executá-lo em um telefone.

O conteúdo estático é chato. Adicione linguagens dinâmicas e você precisará começar a pensar em sistemas de pesos mais pesados. Coisas que rodam Linux ou Windows são boas.

Neste ponto, você está falando de roteadores de consumo, pequenos aplicativos usando páginas da Web na interface do usuário e tudo mais.

Um servidor da web nem é um problema complexo e pode ser escrito em cinco linhas de bash e executado no Linux. Agora desgraça ... Mas qualquer sistema que possa executar desgraça pode executar um servidor web.

Uma boa configuração de servidor da Web capaz de lidar com uma determinada carga é um pouco mais complicada.

Journeyman Geek
fonte
11
É até possível soldar alguns chips TTL e executar um servidor da web. Veja esta página para obter detalhes
Josef
7
Isso é aproximadamente o mesmo que dizer "É ainda possível bolt juntos um pouco de aço e construir a torre Eiffel isso é tão legal.
Journeyman Geek
1
Divertidamente, seu servidor da web 'inútil' é exatamente como alguma ajuda costumava funcionar para determinados produtos :) - Não me lembro de exemplos, mas houve pelo menos um caso em que a ajuda estava sendo executada em um servidor (não apenas uma página html renderizada por um navegador) e os problemas subseqüentes apresentados (minhas páginas de ajuda não carregam quando meu firewall está ativado!).
djsmiley2k - Cow
5
@ djsmiley2k A ajuda do Eclipse usa um servidor da web local. Porque Java.
user253751
2
Um raspi é mais potente do que provavelmente 99,9% dos servidores comerciais da web estavam no ano de 2000. E as pessoas já estavam fazendo coisas altamente dinâmicas na época.
rackandboneman
11

Mínimo

Literalmente, qualquer computador pode se tornar um servidor da Web se tiver o seguinte:

  • Uma conexão de rede
  • Um aplicativo de servidor web muito simples, como este .

Mas seria suficiente? Agora, essa é a pergunta complicada.

Servindo uma Intranet

Para que um computador se torne um servidor da web que serve páginas da web modernas ou aplicativos da web para toda a comunidade (por exemplo, escola, empresa, museu):

  • Hardware capaz de responder a vários computadores ao mesmo tempo. Talvez um computador antigo com Linux ou Windows XP funcionasse.
  • Uma conexão de rede de alta velocidade com largura de banda suficiente, por exemplo, 1 Gbit / s Ethernet ou 802.11g Wi-Fi.
  • Um bom aplicativo de servidor web, como IIS , Apache , Nginx ou outros . (Surpreendentemente, esses três são gratuitos.)

Mas isso era apenas o mínimo para pequenas operações. Quando sua operação aumenta (ou seja, você obtém um tráfego mais intenso e atende a aplicativos da Web complexos em vez de páginas estáticas), suas necessidades aumentam. Você precisará:

  • Hardware de classe de servidor, como servidores montados em rack com várias CPUs Xeon e centenas de gigabytes de RAM
  • Redes de fibra óptica

Servindo o mundo lá fora

Para explorar a infraestrutura da Internet para servir o mundo inteiro, você precisará de:

Sem eles, tudo o que você tem é um potencial servidor web.


fonte
._. Eu considero um raspi um mínimo e esquisito como o diabo. Também vale lembrar que muitas coisas usam uma página da web como interface do usuário. Seu roteador possui, mas não é um servidor web, por exemplo.
Journeyman Geek
9
Não concorde com esses comentários - um roteador é um servidor da web (além de outras coisas). Pela lógica dos comentários, não existe um servidor da Web porque qualquer sistema desse tipo tem outra funcionalidade.
davidgo 13/03/19
5
A CPU pesada e outras necessidades de recursos têm muito mais a ver com aplicativos da Web e linguagens dinâmicas de geração de HTML - por exemplo, PHP, uma linguagem comum, mas (especialmente se configurada do jeito que costuma ser) hilariamente ineficiente - do que com a web. Um 80486 de 33 MHz com 16 MB de RAM pode ser criado para lidar com uma carga pesada de páginas estáticas, se alguém se incomodar.
rackandboneman
@rackandboneman Muito bem. Esclarecerei o significado de "se sua operação aumentar" para resolver sua preocupação.
@rackandboneman Não apenas 'poderia ser' feito para lidar, mas 'muitas vezes era'.
GTC
8

Perspectiva de programação / software:

Um programa capaz de ouvir a porta 80 no adaptador de rede. Isso é executado no sistema operacional que você possui. E pode processar os pedidos de acordo com as definições HTTP.

Um programa que ouve qualquer porta é acessível a partir de qualquer computador na mesma rede. Idealmente, deve ser uma porta padrão conhecida (80 e 8080 para servidores HTML; escolha além de 1024 para aplicativos personalizados). É até prática comum executar o desenvolvimento de um programa alcançável em rede no mesmo computador em que você está desenvolvendo.

Se você puder acessá-lo via host local, poderá alcançá-lo de qualquer lugar na mesma rede e de qualquer outro lugar que exista um caminho para esta máquina e seu adaptador de rede.

Advertência: Muitos ambientes de desenvolvimento tudo-em-um em instalações padrão limitam o acesso ao Localhost. Você não deseja que suas ferramentas administrativas sejam acessíveis pela Internet, afinal.

Hardware:

O hardware começa em algum lugar no "computador de 10 anos que executa XP ou Linux" e termina em algum lugar em torno de "128 núcleos, com 2 TiB de RAM e 256 TiB de SSDs em um ataque", com o banco de dados executando também em um servidor diferente . Os aplicativos da Web tendem a ser agradáveis ​​e paralelamente agradáveis, para que você possa ter que aumentar ainda mais os clusters desses servidores. E Geocast. E design distribuído. E muitas outras coisas. Depende inteiramente de qual escala estamos falando.

O servidor web mais simples que você provavelmente encontrará no roteador que você está usando, btw. Todos eles executam um servidor Web para fins de configuração, hospedado em um Linux (que está executando todo o trabalho DHCP e NAT).

Rede:

Ter um caminho de outras redes - incluindo qualquer lugar na Internet - agora que é uma história totalmente diferente e uma parte ainda mais difícil do que a programação da aplicação. Entre o NAT do seu roteador e o NAT da classe de operadora, essas coisas se tornaram muito difíceis.

  • Você sempre tem a opção de comprar um endereço IP fixo do seu ISP, mesmo como pessoa particular. Como indica, isso provavelmente custará extra. Uma entrada de DNS seria uma questão de qualidade de vida.
  • Antes do NAT de grau de operadora , você podia trabalhar com seu endereço IP dinâmico e um serviço DynDNS. Mas com o NAT de classe de operadora, agora você tem outro NAT incontrolável a superar - talvez. Depende do seu provedor.
  • A solução definitiva para atravessar um tipo de NAT, qualquer número de camadas é a perfuração de TCP / IP . Todas as soluções VPN o utilizam. Assim como o Skype, o TeamViewer e todos os outros. O problema é: Para fazer a perfuração de TCP / IP, você precisa de um servidor já acessível na Internet.
  • Se se trata de pequenas escalas (1 a 10 pontos de extremidade), geralmente, a maneira mais simples é fazer uma conexão VPN na rede que possui os servidores. A maioria dos roteadores tem suporte para isso.
Christopher
fonte
2
"Aquele computador de 10 anos que roda Linux". Considerando a idade da web, podemos retroceder com segurança. Pessoalmente, lembro-me de rodar um servidor da Web em um Intel 80386 original, há cerca de 20 anos.
MSalters
@MSalters Você pode ir muito mais baixo do que isso. Não consigo encontrá-lo hoje, mas há alguns anos encontrei um servidor de shell script / CGI da web que poderia ser executado em hardware tão baixo quanto um moto 68k. Aparentemente, era relativamente popular entre 15 e 20 anos atrás no espaço incorporado.
Dan Neely
3

Se você tiver em mãos qualquer tipo de computador (PC, laptop, smartphone, raspberryPI ...) com o Python instalado, digite:

$ python -m SimpleHTTPServer

Ou se você possui o Node.js instalado:

$ npm install http-server -g
$ http-server

Parabéns, você tem um servidor web!

mate
fonte