大型项目的发布部署:第一章:发布部署流程

本文涉及的产品
.cn 域名,1个 12个月
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 大型项目的发布部署:第一章:发布部署流程

大型动态应用系统又可分为几个子系统:

  1)Web前端系统

  2)负载均衡系统

  3)数据库集群系统

  4)缓存系统

  5)分布式存储系统

  6)分布式服务器管理系统

  7)代码分发系统

Web前端系统

  结构图:

网络异常,图片无法展示
|

为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的,不以应用划分服务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能提高,同时使他应用也会受益。该Web前端系统基于Apache/Lighttpd/Eginx等的虚拟主机平台,提供PHP程序运行环境。服务器对开发人员是透明的,不需要开发人员介入服务器管理

 负载均衡系统

网络异常,图片无法展示
|

负载均衡系统分为硬件和软件两种。硬件负载均衡效率高,但是价格贵,比如F5等。软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs, nginx。大多数网站都是硬件、软件负载均衡系统并用。

  数据库集群系统

  结构图:

网络异常,图片无法展示
|

  由于Web前端采用了负载均衡集群结构提高了服务的有效性和扩展性,因此数据库必须也是高可靠的,才能保证整个服务体系的高可靠性,如何构建一个高可靠的、可以提供大规模并发处理的数据库体系?

我们可以采用如上图所示的方案:

 1) 使用 MySQL 数据库,考虑到Web应用的数据库读多写少的特点,我们主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库。

 2) 使用 MySQL Replication 机制实现快速将主库(写库)的数据库复制到从库(读库)。一个主库对应多个从库,主库数据实时同步到从库。

 3) 写数据库有多台,每台都可以提供多个应用共同使用,这样可以解决写库的性能瓶颈问题和单点故障问题。

 4) 读数据库有多台,通过负载均衡设备实现负载均衡,从而达到读数据库的高性能、高可靠和高可扩展性。

 5) 数据库服务器和应用服务器分离。

 6) 从数据库使用BigIP做负载均衡。

 缓存系统

网络异常,图片无法展示
|

缓存分为文件缓存、内存缓存、数据库缓存。在大型Web应用中使用最多且效率最高的是内存缓存。最常用的内存缓存工具是Memcached。使用正确的缓存系统可以达到实现以下目标:

 1、使用缓存系统可以提高访问效率,提高服务器吞吐能力,改善用户体验。

 2、减轻对数据库及存储集服务器的访问压力。

 3、Memcached服务器有多台,避免单点故障,提供高可靠性和可扩展性,提高性能。

 分布式存储系统

 结构图:

网络异常,图片无法展示
|

  Web系统平台中的存储需求有下面两个特点:

  1) 存储量很大,经常会达到单台服务器无法提供的规模,比如相册、视频等应用。因此需要专业的大规模存储系统。

2) 负载均衡cluster中的每个节点都有可能访问任何一个数据对象,每个节点对数据的处理也能被其他节点共享,因此这些节点要操作的数据从逻辑上看只能是一个整体,不是各自独立的数据资源。

 因此高性能的分布式存储系统对于大型网站应用来说是非常重要的一环。(这个地方需要加入对某个分布式存储系统的简单介绍。)

 分布式服务器管理系统

  结构图:

网络异常,图片无法展示
|

随着网站访问流量的不断增加,大多的网络服务都是以负载均衡集群的方式对外提供服务,随之集群规模的扩大,原来基于单机的服务器管理模式已经不能够满足我们的需求,新的需求必须能够集中式的、分组的、批量的、自动化的对服务器进行管理,能够批量化的执行计划任务。

 在分布式服务器管理系统软件中有一些比较优秀的软件,其中比较理想的一个是Cfengine。它可以对服务器进行分组,不同的分组可以分别定制系统配置文件、计划任务等配置。它是基于C/S 结构的,所有的服务器配置和管理脚本程序都保存在Cfengine Server上,而被管理的服务器运行着 Cfengine Client 程序,Cfengine Client通过SSL加密的连接定期的向服务器端发送请求以获取最新的配置文件和管理命令、脚本程序、补丁安装等任务。

 有了Cfengine这种集中式的服务器管理工具,我们就可以高效的实现大规模的服务器集群管理,被管理服务器和 Cfengine Server 可以分布在任何位置,只要网络可以连通就能实现快速自动化的管理。

 代码发布系统

  结构图:

网络异常,图片无法展示
|

随着网站访问流量的不断增加,大多的网络服务都是以负载均衡集群的方式对外提供服务,随之集群规模的扩大,为了满足集群环境下程序代码的批量分发和更新,我们还需要一个程序代码发布系统。

 这个发布系统可以帮我们实现下面的目标:

 1) 生产环境的服务器以虚拟主机方式提供服务,不需要开发人员介入维护和直接操作,提供发布系统可以实现不需要登陆服务器就能把程序分发到目标服务器。

 2) 我们要实现内部开发、内部测试、生产环境测试、生产环境发布的4个开发阶段的管理,发布系统可以介入各个阶段的代码发布。

 3) 我们需要实现源代码管理和版本控制,SVN可以实现该需求。

 这里面可以使用常用的工具Rsync,通过开发相应的脚本工具实现服务器集群间代码同步分发

