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?
À 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.
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 .
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.
Littéralement, l’ordinateur n’importe quel peut devenir un serveur Web s’il présente les caractéristiques suivantes:
Mais cela suffirait-il? Maintenant, c'est la question délicate.
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):
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:
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.
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.
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!