zoukankan      html  css  js  c++  java
  • 人人开源框架学习笔记

    框架介绍

    三个框架

    人人框架总共分为三个,分别是: renren-security、 renren-fast、 renren-generator。

    根据官方的介绍,

    renren-security和renren-fast的区别

    官方介绍

    运行效果

    renren-security(开源版)在本机部署之后的页面:

    renren-fast 在本机部署之后的页面:

    差异总结

    它们之间的区别如下:

    • 功能上
      • security(开源版)比fast多了部门管理字典管理
      • fast支持多标签页打开和切换,security(开源版)只能打开一个标签页,不能通过标签页直接切换页面
    • 部署方式上,security是前后端一起部署的,而fast是前后端分开部署的
    • 页面风格上,security有AdminLTE和Layui两种主题,而fast有AdminLTE和Element UI两种主题

    renren-security三个版本的差异

    官方介绍

    运行效果

    renren-security开源版运行效果:

    renren-security企业常规版运行效果:

    renren-security企业专业版运行效果:

    差异总结

    • 功能上
      • 企业版比开源版多了登录日志异常日志
      • 企业版比开源版多支持了短信邮件发送邮件模板邮件发送记录Excel导出工作流富文本繁体中文、English 的国际化
      • 企业版比开源版在文件上传上额外支持腾讯云、FastDFS、本地存储
      • 企业版在 XSS过滤 、 功能权限 、 数据权限 、 Redis支持 、 swagger支持 、代码质量上表现更好
      • 开源版只能打开一个标签页,但是有面包屑导航;专业版可以打开多个标签页,但是没有面包屑导航
      • 企业专业版基于Token进行认证,企业常规版和开源版都基于Session进行认证
    • 部署方式上,企业专业版前后端分离部署
    • 页面风格上,开源版为 AdminLTE 主题,两个企业版都是 Element-ui 主题

    renren-security企业版和renren-fast的差异

    • 功能上, renren-security企业版相比renren-fast多了部门管理、字典管理、行政区域、工作流、消息管理、登录日志、异常日志

    renren-security开源版

    项目组成

    renren-security开源版有五个部分组成:

    • renren-common:公共模块,提供公共类和工具
    • renren-admin:管理后台模块,系统的核心部分,开发的后台管理系统
    • renren-api:接口模块,为移动端提供接口,不和admin模块共享用户
    • renren-generator:代码生成器,可以直接根据MySQL表生成CRUD的后台代码和前端页面
    • renren-dynamic-datasource

    项目部署

    环境准备

    JDK安装和配置

    https://www.cnblogs.com/nojacky/p/9497724.html

    1. 下载JDK
    2. 安装提示在指定位置安装JDK
    3. 配置环境变量
      • JAVA_HOME:Java的安装路径
      • CLASSPATH:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar
      • Path:%JAVA_HOME%in;(追加,要放第一位)

    MySQL的安装和配置

    https://www.runoob.com/mysql/mysql-install.html

    1. 下载MySQL

    2. 安装MySQL

      1. 解压MySQL

      2. 在解压目录下创建my.ini文件

        [client]
        # 设置mysql客户端默认字符集
        default-character-set=utf8
         
        [mysqld]
        # 设置3306端口
        port = 3306
        # 设置mysql的安装目录
        basedir=E:\tmp\MySQL\mysql-8.0.18-winx64
        # 允许最大连接数
        max_connections=20
        # 服务端使用的字符集默认为8比特编码的latin1字符集
        character-set-server=utf8
        # 创建新表时将使用的默认存储引擎
        default-storage-engine=INNODB
        
      3. CMD 到MySQL解压目录的bin目录下

      4. 执行命令:mysqld --initialize --console

      5. 执行命令:mysqld install

      6. 启动MySQL(net start mysql)

    3. 配置MySQL

      1. 使用初始密码按照提示进入MySQL
      2. 修改root的初始密码:set password for root@localhost = '123456';

    Maven的安装和配置

    https://www.runoob.com/maven/maven-setup.html

    1. 下载Maven
    2. 安装Maven
    3. 配置Maven
      • M2_HOME:maven解压目录
      • Path:%M2_HOME%in;(追加)

    Git的安装和配置

    1. 下载Git
    2. 安装Git

    将项目导入编辑器(IDEA)

    1. 下载和安装IDEA

    2. 配置IDEA的maven、git

      • maven

      • git

    3. 导入项目

      直接在IDEA中国通过GIT下载和导入

    运行项目

    数据库初始化准备(MySQL)

    1. 创建数据库:create database renren_security;
    2. 查看数据库:show create database renren_security;
    3. 指定数据库:use renren_security;
    4. 运行SQL文件: source C:UsersadminDownloads enrenio-renren-security-master enren-security enren-admindbmysql.sql;(source后面接sql文件的路径)

    启动renren-admin模块

    1. 修改配置文件:renren-security enren-adminsrcmain esourcesapplication-dev.yml

      spring:
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/renren_security?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
            ## 这里修改成本机MySQL的用户名和密码
            username: renren
            password: 123456
            initial-size: 10
            max-active: 100
            min-idle: 10
            max-wait: 60000
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            #Oracle需要打开注释
            #validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            stat-view-servlet:
              enabled: true
              url-pattern: /druid/*
              #login-username: admin
              #login-password: admin
            filter:
              stat:
                log-slow-sql: true
                slow-sql-millis: 1000
                merge-sql: false
              wall:
                config:
                  multi-statement-allow: true
      
      
      ##多数据源的配置,需要引用renren-dynamic-datasource
      #dynamic:
      #  datasource:
      #    slave1:
      #      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
      #      url: jdbc:sqlserver://localhost:1433;DatabaseName=renren_security
      #      username: sa
      #      password: 123456
      #    slave2:
      #      driver-class-name: org.postgresql.Driver
      #      url: jdbc:postgresql://localhost:5432/renren_security
      #      username: renren
      #      password: 123456
      
    2. 运行:renren-security enren-adminsrcmainjavaio enrenAdminApplication.java

    3. 访问: http://localhost:8080/renren-admin/login.html

    启动renren-api模块

    1. 修改数据库配置文件:renren-security enren-apisrcmain esourcesapplication-dev.yml

      spring:
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/renren_security?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
            ## 这里修改成本机MySQL的用户名和密码
            username: root
            password: 123456
            initial-size: 10
            max-active: 100
            min-idle: 10
            max-wait: 60000
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            #Oracle需要打开注释
            #validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            stat-view-servlet:
              enabled: true
              url-pattern: /druid/*
              #login-username: admin
              #login-password: admin
            filter:
              stat:
                log-slow-sql: true
                slow-sql-millis: 1000
                merge-sql: false
              wall:
                config:
                  multi-statement-allow: true
      
    2. 运行:renren-security enren-apisrcmainjavaio enrenApiApplication.java

    3. 访问: http://localhost:8081/renren-api/swagger-ui.html

    启动renren-generator模块

    1. 修改数据库配置文件:renren-security enren-generatorsrcmain esourcesapplication.yml

      server:
        port: 8082
        servlet:
          context-path: /renren-generator
      
      
      spring:
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          #MySQL配置
          driverClassName: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/renren_security?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          ## 这里修改成本机MySQL的用户名和密码
          username: root
          password: 123456
          #oracle配置
      #    driverClassName: oracle.jdbc.OracleDriver
      #    url: jdbc:oracle:thin:@192.168.10.10:1521:helowin
      #    username: renren
      #    password: 123456
          #SQLServer配置
      #    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
      #    url: jdbc:sqlserver://192.168.10.10:1433;DatabaseName=renren_security
      #    username: sa
      #    password: 123456
          #PostgreSQL配置
      #    driverClassName: org.postgresql.Driver
      #    url: jdbc:postgresql://192.168.10.10:5432/renren_security
      #    username: postgres
      #    password: 123456
        jackson:
          time-zone: GMT+8
          date-format: yyyy-MM-dd HH:mm:ss
        resources:
          static-locations: classpath:/static/,classpath:/views/
      
      
      mybatis:
        mapperLocations: classpath:mapper/**/*.xml
      
      
      pagehelper:
        reasonable: true
        supportMethodsArguments: true
        params: count=countSql
      
      
      #指定数据库,可选值有【mysql、oracle、sqlserver、postgresql】
      renren:
        database: mysql
      
    2. 运行:renren-security enren-generatorsrcmainjavaio enrenGeneratorApplication.java

    3. 访问: http://localhost:8082/renren-generator

    模块说明

    renren-common

    公共模块,项目中需要用到的工具类和公共服务。

    其内部的模块划分为:

    • 切面处理(aspect)
    • 相关配置(config)
    • 异常处理(exception)
    • 常用工具(utils)
    • 数据校验(validator)
    • 安全过滤(xss)

    renren-admin

    管理模块,项目主要的模块,也是基于security进行开发时使用的部分。

    内部的模块划分为:

    • 公共模块(common)
    • 其他功能模块
      • 系统权限(sys)
      • 任务管理(job)
      • 文件管理(oss)

    其每个模块的内部组成不相同,但总体上按照实体对象(io.renren.entity)、数据持久(io.renren.dao)、系统业务(io.renren.service)、数据接口(io.renren.controller)、其他配置(io.renren.config)、常用工具(io.renren.utils)的分类来进行。

    renren-api

    接口模块,项目中移动端的接口模块,有和admin模块独立的用户。

    内部的划分为:

    • 实体对象(io.renren.entity)
    • 数据持久(io.renren.dao)
    • 系统业务(io.renren.service)
    • 数据交互(io.renren.form、io.renren.controller)
    • 注解配置(io.renren.annotation)
    • 其他配置(io.renren.config)
    • 常用工具(io.renren.exception)
    • 安全拦截(io.renren.interceptor、io.renren.resolver)

    renren-generator

    代码生成器模块,更具数据库表生成对应的CRUD后端和前台代码,提高开发效率

    renren-dynamic-datasource

    多数据源配置模块,进行多个数据源的配置

    renren-fast

    项目组成

    • 公共模块:io.renren.common
    • 功能模块:io.renren.modules
      • 系统权限模块:io.renren.modules.sys
      • 系统接口模块:io.renren.modules.app
      • 系统任务模块:io.renren.modules.job
      • 文件服务模块:io.renren.modules.oss
    • 配置部分:io.renren.config
    • 数据源配置:io.renren.datasource

    项目部署

    环境准备

    JDK安装和配置

    https://www.cnblogs.com/nojacky/p/9497724.html

    1. 下载JDK
    2. 安装提示在指定位置安装JDK
    3. 配置环境变量
      • JAVA_HOME:Java的安装路径
      • CLASSPATH:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar
      • Path:%JAVA_HOME%in;(追加,要放第一位)

    MySQL的安装和配置

    https://www.runoob.com/mysql/mysql-install.html

    1. 下载MySQL

    2. 安装MySQL

      1. 解压MySQL

      2. 在解压目录下创建my.ini文件

        [client]
        # 设置mysql客户端默认字符集
        default-character-set=utf8
         
        [mysqld]
        # 设置3306端口
        port = 3306
        # 设置mysql的安装目录
        basedir=E:\tmp\MySQL\mysql-8.0.18-winx64
        # 允许最大连接数
        max_connections=20
        # 服务端使用的字符集默认为8比特编码的latin1字符集
        character-set-server=utf8
        # 创建新表时将使用的默认存储引擎
        default-storage-engine=INNODB
        
      3. CMD 到MySQL解压目录的bin目录下

      4. 执行命令:mysqld --initialize --console

      5. 执行命令:mysqld install(这里安装完成之后,会将MySQL的初始密码打印出来,后面要用初始密码登录MySQL)

      6. 启动MySQL:net start mysql

    3. 配置MySQL

      1. 使用初始密码按照提示进入MySQL
      2. 修改root的初始密码:set password for root@localhost = '123456';

    Maven的安装和配置

    https://www.runoob.com/maven/maven-setup.html

    1. 下载Maven
    2. 安装Maven
    3. 配置Maven
      • M2_HOME:maven解压目录
      • Path:%M2_HOME%in;(追加)

    Git的安装和配置

    1. 下载Git
    2. 安装Git

    将项目导入编辑器(IDEA)

    1. 下载和安装IDEA

    2. 配置IDEA的maven、git

      • maven

        image-20191106165259636

      • git

        image-20191106165434443

    3. 下载源码

      https://gitee.com/renrenio/renren-fast

    4. 导入项目

    运行项目(本机部署)

    https://gitee.com/renrenio/renren-fast

    数据库初始化准备(MySQL)

    1. 创建数据库:create database renren_fast;
    2. 查看数据库:show create database renren_fast;
    3. 指定数据库:use renren_fast;
    4. 运行SQL文件: source E: mpproject enren-fastdbmysql.sql;(source后面接sql文件的路径)

    部署后端

    1. 修改配置文件:renren-fastsrcmain esourcesapplication-dev.yml

      spring:
          datasource:
              type: com.alibaba.druid.pool.DruidDataSource
              druid:
                  driver-class-name: com.mysql.cj.jdbc.Driver
                  url: jdbc:mysql://localhost:3306/renren_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
                  ## 这里修改为本机数据库的用户名和密码
                  username: renren
                  password: 123456
                  initial-size: 10
                  max-active: 100
                  min-idle: 10
                  max-wait: 60000
                  pool-prepared-statements: true
                  max-pool-prepared-statement-per-connection-size: 20
                  time-between-eviction-runs-millis: 60000
                  min-evictable-idle-time-millis: 300000
                  #Oracle需要打开注释
                  #validation-query: SELECT 1 FROM DUAL
                  test-while-idle: true
                  test-on-borrow: false
                  test-on-return: false
                  stat-view-servlet:
                      enabled: true
                      url-pattern: /druid/*
                      #login-username: admin
                      #login-password: admin
                  filter:
                      stat:
                          log-slow-sql: true
                          slow-sql-millis: 1000
                          merge-sql: false
                      wall:
                          config:
                              multi-statement-allow: true
      
      
      ##多数据源的配置
      #dynamic:
      #  datasource:
      #    slave1:
      #      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
      #      url: jdbc:sqlserver://localhost:1433;DatabaseName=renren_security
      #      username: sa
      #      password: 123456
      #    slave2:
      #      driver-class-name: org.postgresql.Driver
      #      url: jdbc:postgresql://localhost:5432/renren_security
      #      username: renren
      #      password: 123456
      
    2. 启动项目,运行文件:renren-fastsrcmainjavaio enrenRenrenApplication.java

    3. 查看 Swagger文档 ,访问: http://localhost:8080/renren-fast/swagger/index.html

    4. 查看 Swagger注解 ,访问: http://localhost:8080/renren-fast/swagger-ui.html

    部署前端

    1. 环境准备:

      1. 下载和安装node(需要安装10.15.3版本)

        • 下载: http://nodejs.cn/download/

        • 安装: https://www.runoob.com/nodejs/nodejs-install-setup.html

          • 安装时选择【 Add to PATH 】安装(如果选择其他模式,在安装完成之后需要手动添加 NODE_PATH 的环境变量)

          • 安装完成后,在CMD中输入【node --version】验证是否安装成功

          • 安装成功后,需要配置npm插件的安装目录

            npm config set prefix "D:Program Files
            odejs"  //全局模块插件存放路径
            npm config set cache "D:Program Files
            odejs
            ode_cache"  //缓存路径
            
      2. 下载和安装nginx

    2. 下载前端源代码

      https://gitee.com/renrenio/renren-fast-vue

    3. 解压前端代码到指定的目录

    4. 安装依赖:CMD到解压目录,执行命令:npm install

    5. 启动服务:CMD到解压目录,执行命令:npm run dev

      注:启动时,提示没安装node-sass时需要先安装:npm install --save node-sass

    6. 打包项目:CMD到解压目录,执行命令:npm run build

      注:如果安装了其他node版本,使得打包项目的时候报错了,可以使用nvm控制node的版本: https://www.jianshu.com/p/d0e0935b150a

    7. 部署项目到nginx

      将打包的dist目录放置在nginx的html目录下

    8. 配置nginx

      配置文件:nginx-1.16.1conf ginx.conf

      #user  nobody;
      worker_processes  1;
      
      #error_log  logs/error.log;
      #error_log  logs/error.log  notice;
      #error_log  logs/error.log  info;
      
      #pid        logs/nginx.pid;
      
      
      events {
          worker_connections  1024;
      }
      
      
      http {
          include       mime.types;
          default_type  application/octet-stream;
      
          #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
          #                  '$status $body_bytes_sent "$http_referer" '
          #                  '"$http_user_agent" "$http_x_forwarded_for"';
      
          #access_log  logs/access.log  main;
      
          sendfile        on;
          #tcp_nopush     on;
      
          #keepalive_timeout  0;
          keepalive_timeout  65;
      
          #gzip  on;
      
          server {
          	## 修改端口号
              listen       80;
              server_name  localhost;
      
              #charset koi8-r;
      
              #access_log  logs/host.access.log  main;
      
      		## 修改项目路径
              location / {
                  root   html/dist;
                  index  index.html index.htm;
              }
      
              #error_page  404              /404.html;
      
              # redirect server error pages to the static page /50x.html
              #
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
      
              # proxy the PHP scripts to Apache listening on 127.0.0.1:80
              #
              #location ~ .php$ {
              #    proxy_pass   http://127.0.0.1;
              #}
      
              # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
              #
              #location ~ .php$ {
              #    root           html;
              #    fastcgi_pass   127.0.0.1:9000;
              #    fastcgi_index  index.php;
              #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
              #    include        fastcgi_params;
              #}
      
              # deny access to .htaccess files, if Apache's document root
              # concurs with nginx's one
              #
              #location ~ /.ht {
              #    deny  all;
              #}
          }
      
      
          # another virtual host using mix of IP-, name-, and port-based configuration
          #
          #server {
          #    listen       8000;
          #    listen       somename:8080;
          #    server_name  somename  alias  another.alias;
      
          #    location / {
          #        root   html;
          #        index  index.html index.htm;
          #    }
          #}
      
      
          # HTTPS server
          #
          #server {
          #    listen       443 ssl;
          #    server_name  localhost;
      
          #    ssl_certificate      cert.pem;
          #    ssl_certificate_key  cert.key;
      
          #    ssl_session_cache    shared:SSL:1m;
          #    ssl_session_timeout  5m;
      
          #    ssl_ciphers  HIGH:!aNULL:!MD5;
          #    ssl_prefer_server_ciphers  on;
      
          #    location / {
          #        root   html;
          #        index  index.html index.htm;
          #    }
          #}
      
      }
      
    9. 启动nginx

      运行ngnix安装根目录下的nginx.exe文件

      • 双击运行

      • CMD运行

        cd到nginx的安装目录,执行命令:nginx

    10. 访问项目

      使用nginx中配置的端口号访问项目,默认为 http://localhost/

    11. 停止项目

      CMD到nginx的安装目录,执行命令:nginx -s stop或者nginx -s quit

    模块说明

    公共模块(io.renren.common)

    包括常用的工具类和安全校验,包含了系统常用的类和其他模块可复用的类,具体包括:

    • 注解配置:io.renren.common.annotation
    • 切面处理:io.renren.common.aspect
    • 异常处理:io.renren.common.exception
    • 常用工具:io.renren.common.utils
    • 数据校验:io.renren.common.validator
    • 安全防护:io.renren.common.xss

    配置模块(io.renren.config)

    包括常用的配置,如Redis配置、Shiro配置、Swagger配置等。

    数据源配置(io.renren.datasource)

    数据源配置,进行了多数据源的配置和处理,具体包括:

    • 注解配置:io.renren.datasource.annotation
    • 切面处理:io.renren.datasource.aspect
    • 数据源配置:io.renren.datasource.config
    • 数据源属性:io.renren.datasource.properties

    功能模块(io.renren.modules)

    权限管理模块(io.renren.modules.sys)

    系统权限管理模块,包含系统常见的系统配置管理、用户管理、角色管理、菜单管理、日志管理、验证码管理、用户角色菜单关系管理,包括:

    • 实体对象:io.renren.modules.sys.entity
    • 数据持久:io.renren.modules.sys.dao
    • 系统业务:io.renren.modules.sys.service
    • 视图交互:io.renren.modules.sys.controller、io.renren.modules.sys.form
    • 其他配置:io.renren.modules.sys.oauth2、io.renren.modules.sys.redis

    接口管理模块(io.renren.modules.app)

    接口管理模块,拥有一套独立的用户体系,包含了常见的用户登录、注册、验证等,包括:

    • 实体对象:io.renren.modules.app.entity
    • 数据持久:io.renren.modules.app.dao
    • 系统业务:io.renren.modules.app.service
    • 视图交互:io.renren.modules.app.controller、io.renren.modules.app.form
    • 注解配置:io.renren.modules.app.annotation
    • 常用工具:io.renren.modules.app.utils
    • 安全拦截:io.renren.modules.app.interceptor、io.renren.modules.app.resolver

    任务管理模块(io.renren.modules.job)

    定时任务管理模块,包含定时任务和定时任务日志,包括:

    • 实体对象:io.renren.modules.job.entity
    • 数据持久:io.renren.modules.job.dao
    • 系统业务:io.renren.modules.job.service
    • 视图交互:io.renren.modules.job.controller
    • 常见工具:io.renren.modules.job.utils
    • 定时任务:io.renren.modules.job.task

    文件管理模块(io.renren.modules.oss)

    文件存储管理模块,包含文件上传管理、云存储管理和配置,包括:

    • 实体对象:io.renren.modules.oss.entity
    • 数据持久:io.renren.modules.oss.dao
    • 系统业务:io.renren.modules.oss.service
    • 视图交互:io.renren.modules.oss.controller
    • 云存储配置:io.renren.modules.oss.cloud
  • 相关阅读:
    Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
    初探Java设计模式5:一文了解Spring涉及到的9种设计模式
    初探Java设计模式4:一文带你掌握JDK中的设计模式
    初探Java设计模式3:行为型模式(策略,观察者等)
    初探Java设计模式2:结构型模式(代理模式,适配器模式等)
    初探Java设计模式1:创建型模式(工厂,单例等)
    [转] <context-param>与<init-param>的区别与作用
    [转]servlet配置中init-param
    [转]Spring 中的p标签
    [转]Spring Security学习总结二
  • 原文地址:https://www.cnblogs.com/hutianyao/p/13254697.html
Copyright © 2011-2022 走看看