J'ai une question concernant l'utilisation d'un ordinateur comme serveur web. Pourquoi un certain ordinateur peut-il être un serveur web ? Quelles sont les caractéristiques qui lui permettent d'être un serveur web ? Existe-t-il un cas où un ordinateur n'est pas en mesure d'agir en tant que serveur web ?
Réponses
Trop de publicités?Pratiquement n'importe quel ordinateur peut être utilisé comme serveur [web], à condition qu'il puisse se connecter à un réseau et qu'il puisse exécuter un logiciel de serveur web. Étant donné qu'un serveur web peut être assez simple et qu'il existe des serveurs web libres et gratuits, en pratique, n'importe quel appareil peut faire office de serveur web.
Le plus gros problème se situe au niveau de la mise en réseau. Pour qu'un système joue le rôle de serveur, d'autres machines doivent pouvoir y accéder. S'il est utilisé uniquement dans un réseau local, il n'y a pas de problème. En revanche, s'il est utilisé à partir de l'internet au sens large, les données doivent être acheminées jusqu'à lui. Cela nécessite soit une adresse IP statique associée au serveur (ou un port transféré via un routeur), soit un service externe qui peut mapper un nom de domaine/sous-domaine à une adresse IP dynamique changeante.
(A titre d'information, vous pouvez acheter 10 ordinateurs qui peut faire office de serveur web de base).
Bien entendu, si n'importe quel appareil peut faire office de serveur web, la fonctionnalité des sites web peut varier considérablement et un appareil bon marché (ou une connexion lente) peut ne pas être en mesure de répondre à la demande, en fonction du site web concerné.
Je note que tout ce qui précède concerne les serveurs web - mais on peut en dire autant de pratiquement tous les types de serveurs.
Ce n'est pas du tout délicat. Cela dépend simplement de votre définition de "serveur web".
Il est tout à fait possible de faire fonctionner un "serveur web" sur des appareils aussi simples qu'un microcontrôleur.
Examinons ce qu'un serveur web minimal devrait faire. Il doit produire du texte - pas nécessairement en HTML - à destination d'un client. Il doit savoir qu'une requête est une requête et y répondre de manière appropriée. Vous n'auriez même pas besoin d'une connectivité réseau si votre "client" était local. Il s'agirait d'un serveur web totalement inutile.
Ce serait l'équivalent pour le serveur web de l'un d'entre eux .
L'ajout d'une connectivité réseau pour un client (Ethernet, c'est bien, mais il n'y a aucune raison technique de ne pas se connecter à un serveur web fonctionnant sur wifi) et la possibilité de router à partir d'un client seraient mieux.
A $5 ESP8266 - un microcontrôleur bon marché et minimal avec wifi peut gérer la plupart de ces fonctions, et peut-être même un contenu dynamique de base
J'utilise quelque chose comme ça pour partager rapidement des fichiers en utilisant Python. Il est tout à fait possible d'écrire quelque chose comme cela 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 commencer à penser à des systèmes plus lourds. Les systèmes fonctionnant sous Linux ou Windows sont intéressants.
À ce stade, il s'agit de routeurs grand public, de petites applications utilisant des pages web à 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 fonctionnent sous Linux. Maintenant, il est possible de destin ... Mais tout système capable de faire tourner doom peut faire tourner un serveur web.
A bon La mise en place d'un serveur web capable de gérer une charge donnée est un peu plus délicate.
Minimum vital
Littéralement, tous Un ordinateur peut devenir un serveur web s'il dispose des éléments suivants :
- Une connexion réseau
- Une application serveur web très simple, comme ceci .
Mais cela suffira-t-il ? C'est là la question délicate.
Servir un intranet
Pour qu'un ordinateur devienne un serveur web qui sert des pages web modernes ou des applications web à toute une communauté (par exemple, une école, une entreprise, un musée) :
- Matériel capable de répondre à plusieurs ordinateurs à la fois. Un vieil ordinateur fonctionnant sous Linux ou Windows XP pourrait faire l'affaire.
- Une connexion réseau à haut débit avec une largeur de bande suffisante, par exemple 1 Gbit/sec Ethernet ou 802.11g Wi-Fi.
- Une bonne application de serveur web, comme IIS , Apache , Nginx ou autres . (Il est surprenant de constater que ces trois sites sont gratuits).
Mais ce n'était qu'un minimum pour les petites opérations. Lorsque votre activité prend de l'ampleur (c'est-à-dire lorsque vous avez un trafic plus important et que vous proposez des applications web complexes au lieu de pages statiques), vos besoins augmentent. Vous finirez par avoir besoin de :
- Matériel de classe serveur, comme les serveurs montés en rack avec plusieurs unités centrales Xeon et des centaines de gigaoctets de mémoire vive.
- Réseaux de fibres optiques
Au service du monde extérieur
Pour exploiter l'infrastructure de l'internet afin de servir le monde entier, vous aurez besoin :
- Une adresse IP publique
- Un serveur DNS public
- Certificats numériques délivrés par autorités de certification réputées pour établir une connexion sécurisée
Sans cela, vous n'avez qu'un potentiel serveur web.
Programmation/projet de logiciel :
Un programme capable d'écouter le port 80 de la carte réseau. Qui fonctionne sous le système d'exploitation dont vous disposez. Et qui peut traiter les demandes conformément aux 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 ; choisir au-delà de 1024 pour les applications personnalisées). Il est même courant d'exécuter le développement d'un programme accessible depuis le 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 quel endroit du même réseau, et de n'importe quel autre endroit il y a un chemin vers cette machine et son adaptateur réseau.
Mise en garde : de nombreux environnements de développement tout-en-un limitent l'accès à Localhost dans leurs installations par défaut. Après tout, vous ne voulez pas que vos outils d'administration soient accessibles depuis l'internet.
Matériel :
Le matériel commence quelque part à "cet ordinateur vieux de 10 ans qui fonctionne sous XP ou Linux" et se termine quelque part autour de "128 cœurs, avec 2 TiB de RAM et 256 TiB de SSD dans un raid", la base de données fonctionnant également sur un autre serveur. Les applications web ont tendance à être agréablement parallélisables, de sorte que vous pouvez/devez les augmenter encore plus avec des grappes de ces serveurs. Et Geocast. Et la conception distribuée. Et bien d'autres choses encore. Tout dépend de l'échelle dont on parle.
Le serveur web le plus simple que vous puissiez rencontrer est le routeur que vous utilisez. Ils utilisent tous un serveur Web à des fins de configuration, hébergé sur un serveur Linux (qui fait tout le travail DHCP et NAT).
Mise en réseau :
Disposer d'un chemin d'accès à partir d'autres réseaux - y compris n'importe où sur l'internet - maintenant que est une histoire totalement différente et une partie encore plus difficile que la programmation de l'application. Entre le NAT de votre routeur et le NAT de l'opérateur, ce travail est devenu très difficile.
- Vous avez toujours la possibilité d'acheter une adresse IP fixe auprès de votre FAI, même en tant que particulier. Comme il est indiqué, cela coûtera probablement plus cher. Une entrée DNS serait une question de qualité de vie.
- Retour avant NAT de qualité opérateur Vous pouvez utiliser votre adresse IP dynamique et un service DynDNS. Mais avec le NAT de qualité 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, quel que soit le nombre de couches, est la suivante Perforation TCP/IP . Toutes les solutions VPN l'utilisent. Tout comme Skype, TeamViewer et tous les autres. Le problème est le suivant : pour faire du hole punching TCP/IP, vous avez besoin d'un serveur déjà accessible sur l'internet.
- S'il s'agit de petites échelles (1 à 10 points d'extrémité), la solution la plus simple consiste généralement à établir une connexion VPN avec le réseau où se trouvent les serveurs. La plupart des routeurs le prennent en charge.