# gulimall_all2 **Repository Path**: banyuesong/gulimall_all2 ## Basic Information - **Project Name**: gulimall_all2 - **Description**: gulimall学习笔记 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-12-20 - **Last Updated**: 2022-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gulimall 谷粒商城: 项目启动: 1、启动vagrant虚拟机 2、启动nacos 3、启动seata 4、内网穿透检查(支付宝沙箱支付使用到,具体配置过程查看下面的内网穿透说明) 5、启动微服务(gulimall-gateway、gulimall-third-party、renren-fast、gulimall-product、gulimall-member、gulimall-ware、gulimall-coupon、gulimall-order) 6、启动前端(后台管理)(使用Visual Studio Code打开) 7、项目最终启动成功 8、访问:gulimall.com 端口占用解决: 查看被占用的端口:netstat -aon|findstr "80" 关闭被占用的端口:taskkill -PID 80 -F 启动vagrant虚拟机(目前虚拟机地址为:10.0.2.15): 方式一: 1、进入:C:\Users\Administrator 2、cmd 进入命令提示符界面 3、vagrant up 4、在第三步启动之后:ctrl c 关掉命令 5、vagrant ssh 即可进入 6、退出命令:exit; 7、重启:vagrant reload 方式二(推荐): 1、打开Oracle VM VirtualBox软件 2、启动虚拟机 切换虚拟机root用户: 1、命令提示符输入:su root 2、回车 3、输入密码:vagrant docker命令集合:(sudo代表root权限) docker镜像安装命令: 以安装mysql为例:sudo docker pull mysql:5.7 docker镜像重启: 以mysql为例:docker restart mysql 虚拟机启动时某一镜像自动启动: docker update elasticsearch --restart=always 监控CPU使用率、内存等等: docker stats 查看docker中已启动的镜像: 1、命令提示符输入:sudo docker images 查看当前启动的镜像及其端口: 1、命令提示符输入:sudo docker ps 查看所有镜像(包括未启动的):sudo docker ps -a 当镜像实例已经存在时,重新启动镜像 : 1、命令提示符输入:sudo docker start 镜像实例ID 让镜像每次自动重启: 1、命令提示符输入:sudo docker update 镜像实例ID --restart=always nacos: 启动:windows下双击 startup.cmd(启动前进入该文件夹:D:\软件学习\DIY脚本\1.分布式基础(全栈开发篇)\nacos-server-1.1.3\nacos\bin) 访问地址:127.0.0.1:8848/nacos 账号:nacos 密码:nacos seata配置: 1、修改 D:\软件学习\DIY脚本\1.分布式基础(全栈开发篇)\seata-server-0.7.1\conf\registry.conf 文件去指定注册中心 seata启动: 启动:windows下双击 seata-server.bat(启动前进入该文件夹:D:\软件学习\DIY脚本\1.分布式基础(全栈开发篇)\seata-server-0.7.1\bin) 启动状态判断:访问:http://localhost:8848/nacos 如果在nacos中服务管理--》服务列表下存在 服务名为 serverAddr(默认)即代表seata启动成功 elasticsearch: 访问地址:http://192.168.56.10:9200/ (本地window环境浏览器中访问) kibana: 访问地址:http://192.168.56.10:5601/ (本地window环境浏览器中访问) nginx相关(安装:124、全文检索-ElasticSearch-分词-自定义扩展词库) 访问nginx: http://192.168.56.10/ 访问nginx中的分词txt: http://192.168.56.10/es/fenci.txt 自定义扩展词库文件位置(vagrant虚拟机中): cd /mydata/nginx/html/es/ ls vi fenci.txt 出现的问题及解决方案: 1、oss照片储存403:更新下系统时间 2、端口被占用问题: 2.1、查看被占用的端口:netstat -aon|findstr "80" 2.2、关闭被占用的端口:taskkill -PID 80 -F Nginx+Windows搭建域名访问环境: 1、修改本地host文件: 文件路径:C:\Windows\System32\drivers\etc -》hosts.etc 添加hosts文件中的域名映射:192.168.56.10 gulimall.com 最终版如下: # gulimall 127.0.0.1 gulimall.com 127.0.0.1 search.gulimall.com 127.0.0.1 item.gulimall.com 127.0.0.1 auth.gulimall.com 127.0.0.1 cart.gulimall.com 127.0.0.1 order.gulimall.com 127.0.0.1 member.gulimall.com 127.0.0.1 seckill.gulimall.com #gulimall-sso-test 127.0.0.1 ssoserver.com 127.0.0.1 client1.com 127.0.0.1 client2.com 2、修改nginx配置文件 1、cd /mydata/nginx/conf/ 2、vi nginx.conf 3、nginx配置文件挂载的外部文件(目录下文件会合并到nginx.conf文件中) 1、cd /mydata/nginx/conf/conf.d 2、vi gulimall.conf: location / { # proxy_pass http://192.168.56.1:10000; proxy_set_header Host $host; #解决nginx代理给网关的时候,丢失请求的host信息 proxy_pass http://gulimall; #配置上游服务器之后这样写 } 4、配置上游服务器 1、cd /mydata/nginx/conf/ 2、vi nginx.conf 3、在http块中添加如下: upstream gulimall{ server 192.168.56.1:88; } 5、重启nginx: docker restart nginx 3、测试:http://gulimall.com/ jmeter: 下载地址:https://jmeter.apache.org/download_jmeter.cgi 启动:D:\软件学习\DIY脚本\1.分布式基础(全栈开发篇)\apache-jmeter-5.4.1\bin -》双击jmeter.bat打开 添加模拟用户:Test Plan--》右键--》添加---》线程(用户)--》线程组 要测试什么:线程组--》右键--》添加--》取样器--》选择要测试的类别 察看结果树:线程组--》右键--》添加--》监听器--》察看结果树 汇总报告:线程组--》右键--》添加--》监听器--》汇总报告 聚合报告:线程组--》右键--》添加--》监听器--》聚合报告 测试页面的全量数据获取的性能(包括静态页面、JS、css、图片):HTTP请求--》高级--》勾选 从HTML文件获取所有内含的资源 --》勾选 并行下载.数量: 填写数据 --》运行查看性能数据 启动性能监控--》jvisualvm: cmd 进入命令提示符界面 --》jvisualvm --》回车即可启动 Nginx动静分离: 1、将静态资源放到虚拟主机的 /mydata/nginx/html/static 目录下 2、cd /mydata/nginx/conf/conf.d 3、vi gulimall.conf 4、添加如下配置: location /static/ { root /usr/share/nginx/html; } 5、重启nginx:[root@localhost conf.d]# docker restart nginx 6、浏览器访问 http://gulimall.com/ 即可看见效果(静态资源由nginx返回) rabbitmq: 安装命令:[root@localhost ~]# docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management 虚拟机开机启动命令:[root@localhost ~]# docker update rabbitmq --restart=always 访问rabbitmq管理端登录页:http://192.168.56.10:15672/ 账号:guest 密码:guest 启动多个同类型服务: IDEA中--》Run Dashboard 面板--》在要操作的微服务上右键--》Copy Configurations --》 Name:输入名字--》Program arguments:--server.port=10001 --》Apply --》OK --》即可启动使用 内网穿透: 1、https://www.zhexi.tech/ 2、配置nginx: 1)cd /mydata/nginx/conf/conf.d 2)vi gulimall.conf 3)新的配置如下(其中 21dc7e37cu.bjhttp.cn 为外网映射地址,location /payed/ {:为新添加的规则): server { listen 80; server_name gulimall.com *.gulimall.com 21dc7e37cu.bjhttp.cn; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location /static/ { root /usr/share/nginx/html; } location /payed/ { proxy_set_header Host order.gulimall.com; proxy_pass http://gulimall; } location / { proxy_set_header Host $host; #解决nginx代理给网关的时候,丢失请求的host信息 proxy_pass http://gulimall; #配置上游服务器之后这样写 } } 3、保存退出 4、重启nginx: docker restart nginx 5、com.tjh.gulimall.order.config.AlipayTemplate 文件中配置相应外网映射信息(private String notify_url = "http://21dc7e37cu.bjhttp.cn/payed/notify";) 笔记: 1.分布式基础(全栈开发篇): day01~day46(记录在后台gulimall各个微服务中,其中前端renren-fast-vue中记录day06、day11) 2.分布式高级篇(微服务架构篇): day47~day(day47:引入elasticsearch,day61:引入redis,day67:引入redisson,day74:引入spring cache,day100:引入springsession,day111:引入RabbitMQ,day126:引入Seata,day132:引入支付宝) 重点复习部分: 1、day62:使用缓存改造三级分类业务 2、day64:高并发下缓存失效问题:缓存穿透、击穿、雪崩 3、day65:加锁解决缓存击穿问题 4、day66:Redis分布式锁(重点) 5、day68:redisson分布式锁(重点) 6、day78:双写一致性-失效模式 7、day79:Spring-Cache的不足及解决方案 8、day92:线程池&异步编排(重点) 9、day100:整合springsession完成session共享问题 10、day102:单点登录 11、day104、day105、day106、day107、day108、day109、day110:购物车(重点) 12、day112、day113、day114、day115、day127:rabbitMQ的使用示例(重点) 13、day118:Feign远程调用丢失请求头问题解决方案 14、day123、day124:锁库存 15、day124、day125:分布式事务 16、day129、day130、day131:rabbitMQ的延时队列实现库存的锁定/解锁 17、day135、day136:秒杀商品上架 18、day138、day139:秒杀下单