web-dev-qa-db-fra.com

Qu'est-ce qui rend un PC capable d'être un serveur Web et qu'est-ce qui le rend incapable?

J'ai une question sur l'utilisation d'un ordinateur en tant que serveur Web. Pourquoi un ordinateur donné peut-il être un serveur Web? Quelles fonctionnalités permettent de devenir un serveur Web? Existe-t-il des cas dans lesquels un ordinateur est incapable de jouer le rôle de serveur Web?

43
VincentTheonardo

À peu près n'importe quel ordinateur peut être utilisé comme serveur [Web], à condition qu'il puisse se connecter à un réseau et puisse exécuter un logiciel de serveur Web. Comme un serveur Web peut être assez simple et qu'il existe des serveurs Web gratuits et à source ouverte, en pratique, tout appareil peut agir en tant que serveur Web.

Le plus gros problème est le côté réseau. Pour qu'un système agisse en tant que serveur, d'autres machines doivent pouvoir y accéder. Si c'est juste pour une utilisation dans un réseau local, il n'y a pas de souci; Toutefois, si vous utilisez Internet plus large, les données doivent y être acheminées. Cela nécessite soit une adresse IP statique associée au serveur (ou un port transféré via un routeur), soit un service externe capable de mapper un nom de domaine/sous-domaine sur une adresse IP dynamique en évolution.

(FWIW, vous pouvez acheter 10 $ d’ordinateurs pouvant servir de serveur Web de base.)

Bien entendu, bien que tout appareil puisse faire office de serveur Web, les fonctionnalités des sites Web peuvent varier énormément et un appareil peu coûteux (ou une connexion lente) peut ne pas être en mesure de répondre à la demande, en fonction du site Web concerné.

Je remarque que tout ce qui précède parle de serveurs Web - mais on peut en dire autant de tout type de serveur.

97
davidgo

Ce n'est pas délicat du tout. Cela dépend simplement de votre définition de "serveur Web".

Il est tout à fait possible d’exécuter un "serveur Web" sur des périphériques aussi simples qu’un microcontrôleur.

Voyons ce que le serveur Web minimal devrait faire. Il devrait générer du texte, même pas nécessairement en HTML, sur un client. Il aurait besoin de savoir qu'une demande est une demande et de répondre de manière appropriée. Vous n'auriez même pas besoin de connectivité réseau si votre "client" était local. Ce serait un serveur Web totalement inutile.

Ce serait l'équivalent serveur de un de ceux-ci .

enter image description here

Ajout de la connectivité réseau pour un client (Ethernet, c’est bien, mais il n’ya aucune raison technique de ne pas pouvoir se connecter à un serveur Web fonctionnant en wifi) et il serait préférable de pouvoir router depuis un client.

A $ 5 ESP8266 _ - un microcontrôleur minimal et bon marché doté de la technologie wifi peut gérer une grande partie de cette quantité, voire même du contenu dynamique de base

J'utilise quelque chose comme ça pour le partage rapide de fichiers en utilisant Python. Il est toujours tout à fait possible d'écrire quelque chose comme ça sur un microcontrôleur ou même de l'exécuter sur un téléphone.

Le contenu statique est ennuyeux. Ajoutez des langages dynamiques et vous devrez penser à des systèmes plus lourds. Les choses qui fonctionnent sous Linux ou Windows sont Nice.

À ce stade, vous parlez de routeurs grand public, de petites applications utilisant des pages Web sur l'interface utilisateur, etc.

Un serveur Web n'est même pas un problème complexe et peut être écrit en cinq lignes de bash et s'exécuter sous Linux. Now Doom ... Mais tout système pouvant exécuter Doom peut exécuter un serveur Web.

Une configuration de serveur Web good web capable de gérer une charge donnée est un peu plus délicate.

25
Journeyman Geek

Le strict minimum

Littéralement, l’ordinateur n’importe quel peut devenir un serveur Web s’il présente les caractéristiques suivantes:

  • Une connexion réseau
  • Une application de serveur Web très simple, comme celle-ci .

Mais cela suffirait-il? Maintenant, c'est la question délicate.

Servir un intranet

Pour qu'un ordinateur devienne un serveur Web servant des pages Web modernes ou des applications Web à une communauté entière (p. Ex. École, entreprise, musée):

  • Matériel capable de répondre à plusieurs ordinateurs à la fois. Peut-être qu'un ancien ordinateur sous Linux ou Windows XP ferait l'affaire.
  • Une connexion réseau haut débit avec une bande passante suffisante, par exemple Ethernet 1 Gbit/s ou Wi-Fi 802.11g.
  • Une bonne application de serveur Web, telle que IIS , Apache , Nginx ou autres . (Étonnamment, ces trois sont gratuits.)

