走进node.js - 服务端开发2

133 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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、端口号的作用
  • 命令行的使用

image.png

搭建 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 相关的文件和配置都是服务端的。

image.png

网络

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

请求响应流程

  1. 用户打开浏览器
  2. 地址栏输入我们需要访问的网站网址(URL)
  3. 浏览器通过 DNS 服务器获取即将访问的网站 IP
  4. 浏览器发起一个对这个 IP 的请求
  5. 服务端接收到这个请求,进行相应的处理(如果是静态文件请求,就读取这个文件)
  6. 服务端将处理完的结果返回给客户端浏览器
  7. 浏览器将服务端返回的结果呈现到界面上

静态网站与动态网站

至此,我们已经可以把这些静态页面放到服务器上了,客户端也可以通过域名请求这个网站,但是对于我们来说,Apache 能够完成的事情过于简单,无外乎就是找到你请求对应的文件 → 读取文件 → 将文件内容响应给客户端浏览器(文件原封不动的给你)。无法满足让网页内容动起来(动态变化)的需求。

于是乎,就有人提出了服务端动态网页的概念,这种实现这种概念的技术有很多种:JSP、ASP.NET、PHP、Node 等等。

这些技术的原理就是:不再将 HTML 固定写死,每次用户请求时,动态执行一段代码,临时生成一个用户想要的 HTML 页面。

动态网站指的也就是每次请求时服务端动态生成 HTML 返回给用户的这种网站。

这里我们选择 PHP 作为我们了解服务端动态网页开发的技术方案,注意:我们学习的重心不在 PHP,而是了解服务端开发,以及某些其他对前端开发有帮助的东西。