如何部署?搭建集群服务器tomcat,weblogic,jboss哪个性能最好?

tomcat服务器占用资源少,稳定且免费。是一个轻量级的服务器,主要是应用于中小型项目 ,当并发访问的用户比较少时,可以选用tomcat服务器。tomcat服务器是运行jsp和servlet的很好的容器,但是它不支持EJB等。项目在tomcat中的部署很方便。

weblogic服务器:

而相比之下,weblogic服务器则功能更强大了一些,它属于应用级服务器,它不尽支持jsp和servlet,而且还支持更多的java的规范。 他用于开发,集成,部署和管理大型的分布式web应用,网络应用和数据库应用。这种大型的服务器有着自己独特的优势,即标准领先(它的标准包括ejb,jsb,jms,jdbc,xml和wml),扩展性无限(它的体系架构具有高扩展性,主要包括哭户籍连接的共享,资源pooling以及动态网页和ejb组件集群),快速开发(凭借对ejb和jsp的支持,以及其对servlet组件的架构体系,可加速部署应用),部署灵活,可靠等。但是一般的系统部署基本不会用到它,因为一般非基于ejb等的分布式开发项目,仅仅用tomcat即可满足我们的需求,所以无需动用重量级的weblogic。

jboss服务器:

jboss是一个基于j2ee的开放源码应用服务器,它也是免费的。它是一个管理ejb的容器,jboss核心服务仅支持ejb服务器,所以是不包括jsp和servlet的web容器。当然了,它可以和tomcat等进行绑定使用来同时支持jsp,servlet以及ejb的规范。jboss有一个典型的特点:当有servlet的系统调用到jboss里面的ejb时不经过网络,因为jboss和web服务器在同一个java虚拟机中运行,这可以大大提高运行效率和安全性。

这三个只有weblogic是商业的软件,所以你希望性能好的话,就用weblogic最好。

使用tomcat部署应用程序怎么做?

1,把java的web工程打成一个war包。

2,把war包上传到tomcat目录下的webapps目录下

3,进入tomcat的bin目录下,双击启动startup.bat

同一个Tomcat部署多个项目

同一个Tomcat 同一个端口 部署多个项目

