今天给大家分享如何在云服务器上完成部署项目的相关话题
本次分享主要包括一下四个方面:
1、选择这个话题的初衷
2、对云服务器的简单介绍 & 从腾讯云上购买一台服务器
3、登录我们购买的服务器 并且 在服务器上安装一些软件,为部署项目做一些基础准备
4、实际从0到1的部署两类项目:web静态站点 和 node服务应用
首先说一下进行云服务和部署这个分享话题的初衷,
1、方面我们平时开发中,对于项目最后一公里的步骤:部署和发布比较陌生的,在公司的项目开发中项目的部署都是通过devops比如蓝盾这种平台通过部署流水线完成,流水线里的部署插件对大部分同学可能是一个黑盒,并不知道里面具体做了什么
2、有时候做一些创新项目,需要先自己尝试部署下看看效果,比如flutterforweb 打包h5的资源先尝试看看效果,yapi二次开发容器部署需要先自己跑通查看效果
3、方面有时候难免有一些个人部署需求,比如自己搭建个人博客,搭建属于自己的云盘或者图床等需求
4、有时候需要自己做些开发辅助平台,比如codeCC 实现代码扫描 …
高压线警告:合理区分公司项目和个人项目,公司项目请不要随意在个人服务器上部署
分享之前的声明
比如公司内的静态资源项目,从性能、访问速度、安全等多方面因素,一般是部署到CDN上的
另外本次分享主要面向的是小白用户,如果之前没有相关实践,理论上是可以通过本次分享掌握基本项目的部署需要,如果是高端玩家,本次分享并不适合你…
2022年云服务器的确成为了互联网世界里的水和电,是不可缺少的基础设施
我们所在BG–csig 中的C也是cloud,腾讯云,就是国内出售云服务的top3厂商,国内还有阿里云和华为云,最近在做的字节云 都提供云服务器租售和一系列解决方案这样的服务
后面我们的演示都是基于腾讯云来做演示
腾讯云官网:https://cloud.tencent.com
购买之前面临的一个选择,是买云服务器还是轻量应用服务器?官放文档提供了完整的对比和差异图,从面向的用户群体、应用场景到计费模式等等
本质其实是东西的售卖方式,类似于点餐,为了更优惠、便捷、选择困难等,直接选择打包好的套餐,如果想要追求更多的自由度、有高要求的使用场景,DIY专业选手也可直接选择自由搭配
除了常见的CVM 和 LightHouse,还有 CDH(CVM Dedicated Host,CDH,专用宿主机)、黑石服务器,根据具体的业务场景个性化出售服务器的产品形态
登录到腾讯云的选购页面,
地域:腾讯云在不同的地区和城市部署的机房和数据中心,选择距离用户最新的地区,以降低访问的时延
镜像:官方或者是个人构建的系统或者应用的“装机盘”,用镜像可以快速实例化一套镜像里包含的系统或者是应用环境
套餐:具体的套餐根据自己的场景选择合适的即可,比如如果你要自己搭建一个图床或者云盘,需要存储大一些,可选择「存储型套餐」如果搭建一些个人博客选择通用即可
选好了配置到订单确认页面,员工福利可以每个月领取优惠券300,贫穷套餐可玩半年
下单并支付后,一般几分钟(大多数30s)左右腾讯云就会给我们创建好服务器实例,在服务器实例的详情页面可以看到服务器的详细信息,CPU利用率、内容使用量等等
接下来我们要做的就是登录到服务器,并在服务器上做一些配置
登录服务器官网提供了三种方法,webShell登录、VNC登录和SSH登录,前两种方式都是可直接在浏览器打开类似于web终端的东西进行一些问题的快速定位和修复,我们重点看ssh登录
Ssh登录大家应该也很熟悉,比如在git上通过ssh拉代码等等,在服务器上绑定你本机的公钥,后面即可通过ssh 用户名+IP登录;另外介绍一个常用的快捷方式,通过维护sshconfig维护当前服务器的host信息,后面通过 sshhostname 接口快捷登录
公钥登录:上传本机的公钥到服务器主机,登录的时候,主机会发送一段随机字符串到个人,个人主机用私钥加密后发送会给服务器主机,服务器用你的公钥解密,如果成功则标识身份得到认证
登录到服务器上后,其实跟我们新买的电脑是一样的,裸机状态,后面其实就是自己的个人发挥时间了,看自己的需求是部署站点、搭建博客、部署服务端应用等等均可
因为我们后面要演示部署两类项目:web和node,所以先提前安装下对应的软件…
Node 不用多说,大家应该比较熟悉,js的运行时
简单说一下Nginx…
Nginx 官网的定义“….”
-HTTP 服务器:
web服务器:负责处理和响应用户请求,一般也称为http服务器,如 Apache、IIS、Nginx
应用服务器:存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如 Tomcat(现在大多数应用服务器也包含了web服务器的功能)
-反向代理 VS 正向代理
Nginx 官网的定义“….”
-HTTP 服务器:
web服务器:负责处理和响应用户请求,一般也称为http服务器,如 Apache、IIS、Nginx
应用服务器:存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如 Tomcat(现在大多数应用服务器也包含了web服务器的功能)
-反向代理 VS 正向代理
-
-正向代理:因为有防火墙,我们没法直接访问Google,一般通过VPN来实现,此时VPN代理客户端访问了目标网站,正向代理的是“客户端”,客户端知道目标网站,目标网站不知道客户端是通过VPN访问的
-反向代理:当我们访问百度的时候,进行了一次转发,代理到内网搜索查询相关信息给我们,这就是反向代理,代理的是服务器端,这一个过程对客户端而言是透明的 proxy_pass
-
-
-负载均衡
-
Nginx 官网的定义“….”
-HTTP 服务器:
web服务器:负责处理和响应用户请求,一般也称为http服务器,如 Apache、IIS、Nginx
应用服务器:存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如 Tomcat(现在大多数应用服务器也包含了web服务器的功能)
-反向代理 VS 正向代理
-
-正向代理:因为有防火墙,我们没法直接访问Google,一般通过VPN来实现,此时VPN代理客户端访问了目标网站,正向代理的是“客户端”,客户端知道目标网站,目标网站不知道客户端是通过VPN访问的
-反向代理:当我们访问百度的时候,进行了一次转发,代理到内网搜索查询相关信息给我们,这就是反向代理,代理的是服务器端,单这一个过程对客户端而言是透明的 proxy_pass
-
-
-负载均衡
-随着业务发展,一台服务器已经无法满足用户需求,此时就需要多台服务器,就是服务器集群
-在服务器集群中,Nginx可以将用户收到的客户端请求按照一定的策略分配给集群中的服务器上,这就是负载均衡
-
1、如果想要在别的机器上部署同样的代码,要走相同的流程 ==>部署高效,且利于项目迁移 可移植性
2、如果服务器的系统、系统版本、项目依赖包、基础依赖库等不一致,可能导致项目启动异常 ==> “这段代码在我机器上没问题啊”==> 一致的运行环境
3、企业级项目如果发布出现问题,秒级回滚将损失降到最低,docker构建的镜像,每一个都自带版本,可快速用之前稳定的镜像重新部署 ==> 运维更高效,秒级回滚
那我们面临的问题,肯定是要有解决方案的,目前这套方案就是容器技术
说容器技术之前,我们先简单了解下软件技术架构的发展和演进历史,
90年主要是传统的服务器,企业购买小型机或者塔式服务器来部署自己的应用。每个服务器只能跑一个引用,浪费了大量的资源
20年左右出现了虚拟化技术,将服务器虚拟出多台子服务器,可以在子服务器上运行不同的引用,缺点是每一个VM都是一整套操作系统,增加了维护成本
05-15年是云服务器百花齐放的一个时代,这期间小企业和个人无需自建机房,在云厂商购买主机部署应用,“应用上云”
15年 – 至今,现在部署服务基本都是使用容器技术,其中比较出名的就是docker
什么是容器技术?
官网找到了一堆概念,官方定义想要解释一个问题,又引出了一堆问题
容器技术主要是为了解决IT世界里的“集装箱运输的问题”,我们刚刚传统的部署方案,就是典型的散装,上传代码、安装运行时、依赖、启动服务…
将这些操作整体打包起来,其实就是容器技术,不仅仅打包程序,而且打包程序的运行环境
容器技术比较出名的技术docker
Docker本身并不是容器,它是创建容器的工具,是应用容器引擎
1、Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
它是一个可执行文件,包含了运行一个应用程序的操作系统配置和所有的库
2、镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。
3、镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。