1. 今日大纲

  1. 发布前的准备
  2. 实施发布
    1. 一部分是由我来发布
    2. 一部分是由你们来发布
  3. 讲解分布式部署架构
  4. 测试
    1. 功能测试
    2. 压力测试
  5. 项目实战的准备以及分组
    1. 分组
    2. 抽取功能
    3. 讲解所需要开发的功能
    1. 项目部署上线流程

  6. 需要知道有几台服务器
  7. 服务器是否在同一个机房
    1. 在同一个机房,通过内网进行通信 -- 速度快
    2. 不在同一个机房,通过外网通信 -- 速度慢
  8. 服务器的硬件以及操作系统
    1. 硬件
      1. 内存 -- 多大?
      2. CPU -- 几核?
      3. 硬盘 -- 多大? IO? 机械硬盘还是SSD(固态硬盘)?
    2. 操作系统
      1. Windows?
      2. Linux?
      3. 32? 64?
  9. 做最后的功能测试
    1. 略过。
  10. SVN打tag
  11. 打包程序(Maven)
  12. 数据库脚本以及初始数据
  13. 编写发布文档
    1. 要将发布的内容以及发布步骤都写下来
    2. 回滚的机制
      1. 程序的回滚
      2. 数据的回滚
      3. 系统间的调用关系的回滚
  14. 实施发布
    1. 服务器情况

在同一个机房,操作系统是linux,64位版本。

企业中的服务器是使用虚拟机还是实体机? -- 虚拟机 方便管理。

企业中为什么要使用linux虚拟机而不是实体机?

虚拟机,有2种:

  1. 在windows平台安装linux虚拟机
    1. 常常用于测试、开发
  2. 服务器的虚拟化
    1. 直接在实体机基础之上安装虚拟机,没有windows这一层,对硬件的利用率更高

今天共有9台虚拟机发布,每台虚拟机的配置都是一样的:

CPU: 4核 -- top à 1

内存:2GB -- free -m

硬盘:机械硬盘 45G -- df - h

  1. SVN打包tag

    1. 直接在SVN视图中复制粘贴

  1. 在Eclipse中右键操作

  1. 程序打包

    1. 需要打包哪些工程

Taotao-cart

Taotao-manage

Taotao-web

Taotao-sso

Taotao-sso-service

Taotao-order

Taotao-search

Taotao-solr(原solr)

Taotao-upload

Taotao-static

数据将脚本

Nginx的配置文件

  1. 实施打包

  1. 打包jar程序(可执行)

    1. 配置maven的jar插件

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>3.0.2</version>

<configuration>

<outputDirectory>${publish}</outputDirectory>

<archive>

<manifest>

<addDefaultImplementationEntries>true

</addDefaultImplementationEntries>

<addDefaultSpecificationEntries>true

</addDefaultSpecificationEntries>

<addClasspath>true</addClasspath>

<!-- 运行需要的依赖放到这个目录下 -->

<classpathPrefix>lib/</classpathPrefix>

<mainClass>com.taotao.sso.main.Main</mainClass>

</manifest>

</archive>

</configuration>

</plugin>

  1. 自定义打包

  1. 配置Maven的自定义打包插件

  2. 自定义打包插件的配置
  3. 打包之后的效果

程序中的配置文件:

  1. 把配置文件放到config目录
  2. 启动程序时指定参数-DconfigPath=配置文件的路径
  3. 程序中获取配置文件路径的参数
  1. 实施发布

    1. 部署架构

  1. 服务器分配情况

应用

IP

端口

执行人

完成情况

备注

Nginx

192.168.50.23

80

花和尚

OK

 

Taotao-web-1

192.168.50.24

8080

张志栋

   

Taotao-web-2

192.168.50.25

8080

黄柯

OK

 

Taotao-web-3

192.168.50.25

8081

李春凤

OK

 

Taotao-SSO

192.168.50.26

8080

董孙维

OK

 

Taotao-SSO-service

192.168.50.26

8081

付璐璐

OK

 

Taotao-order

192.168.50.27

8080

李娟

OK

 

Taotao-search

192.168.50.27

8081

张有路

OK

 

Taotao-solr

192.168.50.27

8983

蔡麒

OK

 

Taotao-cart

192.168.50.27

8082

张凯业

OK

 

Taotao-manage

192.168.50.29

8080

花和尚

OK

 

Mysql

