持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
往期推荐
# 走进 node.js
# 走进 node.js - 起步
# 走进 node.js - 模块
# 走进node.js - NPM
# 走进node.js - package.json
# 走进node.js - 文件
# 走进node.js - 服务端开发
走进node.js - 服务端开发2 学习目标
- Web 服务器
- IP、DNS、端口号的作用
- 命令行的使用
搭建 Web 服务器
- 服务器(提供服务)指的就是一台安装特定的软件的公共计算机,用于专门用于提供特定的服务。
- 按照服务类型的不同,又划分为:Web 服务器、数据库服务器、文件服务器等等。
- 客户端(使用服务)指的是在一次服务过程中使用这个服务的设备(网络端点)。
- 目前咱们最常见的客户端就是浏览器
我们手头上的这些网页,如果想要成为一个网站,首先要完成的第一件事就是有一台公共的 Web 服务器,把这一系列的页面放到这台 Web 服务器上,让用户可以通过服务器的地址访问到这些网页。
为什么不放在我们自己电脑上呢?
那么,哪里有这样的服务器呢?
我们手头上的电脑都可以是一台服务器,因为服务器是一个相对的概念,只要能提供服务就可以是一个服务器(提供服务的时候就是服务端,使用服务的时候就是客户端)。
既然服务器就是安装特定的软件的计算机,那么要让自己的成为 Web 服务器就是要安装一个 Web 服务器软件。
Web 服务器软件
- Nginx ········································ 反向代理
- Apache ····································· PHP
- IIS ·············································· ASP.NET
- Tomcat ····································· Java
安装 Web 服务器软件
这里我们选择一个比较常用的 Web 服务器软件:Apache HTTP Server。
提供 Web 服务
启动 Apache,让别人可以使用你机器上安装的 Apache 提供的 Web 服务,访问你机器上的网站。这种情况下你的机器就是服务器,别人的机器就是客户端。
注意:
- 确保配置文件语法检查通过
- 确保
80
端口没有被其他程序占用 - 确保防火墙允许
80
端口的请求,或者干脆关掉防火墙 - 如果出现 Forbidden 情况,确保配置文件
httpd.conf
中 247 行(DocumentRoot
之后)的Directory
配置的与DocumentRoot
路径相同 - 我们在开发阶段大多数都是自己访问自己机器上的网站,那这种情况下,我们既是服务端又是客户端。对于新手来说,最常见的问题就是分不清楚哪是客户端应该有的,哪是服务端应该有的。 这种时候一定要保持清醒,客户端就是浏览器能看到的,代码以及 Apache 相关的文件和配置都是服务端的。
网络
IP 地址
设备在某一个网络中的地址,目前最常见的格式:[0-255].[0-255].[0-255].[0-255]
即为四个 0-255 的数字组成。
作用就是标识一个网络设备(计算机、手机、电视)在某一个具体的网络当中的地址。
127.0.0.1 是本地地址
单个网络情况
在单个局域网下,结构非常简单,就是我们所连接的网络设备(网关)给我们分配了一个地址,在这个范围之内我们都可以通过这个地址找到我们的这个设备。
多个网络情况
但是当一个设备同时处于多个网络下(比如同时连接了有线网卡和无线网卡),就会变得稍微复杂一点:
域名
由于 IP 地址都是没有规律的一些数字组成的,很难被人记住,不利于传播,所以就有人想出来要给 IP 起名字(别名)。
域名是需要花钱注册的
DNS
通过宽带运营商提供的服务器解析一个域名背后对应的 IP,这个过程叫做 DNS 寻址,帮你完成 DNS 寻址过程的服务器叫做 DNS 服务器。
C:\Windows\System32\drivers\etc\hosts
文件是本机的 DNS 依据
注意:
- 只能影响本机的 DNS 寻址
- 必须以管理员权限运行的编辑器才有权利修改
hosts
文件
端口
计算机本身是一个封闭的环境,就像是一个大楼,如果需要有数据通信往来,必须有门,这个门在术语中就叫端口,每一个端口都有一个编号(0-65535)
- 可以通过
netstat
监视本机端口使用情况 - 占门过程叫做监听
- http 默认的端口 80
- https 默认的端口是 443
请求响应流程
- 用户打开浏览器
- 地址栏输入我们需要访问的网站网址(URL)
- 浏览器通过 DNS 服务器获取即将访问的网站 IP
- 浏览器发起一个对这个 IP 的请求
- 服务端接收到这个请求,进行相应的处理(如果是静态文件请求,就读取这个文件)
- 服务端将处理完的结果返回给客户端浏览器
- 浏览器将服务端返回的结果呈现到界面上
静态网站与动态网站
至此,我们已经可以把这些静态页面放到服务器上了,客户端也可以通过域名请求这个网站,但是对于我们来说,Apache 能够完成的事情过于简单,无外乎就是找到你请求对应的文件 → 读取文件 → 将文件内容响应给客户端浏览器(文件原封不动的给你)。无法满足让网页内容动起来(动态变化)的需求。
于是乎,就有人提出了服务端动态网页的概念,这种实现这种概念的技术有很多种:JSP、ASP.NET、PHP、Node 等等。
这些技术的原理就是:不再将 HTML 固定写死,每次用户请求时,动态执行一段代码,临时生成一个用户想要的 HTML 页面。
动态网站指的也就是每次请求时服务端动态生成 HTML 返回给用户的这种网站。
这里我们选择 PHP 作为我们了解服务端动态网页开发的技术方案,注意:我们学习的重心不在 PHP,而是了解服务端开发,以及某些其他对前端开发有帮助的东西。