01 环境框架搭建.txt

UP 返回
1. 环境搭建(以下视频参F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\阶段一\1分布式框架-Dubbox\3Dubbox框架)
  1.1 虚拟安装
	将	F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\Linux镜像\品优购服务器
	下的压缩包复制进 D:\EnvironmentDevs\品优购虚拟机服务器
	双击CentOS-pinyougou-server.vmx启动

	VM会自动打开系统。关机进入VM主界面设置网络适配器。默认的适配器是NAT,将其改为仅主机,同时在虚拟网络适配器中将子网ip改为192.168.25.0(仅仅是为了适应本项目后期要用的dns服务器)
		NAT 	表示虚拟机和当前的电脑共用网卡,所以只要自己的电脑可以上网,虚拟机就可以
		桥接	相当于虚拟机是一个独立的机器,连到外面的局域网。这种情况下一旦拔掉网线虚拟机就连不上了,没有外部网络
		仅主机	相当于两个电脑用网线连上了,和外部的网络没有关系

	打开虚拟机,登录root,密码itcast,登陆成功。使用ifconfig查看此处的ip地址为192.168.25.128(后续地址被分配成了其他的地址,需要将项目中所有涉及到地址的都要改掉。可以考虑将地址固定)

  1.2 zookeeper安装
	用secureCRT连接虚拟机。先将 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\配套软件\Dubbox 
	下的zookeeper-3.4.6.tar.gz移动到 D:\EnvironmentDevs (目的是为了用全英文目录方便后面操作)
	在CRT中按alt+p即可进入sftp模式,输入 put d:/EnvironmentDevs/zookeeper-3.4.6.tar.gz 	(目录是可以利用tab自动补全的),回车,文件就自动上传到了虚拟机主目录下
	tar -zxvf zookeeper-3.4.6.tar.gz	解压生成文件夹zookeeper-3.4.6,cd进入文件夹
	mkdir data						创建文件夹,用于存储数据
	cd conf
	mv zoo_sample.cfg zoo.cfg	文件改名
	vim zoo.cfg					编辑该文件。点击i进入插入模式,修改dataDir的值为data文件夹的绝对目录:/root/zookeeper-3.4.6/data 。修改好以后按esc,再输入:wq保存退出。
	返回进入bin目录
	./zkServer.sh start			启动				./zkServer.sh status 查看状态(standalone表示正常运行)	./zkServer.sh stop 停止
	退出虚拟机时可以考虑挂起不要关机,这样以后zookeeper就不会断开
	
  1.3 Dubbox本地 JAR包部署与安装
	Dubbox的jar包并没有部署到Maven的中央仓库中,在Maven的中央仓库中可以查找到Dubbo的最终版本是2.5.3 , 阿里巴巴解散了Dubbo团队后由当当网继续维护此项目,并改名为 Dubbox ,坐标不变,版本变更了,但是并没有提交到中央仓库。
	实际开发需要手动将Dubbox的jar包安装到本地仓库中。先将dubbo-2.8.4.jar包放到d:\setup, 然后输入命令
		mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar
	这里的d:\setup是视频演示的地址,实际可以用本地电脑的地址弄
	之前项目提供的系统镜像里面已经做了这个操作,所以此处不用弄

  1.4 配置离线约束
	将文件 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\配套软件\Dubbox\dubbo.xsd
	放入D:\EnvironmentDevs下
	打开eclipse,window→preference→输入搜索xml→XML Catalog→Add→File System→选择dubbo.xsd文件→Key type修改为Schema location,下面的Key输入为 http://code.alibabatech.com/schema/dubbo/dubbo.xsd →OK

  1.5 测试小代码
	1.5.1 创建服务提供方
		代码地址:D:\ProjectCodes\eclipse_pyg\dubboxdemo-service 步骤参 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\1.品优购电商系统开发讲义\讲义\品优购_day01_课程讲义_V1.3.docx 中的3.5.1
		新建maven项目(勾上create simple ...)→com.itheima.demo	dubboxdemo-service	packaging选择war→pom文件用 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\配置文件\Dubbox\pom.xml (注意本地仓库可能没有dubbo的依赖,需要手动加入仓库中)
			→webapp下新建WEB-INF,将服务提供方下的web.xml复制进去→将applicationContext-service.xml复制进resources
		注意事项:1. 服务类的@Service注解需要使用dubbo的,不要用spring的
					2. 修改pom中tomcat插件的端口为8081
					3. applicationContext-service.xml中的配置说明:
	    					<dubbo:application name="dubboxdemo-service"/>  <!--当前应用名称,即注册中心识别的名称  -->
						<dubbo:registry address="zookeeper://192.168.25.128:2181"/> <!-- 注册中心的地址  对应于之前配置的虚拟机-->
						<dubbo:annotation package="com.itheima.demo.service.impl" /> <!-- 包扫描 -->
					4. 右键项目→Run As→6 Maven build...→在Goals中输入tomcat7:run,即可运行项目
						运行之前注意看看eclipse的maven的user settings是否是d盘自定义的用户配置文件,不然老是去默认的仓库就找不到dubbo的依赖了
	1.5.2 创建消费方
		同上,只不过controller中引用的服务使用注解为@Reference。tomcat端口使用8082。用同样的方式先后运行项目
		在浏览器上访问http://localhost:8082/user/showName.do,,会发现获得了返回值itheima (这个.do是根据消费方配置的过滤器来的 <url-pattern>*.do</url-pattern>)
  
  1.6 管理中心的部署
	方式一:直接解压 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\配套软件\Dubbox\懒人资源包.zip 里面有打好包的管理中心和监控中心的war
	方式二:自己编译
		dubbox源代码在 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\配套软件\Dubbox\dubbox-master.zip 将其解压到 D:\EnvironmentDevs 目录下,控制台进入D:\EnvironmentDevs\dubbox-master\dubbo-admin目录下编译
		使用 mvn package -Dmaven.skip.test=true 跳过测试打包,生成的target目录下即有war了。将war复制进D:\EnvironmentDevs,改名为dubbo-admin.war,同时将apache-tomcat-7.0.52.tar.gz也复制进文件夹,用来上传到服务器上
		上传:put d:/EnvironmentDevs/dubbo-admin.war		put d:/EnvironmentDevs/apache-tomcat-7.0.52.tar.gz
		解压tomcat,移动war包:mv dubbo-admin.war apache-tomcat-7.0.52/webapps/		此时webapps下就有war包了
		启动tomcat:cd apache-tomcat-7.0.52/bin/		./startup.sh
		浏览器访问 http://192.168.25.130:8080/dubbo-admin/	输入root/root即可登录。点击服务治理→服务,即可看见服务提供者消费者等信息