192.168.50.30

3306

花和尚

OK

 

Redis

192.168.50.30

6379

花和尚

OK

 

RabbitMQ

192.168.50.30

5672/15672

花和尚

OK

 

Zookeeper

192.168.50.31

2181

花和尚

OK

 

Dubbo-admin

192.168.50.31

8080

刘成达

OK

 

Dubbo-monitor

192.168.50.31

8088

高计豪

OK

 

部署情况:

  1. 时间:今天中午
  2. 程序:我打好的包 war
  3. 服务器的账号密码:root/root123
    1. Linux下nginx使用

Nginx/sbin

启动:./nginx

停止: ./nginx -s stop

重新加载: ./nginx -s reload

将防火墙的80端口开放:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

/etc/rc.d/init.d/iptables save

/etc/init.d/iptables status

  1. 非root用户不能占用80端口的解决方案

  1. Linux下安装mysql

Linux执行SQL脚本:cat taotao.sql | mysql -uroot -proot -Dtaotao

  1. Linux下安装Redis

注意:需要开放6379端口。

  1. Linux下安装RabbitMQ

  1. 启动RabbitMQ非常的慢问题解决:
    1. 需要在hosts文件中添加主机名的映射,映射到本地127.0.0.1
  2. 需要配置可以通过guest用户远程登录:
    1. 修改guest用户的密码
  3. 创建taotao用户以及/taotao的vhost,并且设置taotao用户的权限

测试:

  1. 部署taotao-manage

解压war包:

jar -xvf taotao-manage-web.war

配置nginx(192.168.0.50):

  1. 部署前台系统

访问后台系统接口出错:

解决:在192.168.50.24机器配置hosts内容:

  1. 部署static.taotao.com

在192.168.0.41上的nginx配置static.taotao.com指向到/ucneter/web/taotao-static

但是,后台系统上传的图片没有显示。

  1. 配置tomcat集群

配置:

负载均衡的策略:轮询

如果其中的一个server宕机,nginx会将该server移除出轮询列表。

如果宕机的服务恢复的话,会自动加回到轮询的列表中。

  1. 图片无法显示的问题

后台系统上传的图片是在192.168.50.29的/ucenter/web/taotao-upload

现在的nginx的配置是:将image.taotao.com指向到本地(192.168.50.23)的/ucenter/web/taotao-upload

问题,新上传的图片将无法显示。

如何解决?

  1. 部署一台单独的图片服务器
    1. 后台管理系统如何将图片上传到图片服务器?
  2. 使用FTP
  3. NFS – 网络文件系统

现在的解决:

在192.168.50.23上直接上传taotao-upload.tar.gz (临时解决方案)

测试:

  1. 部署taotao-search和taotao-solr

如何在linux中使命令在后台运行:

java -Dsolr.solr.home=taotao-solr -jar start.jar &

在执行的命令后面添加一个 &符号即可。

  1. 部署taotao-sso

    1. 如何在同一台机器启动多个tomcat

需要修改3个端口才能启动:

1、

2、

3、

  1. 高可用架构

    1. 目前架构存在的问题

如果nginx宕机,那么整个架构将瘫痪。

  1. 双机主备

已经解决上述问题,但是,又有了新问题。 -- 备用服务器的资源浪费问题。

  1. 双主热备

  1. 以上的问题

Nginx宕机是指:nginx服务宕机,不是nginx所在的服务器宕机。

Nginx自身的性能将成为系统的瓶颈。

Nginx的负载均衡存在性能问题。

解决:使用LVS替代nginx的负载均衡功能。

  1. 压力测试

    1. 压力测试

作用:保证系统上线之后能够满足线上并发的要求。

  1. 模拟并发

用线程模拟并发。

  1. Jmeter压力测试工具

《测试淘淘商城首页简要示例.docx》

