我对使用计算机作为网络服务器有疑问。为什么某台计算机可以作为Web服务器?哪些功能使其可以成为Web服务器?电脑无法充当网络服务器吗?
我对使用计算机作为网络服务器有疑问。为什么某台计算机可以作为Web服务器?哪些功能使其可以成为Web服务器?电脑无法充当网络服务器吗?
Answers:
只要可以连接到网络并且可以运行Web服务器软件,几乎任何计算机都可以用作[Web]服务器。由于Web服务器非常简单,并且有免费和开源的Web服务器,实际上,任何设备都可以充当Web服务器。
更大的问题是网络方面。为了使系统充当服务器,其他计算机需要能够访问它。如果仅用于局域网,则无需担心。但是,如果要用于更广泛的Internet,则需要将数据路由到它。这需要与服务器关联的静态IP地址(或通过路由器转发的端口),或者需要将域名/子域映射到变化的动态IP地址的外部服务。
(FWIW,您可以购买10美元的计算机,可以用作基本的Web服务器。)
当然,尽管任何设备都可以充当Web服务器,但是网站的功能可能会千差万别,便宜的设备(或连接速度慢)可能无法满足特定网站的要求。
我注意到上面的所有内容都谈到了Web服务器-但是几乎对于任何类型的服务器都可以这么说。
一点也不难。它仅取决于您对“ Web服务器”的定义。
完全有可能在像微控制器一样简单的设备上运行“ Web服务器”。
让我们考虑一下最小的最小Web服务器将需要做什么。它需要输出一些文本-甚至不必以HTML格式输出到客户端。它需要知道一个请求是一个请求,并适当地响应。如果您的“客户端”是本地的,您甚至不需要网络连接。这将是一个毫无意义的Web服务器。
相当于其中之一的Web服务器。
为客户端添加网络连接(以太网是不错的选择,但是没有技术原因,您无法连接到在wifi上运行的Web服务器),并且能够从客户端进行路由会更好。
售价5美元的ESP8266 –具有wifi的廉价,最小限度的微控制器可以处理其中的大部分内容,甚至可以处理基本的动态内容
我使用类似的东西来使用Python快速共享文件。仍然完全有可能在微控制器上编写这样的东西,甚至在电话上运行它。
静态内容很无聊。添加动态语言,您需要开始考虑较重的重量系统。运行Linux或Windows的东西很好。
至此,您正在谈论消费类路由器,在UI上使用网页的小型应用程序等等。
Web服务器甚至不是一个复杂的问题,可以用五行bash编写并在Linux上运行。现在,厄运 ...但是任何可以运行厄运的系统都可以运行Web服务器。
一个良好的网络服务器建立能够处理给定负载是有点棘手。
从字面上看,任何具有以下条件的计算机都可以成为Web服务器:
但这足够了吗?现在,这是一个棘手的问题。
为了使计算机成为可为整个社区(例如学校,公司,博物馆)提供现代网页或Web应用程序的Web服务器:
但这只是小规模操作的最低要求。当您的业务规模变大(即,您的流量增加并提供复杂的Web应用程序而不是静态页面)时,您的需求就会增长。您最终将需要:
要利用Internet基础结构为全世界服务,您将需要:
没有这些,您所拥有的只是一台潜在的 Web服务器。
编程/软件角度:
一个能够侦听网络适配器上的端口80的程序。可以在您拥有的操作系统上运行。并且可以根据HTTP定义处理请求。
可以从同一网络中的每台计算机访问侦听任何端口的程序。理想情况下,它应该是已知的标准端口(对于HTML服务器为80和8080;对于自定义应用程序,请选择1024以上的端口)。甚至很常见的做法是,在要进行开发的同一台计算机上运行网络可达程序的开发。
如果可以通过本地主机访问它,则可以从同一网络中的任何位置访问它,并且可以从其他任何地方访问此计算机及其网络适配器。
注意:默认安装中的许多多合一开发环境都限制了对Localhost的访问。毕竟,您不希望您的管理工具可从Internet访问。
硬件:
硬件始于“运行XP或Linux的已有10年历史的计算机”,并终止于“ 128核,其中有2个TiB RAM和256 TiB的SSD突袭”,并且数据库也在不同的服务器上运行。Web应用程序往往具有可并行性,因此您可以/必须通过这些服务器的群集来进一步提高它的性能。和地理广播。并进行分布式设计。还有很多其他的东西。这完全取决于我们所讨论的规模。
您可能会遇到的最简单的Web服务器是您使用的路由器,顺便说一句。他们全都运行Web服务器以进行配置,并托管在Linux上(这完成所有DHCP和NAT工作)。
联网:
现在有了与其他网络(包括Internet上的任何地方)之间的路径,这是一个完全不同的故事,而且比对应用程序进行编程更难。在路由器的NAT和运营商级NAT之间,这些东西变得非常难。