1.测试fastdfs
在测试前要确保所有服务都已正常开启:
开启tomcat:root@yyj-virtual-machine:/opt/apache-tomcat-8.5.24/bin#
./startup.sh开启zookeeper: root@yyj-virtual-machine:/opt/zookeeper-3.4.11/bin#
./zkServer.sh start
root@yyj-virtual-machine:/opt/zookeeper-3.4.11/bin# ./zkServer.sh
status开启nginx: root@yyj-virtual-machine:/usr/local/nginx/sbin# ./nginx
启动tracker和storage sudo service fdfs_trackerd start sudo service
fdfs_trackerd status
- 在opt目录下新建一个图片文件,我这里是timg.jpg
- 执行
root@yyj-virtual-machine:/opt# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /opt/timg.jpg
出现下面的语句说明操作成功:
- 进入
/opt/fastdfs/data/00/00/
路径下(这里是文件上传后保存的路径),执行ls
:
说明文件确实上传成功了。 - 因为fastdfs本身不是http服务器,所以无法处理http协议的web请求,因此上面两个url直接在浏览器上访问是没办法看到效果的。
安装fdfs整合nginx的插件
- 解压插件:
root@yyj-virtual-machine:/opt# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
- 进入解压文件的src目录下,有两个配置文件:
第一个config是它自身的配置文件,第二个是需要拷贝到/etc/fdfs下的配置文件。 - 先修改自身的配置文件:
vi config
将这里的两处地方改一下,去掉local即可。 - 将第二个配置文件拷贝到/etc/fdfs/目录下:
root@yyj-virtual-machine:/opt/fastdfs-nginx-module/src# cp mod_fastdfs.conf /etc/fdfs/
然后修改/etc/fdfs/路径下的该配置文件:
root@yyj-virtual-machine:/etc/fdfs# vi mod_fastdfs.conf
有四处地方需要修改:
#软件安装目录
base_path=/opt/fastdfs
#Web的url是否包含group的路径名
url_have_group_name = true
#Tracker_server地址
tracker_server=192.168.37.132:22122
#上传文件地址
store_path0=/opt/fastdfs/fdfs_storage
安装nginx
-
解压nginx安装包
root@yyj-virtual-machine:/opt# tar -zxvf nginx-1.12.2.tar.gz
-
创建临时的目录/var/temp/nginx/client
root@yyj-virtual-machine:/usr/local/nginx/sbin# mkdir -p /var/temp/nginx/client
-
进入解压文件夹下,然后将下面命令粘贴运行,用于做web服务器,提供http请求
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/opt/fastdfs-nginx-module/src
这里有个坑。(–pid-path=/var/run/nginx/nginx.pid \)因为IP没有设置为静态IP,所以后面IP可能会变。
可以参考下面几篇文章进行解决:1、https://blog.csdn.net/qq_36937342/article/details/80876385?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
2、https://blog.csdn.net/qq_42975842/article/details/81705244?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
4. 执行make,make install指令
root@yyj-virtual-machine:/opt/nginx-1.12.2# make
root@yyj-virtual-machine:/opt/nginx-1.12.2# make install
5. 修改nginx.conf
vi /usr/local/nginx/conf/nginx.conf
6. 启动nginx
root@yyj-virtual-machine:/usr/local/nginx/sbin# ./nginx
./nginx: error while loading shared libraries: libfdfsclient.so: cannot open shared object file: No such file or directory
如果有上面的报错,解决办法:
root@yyj-virtual-machine:/usr/lib64# cp libfdfsclient.so /usr/lib
再次启动nginx
root@yyj-virtual-machine:/usr/local/nginx/sbin# ./nginx
ngx_http_fastdfs_set pid=55777
一切正常,此时浏览器访问之前上传图片的http:
nginx集群
一个tracker可以有很多storage,如果要有多个tracker,可以用nginx实现负载均衡。
nginx整合SpringBoot
1.通过git下载fdfs的客户端
https://github.com/happyfish100/fastdfs-client-java
2.将fdfs的客户端打包到本地maven仓库中
导入maven工程
然后在gmall-manage-web模块下的pom文件中引入fastdfs的依赖。
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.29-SNAPSHOT</version>
</dependency>
实现spu图片的上传工具类PmsUploadUtil.java
spu保存涉及到的数据结构
Pms_product_info
Pms_product_image
Pms_product_sale_attr
Pms_procuct_sale_attr_value
Pms_base_sale_attr
sku管理功能
Pms_Sku_info
Pms_sku_image(从已经添加的spu的图片库中选择,当前sku涉及的图片)
Pms_Sku_attr_value
Pms_Sku_sale_attr_value_
当前sku所关联的平台属性中间表
平台属性和销售属性的区别:
平台属性属于所有商品,由电商网站维护管理
销售属性属于商家,由商家来维护管理
添加sku
1 平台属性列表(平台属性+平台属性值双层集合)
http://127.0.0.1:8081/attrInfoList?catalog3Id=61
2 销售属性列表
http://127.0.0.1:8081/spuSaleAttrList?spuId=24
3 spu的图片列表
http://127.0.0.1:8081/spuImageList?spuId=24
4 保存spu信息
http://127.0.0.1:8081/saveSkuInfo
5 保存skuInfo
新建controller、service、mapper,增删改查。。。
小结:
今天的主要内容还是前面配置环境,后面涉及到代码部分的建议直接看代码来理解是如何将数据传给前端的。
代码仓库:https://github.com/gavin-yyj/gmall