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

43

Eu tenho uma pergunta sobre como usar um computador como um servidor da web. Por que um determinado computador pode ser um servidor da web? Quais recursos permitem que ele seja um servidor da web? Existe algum caso em que um computador é incapaz de agir como um servidor web?

    
por VincentTheonardo 13.03.2017 / 05:05

5 respostas

97

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

O maior problema é o lado da rede. Para que um sistema funcione como um servidor, outras máquinas precisam ser capazes de acessá-lo. Se é apenas para uso em uma LAN, não há preocupações; no entanto, se for para uso da Internet mais ampla, os dados precisam ser roteados para ela. 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 $ 10 computadores , que podem funcionar como um servidor web básico.)

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

Eu notei que tudo acima fala sobre servidores web - mas o mesmo pode ser dito para praticamente qualquer tipo de servidor.

    
por 13.03.2017 / 06:06
25

Não é nada complicado. Apenas depende da sua definição de "servidor web".

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

Vamos considerar o que o servidor da Web mínimo precisaria fazer. Ele precisaria produzir algum texto - não necessariamente mesmo em HTML para um cliente. Ele precisaria 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 equivalente a um desses .

Adicionandoconectividadederedeparaumcliente(Ethernetélegal,masnãohárazãotécnicaparavocênãoconseguirseconectaraumservidorwebrodandoemwifi)esercapazderoteardeumclienteseriamelhor.

A$5 ESP8266 - um microcontrolador barato e mínimo com wi-fi aguenta boa parte isso, e talvez até conteúdo dinâmico básico

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

Conteúdo estático é chato. Adicione linguagens dinâmicas e você precisa começar a pensar em sistemas de maior peso. Coisas que rodam Linux ou Windows são legais.

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

Um servidor web não é um problema complexo e pode ser escrito em cinco linhas do bash e executado no Linux. Agora doom ... Mas qualquer sistema que possa rodar o doom pode rodar um servidor web.

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

    
por 13.03.2017 / 06:25
11

Mínimo aparente

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

  • Uma conexão de rede
  • Um aplicativo de servidor da Web muito simples, assim .

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

Servindo em uma intranet

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

  • Hardware capaz de responder 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, digamos 1 Gbit / s Ethernet ou 802.11g Wi-Fi.
  • Um bom aplicativo de servidor da web, como IIS , Apache , Nginx ou outros . (Surpreendentemente, esses três são gratuitos).

Mas isso foi apenas um mínimo para pequenas operações. Quando sua operação fica maior (ou seja, você recebe um tráfego mais pesado e oferece aplicativos da Web complexos em vez de páginas estáticas), suas necessidades aumentam. Você eventualmente precisará:

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

Servindo o mundo fora

Para explorar a infraestrutura da Internet para atender todo o mundo, você precisará:

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

    
por 13.03.2017 / 07:40
8

Perspectiva de programação / software:

Um programa que pode escutar a porta 80 no adaptador de rede. Isso é executado no sistema operacional que você tem. E pode processar as solicitações de acordo com as definições de HTTP.

Um programa que escuta qualquer porta é acessível de todos os computadores 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). É prática comum executar o desenvolvimento de um programa acessível pela rede no mesmo computador em que você está desenvolvendo.

Se você puder acessá-lo via host local, poderá acessá-lo de qualquer lugar dentro da mesma rede e, em qualquer outro lugar, há um caminho para esta máquina e seu adaptador de rede.

Ressalva: Muitos ambientes de desenvolvimento all-in-one em instalações padrão limitam o acesso ao Localhost. Você não quer que suas ferramentas de administração sejam acessadas pela Internet, afinal.

Hardware:

O hardware começa em algum lugar "naquele computador de 10 anos que roda o XP ou Linux" e termina em algum lugar "128 core, com 2 TiB de RAM e 256 TiB de SSDs em um ataque", com o DB sendo executado em um servidor diferente também. Aplicações web tendem a ser paralelamente agradáveis, então você pode / ter que aumentar ainda mais com clusters desses servidores. E Geocast. E design distribuído. E muitas outras coisas. Depende inteiramente de que escala estamos falando.

O servidor web mais simples que você provavelmente encontrará é o roteador que você está usando, a propósito. Todos eles executam um servidor Web para propósitos de configuração, hospedados em um Linux (que está fazendo todo o trabalho de DHCP e NAT).

Rede:

Tendo um caminho de outras redes - incluindo em qualquer lugar na Internet - agora essa é uma história totalmente diferente e uma parte ainda mais difícil do que programar o aplicativo. Entre o NAT do seu Roteador e NAT de operadora, isso ficou muito difícil.

  • Você sempre tem a opção de comprar um endereço IP fixo do seu provedor, mesmo como pessoa particular. Como indica, isso provavelmente custará extra. Uma entrada de DNS seria uma coisa de qualidade de vida.
  • Voltar para CARrier Grade NAT , você pode trabalhar com seu endereço IP dinâmico e um serviço DynDNS. Mas com o NAT de operadora, você agora tem outro NAT incontrolável para superar - talvez. Depende do seu provedor.
  • A solução definitiva para percorrer um tipo de NAT, qualquer número de camadas é perfuração TCP / IP . Todas as soluções VPN usam isso. Assim como o Skype, TeamViewer e todos os outros. O problema é: Para fazer o furo TCP / IP, você precisa de um servidor já acessível na Internet.
  • Se for sobre pequenas escalas (1 a 10 pontos de extremidade), geralmente, a maneira mais simples é apenas fazer uma conexão VPN na rede que possui os servidores. A maioria dos roteadores tem suporte para isso.
por 13.03.2017 / 12:46
3

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

$ python -m SimpleHTTPServer

Ou se você tiver o Node.js instalado:

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

Parabéns, você tem um servidor web!

    
por 13.03.2017 / 17:29