第一步:把待发布的多个项目.war文件放入tomcat的webapps文件下下 ![这里写图片描述](https://img-blog.csdn.net/20170914102630363?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHJlYW1zdGFyNjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 第二步:修改 $TOMCAT_HOME\conf 下的server.xml文件 在server.xml文件中新增节点,一个节点代表一个web应用

path属性:指定访问该Web应用的URL入口。 如“/HelloApp1/”

docBase属性:指定Web应用的文件路径,可以给定绝对路径,可以给定相对路径。。如应用HelloApp1的文件路径为<CATALINA_HOME>/webapps/HelloApp1

reloadable属性:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。

这里写图片描述

划重点,经测试,没有第二步也可以,直接把.war文件放在webapps目录下即可。直接访问http://localhost:8080/HelloApp1/即可

同一个Tomcat 多个端口 部署多个项目

第一步:修改 $TOMCAT_HOME\conf 下的server.xml文件 1.复制节点 ,粘贴新增节点 2.删除掉新增节点下的``节点 3.新增Service节点的name属性修改为Catalina1 4.新增Service节点的Connector节点port属性修改为8001(根据机器配置未占用端口) 5.新增Service节点的Engine节点的name修改为Catalina1 6.新增Service节点的Engine节点的Host节点appBase属性修改为webapps1 ![这里写图片描述](https://img-blog.csdn.net/20170718110756307?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHJlYW1zdGFyNjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

第二步:$TOMCAT_HOME 路径下新建文件夹webapps1,里面放要发布的项目 .war文件

这里写图片描述

这里写图片描述

第三步: 复制$TOMCAT_HOME\confi目录下的Catalina生成副本 ,并命名为Catalina1

这里写图片描述

第四步:测试

1.运行bin/startup.bat文件

2.运行bin/shutdown.bat文件

3.运行tomcat8w.exe 启动tomcat

4.在浏览器输入http://localhost:8080/ 测试tomcat是否启动

在浏览器输入http://localhost:8081(server.xml中配置的端口号)/项目名/ 看项目是否启动

这里写图片描述

如果还要再发布一个项目,重复上述步骤即可

再新增一个节点。。。再新建一个webapps2文件夹。。。再复制一个Catalina2文件夹。。。

网站部署所需

网站程序代码

也就是常说的用什么语言开发的网站,比如PHP、Java、ASP.NET(C#)等等。开发好后可以运行起来,但是一般需要一个程序运行的容器,也就是服务器。

服务器(用于运行你的网站程序代码)

服务器就是运行网站程序代码的“容器”,比如你网站是php开发的,那么你可以选择Apache服务器,如果是Java开发的可以选择tomcat,如果是asp.net开发的可以使用iis服务器。服务器需要安装在电脑上,其实你在开发过程中就是安装有服务器的,初学网站开发的时候环境搭建那一步就是安装服务器相关。

主机(看做一台电脑,一台可以外网访问的电脑,称为服务器主机)

主机其实你就可以看成是一台电脑,一台具有公网IP地址的电脑,你需要把能运行你网站程序的服务器安装在这台电脑上,安装成功后启动服务器,照理说这时候你的网站其实已经可以外网访问了,就是整个互联网皆可以访问到了。但是由于各种原因,需要域名,需要把域名解析到你的这台电脑的IP地址,然后通过域名访问你的这台电脑的服务器。

如果没有公网ip地址,可以使用花生壳买一个6元的内网穿透,就有公网了。

域名(用于浏览器访问你的网站)

域名其实就是一个方便记忆的名称,如:www.jufanshare.com。

部署网站需要注意事项

端口开放

如果你一切就绪,访问浏览器地址发现访问不到你的网站,那么有可能是你的服务器所在主机没有开启对应端口,如果服务器主机是Windows Server系统需要配置的叫入站规则和出站规则,也就是说允许外网访问你这台电脑的这个端口,比如浏览器默认访问的80端口。

网站备案

我国所有网址都需要到到中国工信部备案(现在由各个服务器供应商提供备案服务,但你需要提供各种资料),如果没有备案的网站外网是无法访问的,有的可以访问,主要看服务器服务商。

部署网站最后说明

不要被服务器这些概念给搞晕了,其实就是相当于把你的本地开发环境(不包括编辑器)在购买的服务器主机上配置一遍。然后再打开对应的端口。就这么简单!比如你是Java开发的网站,那么你需要再服务器上安装jdk、jre吧,然后安装个tomcat吧,其实并不难,难在你没有接触过,难在你没有去试过,如果你不去亲自试一试,我相信你就是看完这篇文章也是不知道如何部署网站。

相关文章
|
7月前
|
运维 监控 安全
「译文」软件自动化发布管理的三个步骤
「译文」软件自动化发布管理的三个步骤
|
Kubernetes Cloud Native jenkins
下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
621 1
|
2月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文介绍了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署和云原生部署。每种方式的特点、部署流程及优缺点进行了详细说明。传统部署直接在物理机上运行应用,存在资源利用率低和运维成本高的问题;虚拟化部署通过虚拟机实现资源隔离和复用,但有性能损失和单点故障风险;容器化部署则提供轻量级、可移植的应用环境,具备良好的隔离性和一致性;云原生部署结合了容器化和微服务架构,实现高效运维和灵活扩展。
Java项目部署的发展流程
|
4月前
|
Kubernetes Java 开发工具
Kubernetes部署项目流程(新手上线新版本服务整个流程)
【8月更文挑战第1天】Kubernetes(k8s)新手上线新版本服务整个流程
107 5
|
4月前
|
前端开发 JavaScript 测试技术
构建与部署全栈JavaScript应用:从构思到上线的完整指南
【8月更文挑战第9天】构建和部署一个全栈JavaScript应用是一个复杂但充满挑战的过程。从需求分析到项目上线,每一步都需要精心策划和严格执行。通过本文的指南,希望能帮助你更好地理解和掌握全栈JavaScript应用的开发流程,从而打造出高性能、高可用、易维护的应用。
dapp只涨不跌项目系统开发稳定版/步骤需求/逻辑方案/案例项目/源码指南
The development steps of a DApp smart contract system that only rises but not falls may include the following:
|
小程序 IDE 开发工具
小程序从零开始开发到上线的过程
小程序从零开始开发到上线的过程
168 0
|
敏捷开发 测试技术
推三返一开发稳定版丨推三返一项目系统开发详细指南/方案需求/步骤逻辑/流程功能/案例设计/技术架构/源码程序
推三返一系统开发是一种软件开发模式,也被称为迭代增量开发模式。它是一种敏捷开发方法的一种,通过将整个开发过程分为多个迭代周期,每个周期都会增加新的功能和特性,并在每个迭代周期结束后进行测试、反馈和修改。推三返一系统开发的核心思想是“推进三步,反馈一步”。
|
XML 存储 SQL
【C#编程最佳实践 五】项目与代码流程实践
【C#编程最佳实践 五】项目与代码流程实践
175 0
【C#编程最佳实践 五】项目与代码流程实践
|
测试技术 BI Android开发
测试思想-流程规范 软件测试版本管理与版本发布
测试思想-流程规范 软件测试版本管理与版本发布
286 0