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. 如何成为一名hacker?

    很多人问我如何成为黑客,一般来说我总是会扯一大堆废话,告诉他们要时刻保持好奇心,要学会打破规则挑战权威之类的. 但这类话肯定不是提问者想听的.我揣摩了一下他们的心情,他们想问的应该是这个问题:如何学习 ...

  2. 项目上传svn出问题

    我在自己的笔记本上(win8),安装了tortoise 1.9.4和visualSVN server 3.5.3.我现在想让eclipse的自带的svn插件连接到本地服务器的资源库上.但是我写http ...

  3. 第一百三十二节,JavaScript,封装库--下拉菜单

    JavaScript,封装库--下拉菜单 封装库,增加了3个方法 shu_biao_yi_ru_yi_chu()方法,给元素设置鼠标移入移出事件,接收两个参数,参数是移入和移出时的执行函数(包含代码) ...

  4. 获取select选中的值

    $("#CalibrationYear option:selected").text();

  5. shell 文件中列的整合成一个文件

    原文件 第一种方法 [root@wxb- jt]# paste -d "," b c d ,q, , ,e, ,r, ,t, [root@wxb- jt]# paste b c d ...

  6. IIS 发布程序,无法输出EXCEL 问题处理

    [解决方案1] 1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务&quo ...

  7. MariaDB数据解压版安装(10.0.16)

    官网下载地址:https://downloads.mariadb.org/    (自己选择版本下载) 在windows 7 下安装 1.下载到解压版安装文件mariadb-10.0.16-win32 ...

  8. web 服务器

    作为一个跨专业转行的我来说,对后台一团浆糊,最近在看php,学的进度比较慢 (1)ApacheApache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上.Apache ...

  9. USACO 3.3 Shopping Offers

    Shopping OffersIOI'95 In a certain shop, each kind of product has an integer price. For example, the ...

  10. Java中的Class类

    Class 类是在Java语言中定义一个特定类的实现.一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类.Class类的对象用于表示当前运行的 Java 应用程序中的类和接口. ...