2.项目搭建(以下视频参F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\阶段一\1分布式框架-Dubbox\4框架搭建)
  2.1 数据库创建
	创建数据库pinyougoudb,执行 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\建库语句

  2.2 模块创建
	创建父工程pinyougou-parent:创建过程同上,groupId 为com.pinyougou ,artifactId 为pinyougou-parent,打包方式使用pom。在pom.xml中添加锁定版本信息dependencyManagement与pluginManagement,参 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\配置文件\第一天搭建\父工程\pom.xml
	创建maven模块pinyougou-pojo:选择父工程为pinyougou-parent,点击next,打包方式为jar
	继续创建pinyougou-dao pinyougou-common pinyougou-sellergoods-interface模块,打包方式均为jar
		对于dao模块,pom配置参F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\配置文件\第一天搭建\数据访问层工程。同时将剩下的三个文件夹复制进资源目录
			还要引入pojo的依赖:(这里可以右键模块,maven→Add Dependency,搜索pinyougou即可看见。如果找不到对应的版本,需要install一下pojo模块再更新maven索引)
				<dependency>
					<groupId>com.pinyougou</groupId>
					<artifactId>pinyougou-pojo</artifactId>
					<version>0.0.1-SNAPSHOT</version>
				</dependency>
	创建pinyougou-sellergoods-service pinyougou-manager-web pinyougou-shop-web模块,打包方式为war
		这几个模块会标有叉号,进文件夹  F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\配置文件\第一天搭建
		对于模块pinyougou-sellergoods-service 将 服务层工程 下的WEB-INF复制进webapp即可;后两个使用 WEB工程 目录下的。
		同时pom中的依赖配置参同目录下的pom文件
		再将同目录下的spring文件夹复制进资源resources目录下(如果是web对应还要复制config文件夹,sellergoods-service这里只需要其中的applicationContext-service.xml文件)
		这些模块的依赖酌情添加,比如service需要依赖接口等等。注意各个模块中pom的dubbox端口是不同的
 
  2.3 逆向工程
	将 \配套软件\逆向工程 下的项目复制进 D:\ProjectCodes\eclipse_pyg ,导入eclipse,修改配置文件generatorConfig.xml中的一些参数(数据库名称 密码),运行即可生成pojo和mapper
	将pojo复制进pojo模块,mapper和对应的xml复制进dao模块
	手动将各个实体类实现Serializable以便于网络传输

3.可能出现的错误
  3.1 在注册中心找不到对应的服务
	java.lang.IllegalStateException: Failed to check the status of the service 
	com.pinyougou.sellergoods.service.BrandService. No provider available for the service 
	com.pinyougou.sellergoods.service.BrandService from the url 
	zookeeper://192.168.25.129:2181/com.alibaba.dubbo.registry.RegistryService?application=pinyougou-manager-web&dubbo=2.8.4&interface=com.pinyougou.sellergoods.service.BrandService&methods=update,get,delete,selectOptionList,add,getListByPage&pid=3980&revision=0.0.1-SNAPSHOT&side=consumer&timestamp=1501146823396 to the consumer 172.16.17.14 use dubbo version 2.8.4
		这种错误是服务层代码没有成功注册到注册中心导致,请检查一下你的服务层代码是否添加了@service注解,并且该注解的包一定是com.alibaba.dubbo.config.annotation包,
		不是org.springframework.stereotype.Service,这个地方极容易出错。另外还有一个原因就是你的服务层工程由于某些原因没有正常启动,也无法注册到注册中心里。
  3.2.无法连接到注册中心
	org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 5000	org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:876)	
	org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98)	
	org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:92)	
	org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:80)
	com.alibaba.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperClient.<init>(ZkclientZookeeperClient.java:26)
		请检查IP与端口是否填写正确,检查注册中心是否正常启动









DOWN 返回