框架介紹
三個框架
人人框架總共分為三個,分別是: renren-security、 renren-fast、 renren-generator。
根據官方的介紹,
- renren-security: 輕量級權限管理系統 https://gitee.com/renrenio/renren-security
- renren-fast : Java快速開發平台 https://gitee.com/renrenio/renren-fast
- renren-generator : 代碼生成器 https://gitee.com/renrenio/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
- 下載JDK
- 安裝提示在指定位置安裝JDK
- 配置環境變量
- JAVA_HOME:Java的安裝路徑
- CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
- Path:%JAVA_HOME%\bin;(追加,要放第一位)
MySQL的安裝和配置
https://www.runoob.com/mysql/mysql-install.html
-
下載MySQL
-
安裝MySQL
-
解壓MySQL
-
在解壓目錄下創建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
-
CMD 到MySQL解壓目錄的bin目錄下
-
執行命令:mysqld --initialize --console
-
執行命令:mysqld install
-
啟動MySQL(net start mysql)
-
-
配置MySQL
- 使用初始密碼按照提示進入MySQL
- 修改root的初始密碼:set password for root@localhost = '123456';
Maven的安裝和配置
https://www.runoob.com/maven/maven-setup.html
- 下載Maven
- 安裝Maven
- 配置Maven
- M2_HOME:maven解壓目錄
- Path:%M2_HOME%\bin;(追加)
Git的安裝和配置
- 下載Git
- 安裝Git
將項目導入編輯器(IDEA)
-
下載和安裝IDEA
-
配置IDEA的maven、git
-
maven
-
git
-
-
導入項目
直接在IDEA中國通過GIT下載和導入
-
運行項目
數據庫初始化准備(MySQL)
- 創建數據庫:create database renren_security;
- 查看數據庫:show create database renren_security;
- 指定數據庫:use renren_security;
- 運行SQL文件: source C:\Users\admin\Downloads\renrenio-renren-security-master\renren-security\renren-admin\db\mysql.sql;(source后面接sql文件的路徑)
啟動renren-admin模塊
-
修改配置文件:renren-security\renren-admin\src\main\resources\application-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
-
運行:renren-security\renren-admin\src\main\java\io\renren\AdminApplication.java
啟動renren-api模塊
-
修改數據庫配置文件:renren-security\renren-api\src\main\resources\application-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
-
運行:renren-security\renren-api\src\main\java\io\renren\ApiApplication.java
啟動renren-generator模塊
-
修改數據庫配置文件:renren-security\renren-generator\src\main\resources\application.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
-
運行:renren-security\renren-generator\src\main\java\io\renren\GeneratorApplication.java
模塊說明
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
- 下載JDK
- 安裝提示在指定位置安裝JDK
- 配置環境變量
- JAVA_HOME:Java的安裝路徑
- CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
- Path:%JAVA_HOME%\bin;(追加,要放第一位)
MySQL的安裝和配置
https://www.runoob.com/mysql/mysql-install.html
-
下載MySQL
-
安裝MySQL
-
解壓MySQL
-
在解壓目錄下創建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
-
CMD 到MySQL解壓目錄的bin目錄下
-
執行命令:mysqld --initialize --console
-
執行命令:mysqld install(這里安裝完成之后,會將MySQL的初始密碼打印出來,后面要用初始密碼登錄MySQL)
-
啟動MySQL:net start mysql
-
-
配置MySQL
- 使用初始密碼按照提示進入MySQL
- 修改root的初始密碼:set password for root@localhost = '123456';
Maven的安裝和配置
https://www.runoob.com/maven/maven-setup.html
- 下載Maven
- 安裝Maven
- 配置Maven
- M2_HOME:maven解壓目錄
- Path:%M2_HOME%\bin;(追加)
Git的安裝和配置
- 下載Git
- 安裝Git
將項目導入編輯器(IDEA)
-
下載和安裝IDEA
-
配置IDEA的maven、git
-
maven
-
git
-
-
下載源碼
-
導入項目
-
直接在IDEA中國通過GIT下載和導入
-
先下載源碼再導入
-
運行項目(本機部署)
https://gitee.com/renrenio/renren-fast
數據庫初始化准備(MySQL)
- 創建數據庫:create database renren_fast;
- 查看數據庫:show create database renren_fast;
- 指定數據庫:use renren_fast;
- 運行SQL文件: source E:\tmp\project\renren-fast\db\mysql.sql;(source后面接sql文件的路徑)
部署后端
-
修改配置文件:renren-fast\src\main\resources\application-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
-
啟動項目,運行文件:renren-fast\src\main\java\io\renren\RenrenApplication.java
-
查看 Swagger文檔 ,訪問: http://localhost:8080/renren-fast/swagger/index.html
-
查看 Swagger注解 ,訪問: http://localhost:8080/renren-fast/swagger-ui.html
部署前端
-
環境准備:
-
下載和安裝node(需要安裝10.15.3版本)
-
安裝: 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\nodejs" //全局模塊插件存放路徑 npm config set cache "D:\Program Files\nodejs\node_cache" //緩存路徑
-
-
下載和安裝nginx
-
-
下載前端源代碼
-
解壓前端代碼到指定的目錄
-
安裝依賴:CMD到解壓目錄,執行命令:npm install
-
啟動服務:CMD到解壓目錄,執行命令:npm run dev
注:啟動時,提示沒安裝node-sass時需要先安裝:npm install --save node-sass
-
打包項目:CMD到解壓目錄,執行命令:npm run build
注:如果安裝了其他node版本,使得打包項目的時候報錯了,可以使用nvm控制node的版本: https://www.jianshu.com/p/d0e0935b150a
-
部署項目到nginx
將打包的dist目錄放置在nginx的html目錄下
-
配置nginx
配置文件:nginx-1.16.1\conf\nginx.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; # } #} }
-
啟動nginx
運行ngnix安裝根目錄下的nginx.exe文件
-
雙擊運行
-
CMD運行
cd到nginx的安裝目錄,執行命令:nginx
-
-
訪問項目
使用nginx中配置的端口號訪問項目,默認為 http://localhost/
-
停止項目
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