淘淘商城_day11_课堂笔记的更多相关文章

  1. 淘淘商城_day01_课堂笔记

    今日大纲 聊聊电商行业 电商行业发展 11.11 2015双11: 2016年: 预测:2017年的双11交易额将达到:1400亿 电商行业技术特点 淘淘商城简介 淘淘商城的前身 电商行业的概念 B2 ...

  2. 淘淘商城_day04_课堂笔记

    今日大纲 实现首页的大广告位功能 实现内容管理系统 首页的大广告 什么是大广告 JS效果: 点击下面的序号选择查询哪个广告 自动切换 点击图片查询具体的页面 以上是由前端团队来开发. 数据结构 说明: ...

  3. 淘淘商城_day02_课堂笔记

    今日大纲 学习Nginx的使用 实现商品的管理 新增商品 查询商品列表 编辑商品 删除商品 上架和下架商品 学习nginx 开发阶段中的环境 开发环境:自己的电脑 测试环境:提供给测试人员使用的环境 ...

  4. 淘淘商城_day10_课堂笔记

    今日大纲 Dubbo入门学习 使用dubbo优化单点登录系统 系统间服务调用方式 浏览器直接访问 浏览器发起请求,通过ajax或jsonp方式请求: Httpclient方式 系统与系统之间通过Htt ...

  5. 淘淘商城_day09_课堂笔记

    今日大纲 实现购物车 基于Mysql实现读写分离 购物车 需求描述 用户可以在登录状态下将商品添加到购物车 用户可以在未登录状态下将商品添加到购物车 用户可以使用购物车一起结算下单 用户可以查询自己的 ...

  6. 淘淘商城_day08_课堂笔记

    今日大纲 问题,如何实现商品数据的同步? 学习MQ(消息队列) 搭建RabbitMQ的环境 学习RabbitMQ的队列 学习Spring-Rabbit 使用RabbitMQ完成商品数据的同步 如何实现 ...

  7. 淘淘商城_day07_课堂笔记

    今日大纲 讲解订单系统 基于订单系统完成下单功能的开发 使用Solr完成商品的搜索功能 订单系统 说明:订单系统只是做讲解,不做开发. 导入taotao-order 表结构 订单表: 订单商品表: 疑 ...

  8. 淘淘商城_day05_课堂笔记

    今日大纲 学习Redis 使用Redis完成项目中缓存需求 实现商品详情页功能 缓存的需求 大广告位数据无需每次查询后台系统的接口,可以在前台系统添加缓存,提高访问首页的速度. 商品类目的数据也可以缓 ...

  9. 淘淘商城_day06_课堂笔记

    今日大纲 实现单点登录系统 基于单点登录系统实现,用户的注册和登录 商品数据同步问题 问题 后台系统中将商品修改,前台系统没有进行数据的同步,导致前端系统不能够实时显示最新的数据. 解决 后台系统中商 ...

随机推荐

  1. 【C语言】字符串模块

    一.字符串简介 * 在Java中,一个字符串可以用String类型来存储 String s = "MJ"; C语言中没有String这种类型.其实字符串就是字符序列,由多个字符组成 ...

  2. ColumnEdit 数据源修改

    应用场景 当从ColumnEdit(如SearchLookUpEdit)中选取一条记录后,ColumnEdit的数据源不再出现这条记录.效果图如下 选择前 选择一条记录后,上一条记录不再显示. 此处是 ...

  3. 第一百三十三节,JavaScript,封装库--弹出登录框

    JavaScript,封装库--弹出登录框 封装库,增加了两个方法 yuan_su_ju_zhong()方法,将获取到的区块元素居中到页面,chuang_kou_shi_jian()方法,浏览器窗口事 ...

  4. CreateMutex 创建一个有名字的互斥量的时候hMutex=CreateMutex(NULL,TRUE,"tickets")报错

    编译器报错: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”,怎么改成LPCWSTR类型 更改方法: hMutex=CreateMutex(NULL,TRUE,L" ...

  5. ListView添加节点

    ListView插入节点的流程 当ListView控件的样式被设置成report时,ListView控件实际上是分为两个部分, 一部分是Column, 这个部分是用来显示ListView的每一列的标题 ...

  6. Linux 下Nginx 的安装及负载均衡的简单配置

    这次发布程序需要均衡负载,网上看了一下这方便的东西,觉得很不错,学完之后做下总结,一遍后期用到. 1.安装nginx之前需要安装的两个依赖,pcre-x.x.x.tar.gz 和pcre-devel- ...

  7. 终于了解了User-Agent的历史了

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? 1 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.3 ...

  8. 高效开发之SASS篇

    作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家都知道,js中可以自定义变 ...

  9. Metrics-Java版的指标度量工具

    介绍 Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同时,Metrics能够很好的跟Ganlia.Gra ...

  10. MySQL data路径为空解决方法

    CMD x:\mysql\5.7.12\bin>mysqld --initialize-insecure --user=mysql