一、环境
虚拟机ip192.168.174.128 本地ip192.168.31.14 本地和虚拟机要互相ping通
二、Docker
(资料图片)
虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间互相隔离。 安装 docker Docker 安装文档:https://docs.docker.com/install/linux/docker-ce/centos/
1、卸载系统之前的 docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2、安装 Docker-CE
安装必须的依赖
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
设置 docker repo 的 yum 位置
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
安装 docker,以及 docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io
3、启动 docker
sudo systemctl start docker
4、设置 docker 开机自启
sudo systemctl enable docker
5、测试 docker 常用命令,注意切换到 root 用户下
https://docs.docker.com/engine/reference/commandline/docker/
6、配置 docker 镜像加速
阿里云,容器镜像服务 针对 Docker 客户端版本大于 1.10.0 的用户 您可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-"EOF" {"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart
三、docker 安装 mysql
1、下载镜像文件
docker pull mysql:5.7
2、创建实例并启动
docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7
参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
MySQL 配置
vi /mydata/mysql/conf/my.cnf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect="SET collation_connection = utf8_unicode_ci" init_connect="SET NAMES utf8" character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
注意:解决 MySQL 连接慢的问题在配置文件中加入如下,并重启 mysql[mysqld]skip-name-resolve解释:skip-name-resolve:跳过域名解析
3、通过容器的 mysql 命令行工具连接
docker exec -it mysql mysql -uroot -proot
4、设置 root 远程访问
grant all privileges on *.* to "root"@"%" identified by "root" with grant option;flush privileges;
5、进入容器文件系统
docker exec -it mysql /bin/bash
四、docker 安装 redis
1、下载镜像文件
docker pull redis
2、创建实例并启动
mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /etc/redis/redis.conf
redis 自描述文件: https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf
3、使用 redis 镜像执行 redis-cli 命令连接
docker exec -it
五、开发环境统一(在maven的setting.xml修改两处配置)
1、Maven配置阿里云镜像
nexus-aliyuncentralNexus aliyunhttp://maven.aliyun.com/nexus/content/groups/public
2、配置 jdk1.8 编译项目
jdk-1.8true1.81.81.81.8
3、Idea&VsCode
idea 安装 lombok、mybatisx 插件Vscode 安装开发必备插件Vetur —— 语法高亮、智能感知、Emmet 等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)EsLint —— 语法纠错Auto Close Tag —— 自动闭合 HTML/XML 标签Auto Rename Tag —— 自动完成另一侧标签的同步修改JavaScript(ES6) code snippets — — ES6 语 法 智 能 提 示 以 及 快 速 输 入 , 除 js 外 还 支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式HTML Snippets —— html 快速自动补全Open in browser —— 浏览器快速打开Live Server —— 以内嵌服务器方式打开Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包
安装的插件
4、安装配置 git
①、下载 git;https://git-scm.com ②、配置 git,进入 git bash 配置用户名
git config --global user.name "username" //(名字)
配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)
③、配置 ssh 免密登录 https://gitee.com/help/articles/4181#article-header0 进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车。一般用户目录下会有下面两个文件。
或者 cat ~/.ssh/id_rsa.pub 登录进入 gitee,在设置里面找到 SSH KEY 将.pub 文件的内容粘贴进去 使用 ssh -T git@gitee.com 测试是否成功即可
Git+码云教程 https://gitee.com/help/articles/410
六、在码云创建仓库
项目拉下来之后
七、创建项目微服务
商品服务、仓储服务、订单服务、优惠券服务、用户服务 共同: 1)、web、openfeign 2)、每一个服务,包名 com.atguigu.gulimall.xxx(product/order/ware/coupon/member) 3)、模块名:gulimall-product
创建完各个模块之后的项目结构图
八、导入数据库
码云地址:https://gitee.com/GeneralKid/gulimail
九、人人项目
1、下载人人项目
在码云上搜索人人开源,我们使用renren-fast(后端)、renren-fast-vue(前端)项目。
https://gitee.com/renrenio
git clone https://gitee.com/renrenio/renren-fast.git git clone https://gitee.com/renrenio/renren-fast-vue.git
下载到了桌面,我们把renren-fast移动到我们的项目文件夹(删掉.git文件),而renren-vue是用VSCode打开的(后面再弄)
在IDEA项目里的pom.xml添加一个renrnen-fast
gulimall-coupongulimall-membergulimall-ordergulimall-productgulimall-warerenren-fast
然后打开renren-fast/db/mysql.sql,复制全部,在sqlyog中创建库guli-admin,粘贴刚才的内容执行。
然后修改项目里renren-fast中的application.yml,修改application-dev.yml中的数库库的url,通常把localhost修改为192.168.174.128即可。
url: jdbc:mysql://192.168.174.128:3306/guli_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456
运行该java项目下的RenrenApplication
浏览器输入http://localhost:8080/renren-fast/ 得到{“msg”:“invalid token”,“code”:401}就代表无误
2、人人vue(npm)
用VSCode打开renren-fast-vue(如果自己搭建的话),如果是运行完整的代码,可以去课件里找gulimall-admin-vue-app
安装node:http://nodejs.cn/download/ 选择windows下载。下载完安装。
NPM是随同NodeJS一起安装的包管理工具。JavaScript-NPM类似于java-Maven。
命令行输入node -v检查配置好了,配置npm的镜像仓库地址,再执行
node -vnpm config set registry http://registry.npm.taobao.org/
然后去VScode的项目终端中输入 npm install,是要去拉取依赖(package.json类似于pom.xml的dependency),但是会报错
3、P16 npm install解决报错问题
摘自哔哩哔哩评论,亲测有效
关于新谷粒P16的前端项目使用npm install报错的问题,首先确保安装了python3.0以上版本,并配置全局变量其次大部分错误是报node-sass4.9.0安装失败。执行以下步骤可以完美解决首先把项目文件夹下的package.json里面的node-sass4.9.0改成4.9.2(不改可能也没关系,不过我改了,防止踩坑)然后项目文件夹下打开cmd命令窗口(和Visual Studio Code的终端命令是一样的)执行:npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/执行成功看看有没有报错,如果没报错执行下面命令npm install ,没报错就是安装成功,然后使用npm run dev 就ok了注:这么做得原理就是先单独从淘宝镜像吧nod-sass下载下来,然后再进行编译,因为这句命令好像是不成功的,(npm config set registry http://registry.npm.taobao.org/),默认从github下载,导致报错的如果之前安装失败的。先清理 缓存清理缓存:npm rebuild node-sassnpm uninstall node-sass
4、启动fast-vue项目
npm run dev
账号密码都是admin
十、人人项目-逆向工程
1、逆向工程搭建
git clone https://gitee.com/renrenio/renren-generator.git
下载到桌面后,同样把里面的.git文件删除,然后移动到我们IDEA项目目录中,同样配置好pom.xml
gulimall-coupongulimall-membergulimall-ordergulimall-productgulimall-warerenren-fastrenren-generator
在maven中刷新一下,reimport重新导入依赖。
修改application.yml
url: jdbc:mysql://192.168.174.128:3306/gulimall-pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456
然后修改generator.properties(这里乱码的百度IDEA设置properties编码)
# 主目录mainPath=com.atguigu#包名package=com.atguigu.gulimall#模块名moduleName=product#作者author=zxl#表前缀(类名不会包含表前缀) # 我们的pms数据库中的表的前缀都pms# 如果写了表前缀,每一张表对于的javaBean就不会添加前缀了tablePrefix=pms_
运行RenrenApplication。如果启动不成功,修改application中是port为801。访问http://localhost:801/
在网页上下方点击每页显示50个(pms库中的表),以让全部都显示,然后点击全部,点击生成代码。下载了压缩包
解压压缩包,把main放到gulimall-product的同级目录下。
2、common项目
然后在项目上右击(在项目上右击很重要)new modules— maven—然后在name上输入gulimall-common。
在pom.xml中也自动添加了gulimall-common
在common项目的pom.xml中添加
com.baomidoumybatis-plus-boot-starter3.3.2org.projectlomboklombok1.18.8org.apache.httpcomponentshttpcore4.4.13commons-langcommons-lang2.6
我们把每个微服务里公共的类和依赖放到common里。
然后在product项目中的pom.xml中加入下面内容,作为common的子项目
com.atguigu.gulimallgulimall-common0.0.1-SNAPSHOT
复制
renren-fast----utils包下的Query和PageUtils、R、Constant复制到common项目的java/com.atguigu.common.utils下。
把@RequiresPermissions这些注解掉,因为是shiro的
复制renren-fast中的xss包粘贴到common的com.atguigu.common目录下。
注释掉product项目下类中的//import org.apache.shiro.authz.annotation.RequiresPermissions;,这是shiro的东西
注释renren-generator\src\main\resources\template/Controller中所有的@RequiresPermissions。## import org.apache.shiro.authz.annotation.RequiresPermissions;
总之什么报错就去fast里面找。重启逆向工程。重新在页面上得到压缩包。重新解压出来,不过只把里面的controller复制粘贴到product项目对应的目录就行。
测试
测试与整合商品服务里的mybatisplus
在common的pom.xml中导入
mysqlmysql-connector-java8.0.17javax.servletservlet-api2.5provided
删掉common里xss/xssfiler和XssHttpServletRequestWrapper
在product项目的resources目录下新建application.yml
spring: datasource: username: root password: root url: jdbc:mysql://192.168.174.128:3306/gulimall-pms driver-class-name: com.mysql.jdbc.Driver# MapperScan# sql映射文件位置mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto
然而执行后能通过,但是数据库中文显示乱码,所以我模仿逆向工程,把上面的配置url改为
url: jdbc:mysql://192.168.174.128:3306/guli_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
正常了。
然后在主启动类上加上注解@MapperScan()
@MapperScan("com.atguigu.gulimall.product.dao")@SpringBootApplicationpublic class gulimallProductApplication {public static void main(String[] args) {SpringApplication.run(gulimallProductApplication.class, args); }}
然后去测试,先通过下面方法给数据库添加内容
@SpringBootTestclass gulimallProductApplicationTests {@Autowired BrandService brandService; @Test void contextLoads() {BrandEntity brandEntity = new BrandEntity(); brandEntity.setDescript("哈哈1哈"); brandEntity.setName("华为"); brandService.save(brandEntity); System.out.println("保存成功"); }}
在数据库中就能看到新增数据了
@SpringBootTestclass gulimallProductApplicationTests {@Autowired BrandService brandService; @Test void contextLoads() {BrandEntity brandEntity = new BrandEntity(); brandEntity.setBrandId(1L); brandEntity.setDescript("修改"); brandService.updateById(brandEntity); }}
3、coupon
优惠券服务。重新打开generator逆向工程,修改generator.properties
# 主目录mainPath=com.atguigu#包名package=com.atguigu.gulimall#模块名moduleName=coupon#作者autho=zxl#表前缀(类名不会包含表前缀) # 我们的pms数据库中的表的前缀都pms# 如果写了表前缀,每一张表对于的javaBean就不会添加前缀了tablePrefix=sms_
修改yml数据库信息
spring: datasource: username: root password: root url: jdbc:mysql://192.168.174.128:3306/gulimall-sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto logic-delete-value: 1 logic-not-delete-value: 0 server: port: 7000
其他项目以此类推,按照视频来做