一、使用Nginx的服务器访问过程
概念:Nginx是一个负责请求分发的服务,通常部署在一个单独的服务器上,称作Nginx服务器。
浏览器输入地址,进行域名解析,解析出Nginx服务所在的服务器IP地址。
Nginx根据运维工程师配置好的规则,进行请求的转发,将请求分配到不同的服务器(对应不同的IP地址)上,从而减轻服务器处理压力。
【附】
一个服务器上可以起多个服务,多个服务IP相同,端口号不同,每个服务对应一个端口号。
二、部署&上线原理
【假设编译打包&部署,由一个服务完成】
(如果由两个服务完成,则编译打包服务负责npm run build,部署服务负责html的剪切、备份等步骤。除此之外,线上服务器必须具有的线上服务,仅用于去磁盘中部署最新版html的位置读取html文件,并返还给浏览器,完成渲染)
在线上服务器,启一个单独的服务,用于克隆源代码,并执行编译&打包命令(通常为npm run build) ,并备份历史html文件,以便用于回滚。
克隆:通过部署按钮触发ajax异步请求,编译打包服务接收请求,执行git clone命令,克隆源代码。
编译&打包:执行npm run build,生成最终的html文件和静态资源。
静态资源通常被放到自定义的static文件夹下,并整个上传到cdn上,上传完成后,删除static文件夹(可由node代码完成删除操作)。上传逻辑通常由node代码完成。上传cdn的node代码,可手动执行,也可自动化执行(可通过node api监听到npm run build执行状态,在成功编译后,执行cdn上传逻辑)。
【注】node api通常可以访问到终端执行命令的状态。
单页面生成1个html(index.html),多页面生成多个html,假设生成的html默认存放的目录为A,备份html的目录为B,线上服务访问的html目录为C。
生成新的html后,剪切C目录下现有的所有html文件到