Mais ce n'était qu'un minimum pour les petites opérations. Lorsque votre activité devient plus importante (c'est-à-dire que vous obtenez un trafic plus important et que vous utilisez des applications Web complexes au lieu de pages statiques), vos besoins augmentent. Vous aurez éventuellement besoin de:

  • Matériel de type serveur, tel que les serveurs montés en rack avec plusieurs processeurs Xeon et des centaines de gigaoctets de RAM
  • Réseaux de fibres optiques

Servir le monde extérieur

Pour exploiter l'infrastructure Internet au service du monde entier, vous aurez besoin de:

Sans cela, tout ce que vous avez est un serveur Web potentiel.

11
user477799

Perspective de programmation/logiciel:

Un programme capable d'écouter le port 80 sur la carte réseau. Cela fonctionne sur le système d'exploitation que vous avez. Et peut traiter les demandes en fonction des définitions HTTP.

Un programme qui écoute n'importe quel port est accessible à partir de tous les ordinateurs du même réseau. Idéalement, il devrait s'agir d'un port standard connu (80 et 8080 pour les serveurs HTML; choisissez au-delà de 1024 pour les applications personnalisées). Il est même pratique courante de développer un programme accessible en réseau sur le même ordinateur que celui sur lequel vous effectuez le développement.

Si vous pouvez l'atteindre via localhost, vous pouvez l'atteindre de n'importe où sur le même réseau et de n'importe où ailleurs, il y a un chemin d'accès à cette machine et à sa carte réseau.

Mise en garde: De nombreux environnements de développement tout-en-un dans les installations par défaut limitent l'accès à Localhost. Vous ne voulez pas que vos outils d'administration soient accessibles depuis Internet, après tout.

Matériel:

Le matériel commence quelque part sur "cet ordinateur vieux de 10 ans qui exécute XP ou Linux" et se termine quelque part autour de "128 cœurs, avec 2 Tio RAM et 256 Tio de disques SSD dans une raid ", avec la base de données s'exécutant également sur un autre serveur. Les applications Web ont tendance à être agréablement parallélisables, de sorte que vous pouvez/devez encore plus utiliser les grappes de ces serveurs. Et géocast. Et design distribué. Et beaucoup d'autres choses. Cela dépend entièrement de quelle échelle nous parlons.

Le serveur Web le plus simple que vous rencontrerez probablement est le routeur que vous utilisez, au fait. Ils exécutent tous un serveur Web à des fins de configuration, hébergé sur un serveur Linux (qui exécute tout le travail de DHCP et NAT.).

Mise en réseau:

Avoir un chemin depuis d’autres réseaux - y compris n’importe où sur Internet - maintenant que est une histoire totalement différente et une partie encore plus difficile que de programmer l’application. Entre le NAT de votre routeur et le NAT de classe opérateur, cette tâche est devenue très difficile.

  • Vous avez toujours la possibilité d'acheter une adresse IP fixe auprès de votre fournisseur d'accès, même en tant que personne privée. Comme il est indiqué, cela coûtera probablement plus cher. Une entrée DNS serait une question de qualité de vie.
  • De retour avant Carrier Grade NAT , vous pouvez utiliser votre adresse IP dynamique et un service DynDNS. Mais avec le NAT de classe opérateur, vous avez maintenant un autre NAT incontrôlable à surmonter - peut-être. Cela dépend de votre fournisseur.
  • La solution ultime pour traverser une sorte de NAT, n’importe quel nombre de couches est perforation de trous TCP/IP . Toutes les solutions VPN l'utilisent. Tout comme Skype, TeamViewer et tous les autres. Le problème est le suivant: pour pouvoir effectuer la perforation TCP/IP, vous avez besoin d'un serveur déjà accessible sur Internet.
  • S'il s'agit de petites échelles (1 à 10 points finaux), le moyen le plus simple consiste généralement à établir une connexion VPN sur le réseau comportant les serveurs. La plupart des routeurs ont un support pour cela.
8
Christopher

Si vous avez sous la main tout type d'ordinateur (PC, ordinateur portable, smartphone, raspberryPI ...) avec Python installé, tapez simplement:

$ python -m SimpleHTTPServer

Ou si vous avez installé Node.js:

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

Félicitation, vous avez un serveur web!

3
matt