zhangbincheng1997 / mall

SpringBoot + Layui 电子商城系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mall

前端技术

web-layui

  1. Layui
  2. 模板
  3. 😄 ! 注意config.js文件,全局配置

alt text

alt text

后端技术

技术 说明
Spring Framework IoC(控制反转)、AOP(面向切面)
Spring Boot MVC框架
Spring Security 安全框架
JWT 单点登录
Druid 数据库连接池
MyBatis 数据库框架
MyBatis Plus 数据库增强框架
MySQL 关系型数据库
Redis 缓存型数据库
RocketMQ 消息队列
QiNiu 对象存储
Swagger 文档接口
LogStash 日志收集
Hutool Java工具类库
Lombok 简化对象封装工具(需要安装IDEA插件)

结构

mall:
----mall-mbg: 数据库生成
----mall-common: 基础模块
----mall-security: 用户认证
----mall-app: 商城后端开发
----mall-admin: 管理后端开发

启动

支付宝沙箱

alt text

# 内网穿透
$ ssh -NR 8888:127.0.0.1:8080 root@www.littleredhat1997.com

# 保持连接
$ vim /etc/ssh/sshd_config
+ ClientAliveInterval 60
+ ClientAliveCountMax 10

MySQL

  1. 安装(略,或直接安装LNMP

  2. 配置外网访问

$ vim /etc/my.cnf
+ [mysqld]
+ port = 3306
+ bind-address = 0.0.0.0

$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'; 
mysql> FLUSH PRIVILEGES;
  1. 启动/关闭
$ service mysql start
$ service mysql stop

Redis

  1. 安装
$ yum install redis
  1. 配置外网访问
$ vim /etc/redis.conf
+ bind 127.0.0.1         ----> # bind 127.0.0.1
+ protected-mode yes     ----> protected-mode no
+ # requirepass foobared ----> requirepass 123456
+ daemonize no           ----> daemonize yes
  1. 启动/关闭
$ redis-server 或者 ($ redis-server /etc/redis.conf)
$ redis-cli shutdown

RocketMQ

  1. 安装
$ wget https://archive.apache.org/dist/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip
$ unzip rocketmq-all-4.7.0-bin-release.zip
$ mv rocketmq-all-4.7.0-bin-release rocketmq
$ mv rocketmq /usr/local

$ vim /etc/profile
+ export PATH=$PATH:/usr/local/rocketmq/bin
+ export NAMESRV_ADDR=localhost:9876

$ source /etc/profile
  1. 启动/关闭
$ mqnamesrv &
$ mqbroker -n localhost:9876 &

$ mqshutdown broker
$ mqshutdown namesrv

# 外网访问
$ vim /usr/local/rocketmq/conf/broker.conf
+ namesrvAddr=www.littleredhat1997.com:9876
+ brokerIP1=www.littleredhat1997.com

# 后台运行
$ nohup mqnamesrv &
$ nohup mqbroker -c /usr/local/rocketmq/conf/broker.conf &
  1. 报错解决
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)

$ cd /usr/local/rocketmq/bin/

$ vim runserver.sh
- JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
+ JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

$ vim runbroker.sh
- JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
+ JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"

Tomcat

  1. 安装
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
$ tar -zxvf apache-tomcat-9.0.30.tar.gz
$ mv apache-tomcat-9.0.30 tomcat
$ mv tomcat /usr/local
  1. 启动/关闭
$ cd /usr/local/tomcat
$ ./bin/start.sh
$ ./bin/stop.sh

端口开放

# 修改端口
$ vim /etc/sysconfig/iptables
# 重启端口
$ service iptables restart
# 查看端口
$ iptables -L -n

Spring Security

Filter -> Interceptor -> Aspect -> Controller
OncePerRequestFilter 重复执行的filter只需要一次执行

1. AbstractUserDetailsAuthenticationProvider.java
     private class DefaultPostAuthenticationChecks implements UserDetailsChecker
         -> isAccountNonLocked() -> isEnabled() -> isAccountNonExpired()
2. DaoAuthenticationProvider.java
     protected void additionalAuthenticationChecks
         -> check username and password
3. AbstractUserDetailsAuthenticationProvider.java
     private class DefaultPreAuthenticationChecks implements UserDetailsChecker
         -> isCredentialsNonExpired()

USERNAME_NOT_FOUND(1004, "认证失败:用户名不存在"),
BAD_CREDENTIALS(1005, "认证失败:密码错误"),
ACCOUNT_DISABLED(1006, "认证失败:用户不可用"),
ACCOUNT_LOCKED(1007, "认证失败:用户锁定"),
ACCOUNT_EXPIRED(1008, "认证失败:用户过期"),
CREDENTIALS_EXPIRED(1009, "认证失败:证书过期"),

压力测试

JMeter

项目 QPS Time
MySQL 200 ≈2s
Redis 5000 <10ms
其他说明 CPU8核16线程 内存16G*2

参考链接

About

SpringBoot + Layui 电子商城系统


Languages

Language:Java 37.2%Language:JavaScript 36.1%Language:HTML 15.0%Language:CSS 11.7%