第十四天:css
一、测试
a) 本地单元测试
b) 测试环境测试(1,2,3,4,5)
c) 用户测试(仿真环境:UAT环境)
二、确认服务器的资源
a) 硬件资源(CPU、内存、硬盘)
b) 软件资源(Linux、Windows)
c) 网络资源(宽带、机房、云服务器)
三、相关参与的人员确认
a) 测试人员
b) 开发人员
四、数据库脚本的准备
a) 初始化数据的sql脚本(DBA、运维)
b) 权限的sql脚本等
五、编写发布的文档
a) 开发人员编写各自负责的功能模块的发布文档
信息
b) 测试的文档(测试用例)
c) 全员参与
六、打包
a) 专门负责的人员进行打包处理(运维)
七、准备回滚方案
html
第一步:查看mysql是否安装。java
rpm -qa | grep mysql
第二步:若是mysql的版本不是想要的版本。须要把原来的mysql卸载。mysql
yum remove mysql mysql-server mysql-libs mysql-common
rm -rf /var/lib/mysql
rm -f /etc/my.cnf
注意:使用yum命令卸载,由于yum命令能够自动删除与mysql相关的依赖;若是使用rpm命令卸载,则还须要手动去删除和mysql相关的文件。
第三步:安装mysql。须要使用yum命令安装。在安装mysql以前须要安装mysql的下载源。须要从oracle的官方网站下载。linux
1)下载mysql的源包:
咱们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm
命令:wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
2)安装mysql下载源:
yum localinstall mysql-community-release-el6-5.noarch.rpm
3)在线安装社区版的mysql:
yum install mysql-community-server
或者在线安装收费版本的mysql:
yum install mysql-server
两种方式都可,建议安装社区版。
rpm包位置:nginx
service mysqld start
第五步:须要给root用户设置密码。git
/usr/bin/mysqladmin -u root password 'new-password' #为root帐号设置密码
第六步:登陆mysql。github
[root@localhost temp]# mysql -uroot -pitcast
第七步:须要先登陆到mysql,远程链接受权。web
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
注意:'myuser'
、'mypassword'
须要替换成实际的用户名和密码。
mysql安装好了以后,启动服务,创建链接,导入taotao数据库文件。
详细连接文章:https://www.cnblogs.com/chenmingjun/p/10192987.html面试
工程共13个,以下所示,本着高可用的原则,每一个工程至少有两台服务器。13个工程至少须要26台服务器。
taotao-manager 8080
taotao-manager-web 8081
taotao-portal-web 8082
taotao-content 8083
taotao-search 8084
taotao-search-web 8085
taotao-item-web 8086
taotao-sso 8087
taotao-sso-web 8088
taotao-cart 8089
taotao-cart-web 8090
taotao-order 8091
taotao-order-web 8092
即淘淘商城在真实环境中要部署的话须要26台服务器。
服务 | 服务器个数 |
---|---|
Mysql(主备) | 2 |
Solr(集群3+4两片) | 7 |
Redis(集群3个节点) | 6 |
图片服务器(T/S) | 2 |
Nginx(主备) | 2 |
zookeeper注册中心(集群) | 3 |
Activemq(集群) | 2 |
总共须要26+24=50台服务器。但咱们都知道,通常的小公司是毫不可能弄这么多服务器的,太昂贵了,比较可行的是采用伪分布式
。
以下图所示,搭建服务原来须要24台服务器,如今只须要7台便可。
将全部服务精简成一台服务器
:
192.168.25.133
内存至少给2G以上。下图是全部服务端口的规划表:
将全部工程精简成一台服务器
:
192.168.25.133
内存至少给2G以上。下图是全部工程端口的规划表:
工程规划表:
域名规划表:
可使用maven的tomcat插件实现tomcat热部署。即在tomcat启动时部署工程
。
tomcat有个后台管理功能
,能够实现工程热部署。部署完成后,咱们不须要启动tomcat了,tomcat会自动把war包解压到ROOT目录下。tomcat后台管理功能
有两种方式能够访问,第一种是经过图形化界面
的方式,第二种是经过命令行
的方式,这两种方式须要配置相应的权限。
第一种方式须要将工程打成war包,再手动上传,稍微有一些麻烦,第二种方式相对简单些。咱们下面演示的是第二种方式。
这里仅以taotao-content及taotao-portal-web为例子演示:
演示使用的Linux的ip地址为:192.168.25.133
在Linux下,咱们新建有13个tomcat放置13工程:
a) 部署taotao-content
linux系统上的配置:
第一步:须要修改linux系统中对应的tomcat9002的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
咱们要将war包放在对应的tomcat9002中的webapps目录下的ROOT目录下,因此咱们先在webapps目录下建立ROOT目录:
[root@localhost webapps]# mkdir ROOT
第二步:从新启动对应的tomcat9002。
[root@localhost ~]# pwd
/usr/local/taotao-projects/tomcat9002/bin
[root@localhost bin]# ./startup.sh
第三步:查看tomcat9002的启动日志。
[root@localhost tomcat9002]# tail -f logs/catalina.out
开发机器上(windows系统)的配置:
第一步:修改配置文件。
修改taotao-content工程中的相应的配置文件db.properties
中数据库的ip地址、端口、实例名、用户名、密码。以下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.165.25.133:3306/taotao?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
修改applicationContenxt-redis.xml
中的ip地址、端口。(即:将原来的localhost修改成mysql所在的服务器的IP地址。)
修改taotao-content工程中的发布服务的配置文件applicationContenxt-service.xml
中注册中心的地址,改为linux系统中的zookeeper的地址192.168.25.167
以及暴露服务的端口。
第二步:配置maven的tomcat插件,须要修改taotao-content工程的pom.xml文件。
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8083</port>
<path>/</path>
<url>http://192.168.25.133:9002/manager/text</url>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
</plugins>
</build>
注意:添加了三行配置,<url>
里面的tomcat热部署地址的端口号有所变化,如今是9002。你们可能会有疑问,<url>
配置上面的那个<port>8083</port>
有什么用?会不会对部署产生坏的影响。这个其实不用担忧,这个port
对热部署来讲,没有用,这里之因此没有把它删掉是由于咱们在Windows系统下开发
的时候给这个工程规划的端口是8083
,若是须要在Windows系统下启动该工程的
话,这个port就是有用的,所以这个<port>8083</port>
配置咱们没必要理会,搁那儿就行。
第三步:使用maven命令进行部署。
选中taotao-content工程,右键 --> Run As --> Maven build…
clean tomcat7:deploy #部署
clean tomcat7:redeploy #从新部署
部署的路径是“/”
会把系统部署到webapps/ROOT目录下
。
部署工程跳过测试
:
clean tomcat7:redeploy -DskipTests
第四步:在Linux下查看toamcat9002的日志
[root@localhost tomcat9002]# tail -f logs/catalina.out
日志输出内容以下图所示:
部署完服务后
,都会停在如上图所示的位置上,须要咱们
从新启动tomcat9002
。暂时不知道为何。
dubbo服务治理
-->
服务页面
,发现多了两个服务,分别是com.taotao.content.service.ContentCategoryService和com.taotao.content.service.ContentService。说明咱们的taotao-content工程部署成功。
b) 部署taotao-portal-web
注意:首先要确保新的服务器192.168.25.133
上安装的jdk是否与Eclipse开发时所用的jdk版本一致,我Eclipse开发时用的jdk1.7,所以服务器上的安装的jdk版本也要是1.7才行。否则会出现问题!!!(是个坑)
Linux上安装jdk过程连接:https://www.cnblogs.com/chenmingjun/p/9931593.html
linux系统上的配置:
第一步:须要修改linux系统中对应的tomcat9003的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
咱们要将war包放在对应的tomcat9003中的webapps目录下的ROOT目录下,因此咱们先在webapps目录下建立ROOT目录:
[root@localhost webapps]# mkdir ROOT
第二步:从新启动对应的tomcat9003。
[root@localhost ~]# pwd
/usr/local/taotao-projects/tomcat9003/bin
[root@localhost bin]# ./startup.sh
第三步:查看tomcat9003的启动日志。
[root@localhost tomcat9003]# tail -f logs/catalina.out
开发机器上(windows系统)的配置:
第一步:修改配置文件。
修改taotao-portal-web工程中的引用服务的配置文件springmvc.xml中注册中心的地址,改为linux系统中的zookeeper的ip地址192.168.25.133
。
第二步:配置maven的tomcat插件,须要修改taotao-portal-web工程的pom.xml文件。
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8082</port>
<path>/</path>
<url>http://192.168.25.133:9003/manager/text</url>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
</plugins>
</build>
第三步:使用maven命令进行部署。
选中taotao-portal-web工程,右键 --> Run As --> Maven build…
tomcat7:deploy #部署
tomcat7:redeploy #从新部署
部署的路径是“/”
会把系统部署到webapps/ROOT目录下。
部署工程跳过测试
:
clean tomcat7:redeploy -DskipTests
第四步:在Linux下查看toamcat9003的日志
[root@localhost tomcat9003]# tail -f logs/catalina.out
第五步:从新启动tomcat9003。
第六步:查看dubbo监控中心。
部署完服务层工程taotao-portal-web后,咱们到dubbo服务治理
--> 应用页面
,发现多了两个应用,分别是taotao-content和taotao-portal-web。说明咱们的taotao-portal-web工程部署成功。
同上 a) 部署taotao-content
和 b) 部署taotao-portal-web
步骤。
注意1:在工程部署以前须要启动全部的服务:zookeeper、redis、solr、mysql、activemq
注意2:每一个工程运行在不一样的tomcat上,须要修改tomcat的端口号。
注意3:先部署服务层工程,再部署表现层工程。
注意4:当部署使用到activemq的工程时,须要将原来的pom.xml文件的activemq的依赖配置项修改成新的,以下:
原来的:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
</dependency>
新的:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
</dependency>
若是不修改为新的在部署的时候会报错,可是在开发使用原来的没有问题。(这是一个坑
)
部署大体步骤以下:
第一步:修改工程中的服务器的地址都改成192.168.25.133(在全部的jsp和xml中)
第二步:修改全部localhost对应正确的域名
例如:http://localhost:8088 --> http://sso.taotao.com
第三步:修改全部db.properties中的localhost:3306/taotao
为192.168.25.133:3306/taotao
,以及用户名和密码。
第四步:若是在数据库中没有建立taotao,须要建立一个,再导入数据。
第五步:反向代理配置以下3.六、反向代理的配置
所示:
第六步:测试,须要先将本地hosts切换为以下图所示配置:
linux系统上的配置:
Linux系统上nginx配置反向代理,反向代理配置的是表现层工程对应的端口
,注意:配置upstream时不要有空格。
[root@localhost conf]# pwd
/usr/local/nginx/conf
[root@localhost conf]# vim nginx.conf
nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream manager.taotao.com {
server 192.168.25.133:9001;
}
upstream www.taotao.com {
server 192.168.25.133:9003;
}
upstream search.taotao.com {
server 192.168.25.133:9005;
}
upstream item.taotao.com {
server 192.168.25.133:9006;
}
upstream sso.taotao.com {
server 192.168.25.133:9008;
}
upstream order.taotao.com {
server 192.168.25.133:9010;
}
upstream cart.taotao.com {
server 192.168.25.133:9012;
}
server {
listen 80;
server_name manager.taotao.com;
location / {
proxy_pass http://manager.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.taotao.com;
location / {
proxy_pass http://www.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name search.taotao.com;
location / {
proxy_pass http://search.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name item.taotao.com;
location / {
proxy_pass http://item.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name sso.taotao.com;
location / {
proxy_pass http://sso.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name order.taotao.com;
location / {
proxy_pass http://order.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name cart.taotao.com;
location / {
proxy_pass http://cart.taotao.com;
index index.html index.htm;
}
}
}
注意:修改好以后,须要从新加载(reload)nginx的配置文件
。
开发机器上(windows系统)的配置:
测试时使用域名访问网站,须要修改本地电脑(windows)hosts
文件。
全部的域名应该指向反向代理服务器nginx
。
配置hosts文件,内容以下:
192.168.25.133 manager.taotao.com
192.168.25.133 www.taotao.com
192.168.25.133 search.taotao.com
192.168.25.133 item.taotao.com
192.168.25.133 sso.taotao.com
192.168.25.133 cart.taotao.com
192.168.25.133 order.taotao.com
咱们可使用一个软件来配置本地电脑(windows)hosts文件,以管理员身份运行SwitchHosts软件:
项目中:执行查询的命令要比修改、删除、这些命令要多的多。因此为了保证数据库的读写性能
和数据库的完整性
。须要作读写分离
。
什么是读写分离?
通俗的讲就是读取的命令在一个数据库中,而写入的命令在另一个库中。两个库中的数据必须同步
。
Mysql提供的解决方案:使用binlog进行数据库同步
。须要配置mysql。
代码中实现读写分类:
一、可使用aop实现一个切面。动态切换数据源。须要编程实现。
二、使用数据库中间件实现读写分离
,分库分表
。(学习这个)
mysql 2000万以上
和
oracle11G 1亿以上
时须要分库分表。
数据库中间件Mycat
。国产开源项目,前身是
cobar项目
。
简单的说,Mycat就是:
Mycat的目标是:低成本的将现有的单机数据库和应用平滑迁移
到“云”端,解决数据存储和业务规模迅速增加状况下的数据瓶颈
问题。
官方网站:
http://www.mycat.org.cn/
github地址:
https://github.com/MyCATApache
数据库准备,准备三个MySQL数据库实例。
在Linux上安装一个MySQL数据库进行模拟,再设置三个数据库,做为集群中的库进行使用。
分片规则:
[root@localhost ~]# mv Mycat-server-1.4-release-20151019230038-linux.tar.gz /usr/local
[root@localhost ~]# cd /usr/local
[root@localhost local]# tar -zxf Mycat-server-1.4-release-20151019230038-linux.tar.gz
建立3个数据库实例
[root@localhost local]# cd /usr/local/mycat/conf
[root@localhost conf]# ll
文件内容详解以下图:
[root@localhost conf]# vim server.xml
配置内容以下:
设置为MySQL对大小写不敏感
,不然可能会发生表找不到的问题。
lower_case_table_names = 1
配置schema.xml,配置的是物理数据库的节点信息,包括:ip地址、端口、数据库名称、分片规则
[root@localhost conf]# vim schema.xml
配置内容以下:
[root@localhost conf]# vim rule.xml
配置内容以下:
rule.xml
配置分片算法
[root@localhost conf]# vim auto-id.txt
文件内容以下:
# K=1000,M=10000
0-127=0
128-255=1
256-511=2
建立3个数据库实例,要求和mycat配置的schema.xml中的3个实例名称一致。
启动命令:./mycat start
中止命令:./mycat stop
重启命令:./mycat restart
具体操做:
[root@localhost ~]# cd /usr/local/mycat/bin
[root@localhost bin]# ./mycat start
内容以下:
[root@localhost logs]# vim wrapper.log
注意:可使用mysql的客户端直接链接mycat服务。默认服务端口为8066
在mycat中建立数据库表,发现使用的三个库都建立了表。
在mycat中插入数据,发现按照规则给三个数据库分别插入了数据。
https://blog.csdn.net/u012453843/article/details/73694543 https://blog.csdn.net/u012453843/article/details/73656590