开源项目学习之(一)------zheng环境搭建

一、项目简介


17年初就接触了zheng这个项目,感觉挺牛的,看他的架构图就知道了


现在都已经18年了,时间好快,特此记录下zheng的环境搭建,虽然,先看下码云上zheng的简介吧:https://gitee.com/shuzheng/zheng

zheng是基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。


二、导入项目


导入项目的方式有两种,一种是通过git,一种是直接下载源码然后导入到IDEA中,我这里以下载源码来演示,下载之后的源码如下:


有如下一些模块:


zheng-common--公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等
zheng-admin--通用后台管理系统,zheng项目所有后台系统都是使用该模块界面作为前端展示。
zheng-ui--各个子系统前台thymeleaf模板,前端资源模块,使用nginx代理,实现动静分离。
zheng-upms--基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。
zheng-cms--内容管理系统
zheng-oss--文件存储系统
zheng-ucenter--通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。
zheng-wechat-mp--微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理、消息群发等基础功能外,还有二维码推广、营销活动、微网站、会员卡、优惠券等。
zheng-wechat-app--微信小程序后台
zheng-pay--一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。
zheng-api--服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。


然后打开IDEA---->File---->New---->Module from Existing Sources导入一个存在的Module





然后点击Finsh.导入成功之后,如下:


找到每个项目的跟pom.xml更新下依赖:


然后下载zheng-common中的依赖


三、环境搭建


要想成功运行项目,必须要安装一下一些工具:

1、JDK
2、Mysql
3、maven
4、Redis
5、Zookeeper
6、ActiveMQ
7、Nginx


4、Redis安装


至于JDK,Mysql,maven,的安装太简单了,这里就不演示了,Redis安装如下,去github下载最新的安装包:https://github.com/MSOpenTech/redis/releases


下载Redis-x64-3.2.100-windows.msi安装过程比较简单,一路next就可以了。然后还得安装Redis可视化工具Redis Desktop Manager下载地址如下:https://redisdesktop.com/download



选择最新的版本进行下载、下载之后,然后进行安装





安装之后,打开软件



这里要登录密码,由于我装的是安装版,以下是设置密码,在CMD下:

[java] view plain copy
  1. config get requirepass //获取当前密码  
  2. config set requirepass "root"//设置当前密码,服务重新启动后又会置为默认,即无密码;不建议此种方式  


5、Zookeeper安装


首先去官网下载:http://www.apache.org/dyn/closer.cgi/zookeeper/




选择3.5.2版本。


6、ActiveMQ


官网下载地址为:http://activemq.apache.org/download-archives.html 选择最新版本进行下载


这里选择5.9.0版本进行下载。


7、Nginx


官网下载地址为:http://nginx.org/



四、运行项目


A.后台启动顺序:


(一)、初始化数据库


下面就是启动项目了,在启动项目前还得准备下,首先新建zheng数据库


导入project-datamodel文件夹下的zheng.sql


工具使用的是navicat for premium


导入成功之后,有如下表


(二)、数据库连接配置工作


修改各模块下profiles的数据库连接等配置信息


有如下一些module下有这些配置文件

如下这种密码使用了AES加密,使用com.zheng.common.util.AESUtil工具类修改这些值


在zheng-upms中有个generator.properties


AESUtil使用如下,替换其中的root为数据库密码,然后运行就会有以下信息输出:



比如我这里redis和mysql都是root,所有我把密码修改成如下的密码:



(三)、修改本地Host


进入到"C:\Windows\System32\drivers\etc"目录下:



[java] view plain copy
  1. 127.0.0.1 ui.zhangshuzheng.cn  
  2. 127.0.0.1 upms.zhangshuzheng.cn  
  3. 127.0.0.1 cms.zhangshuzheng.cn  
  4. 127.0.0.1 pay.zhangshuzheng.cn  
  5. 127.0.0.1 ucenter.zhangshuzheng.cn  
  6. 127.0.0.1 wechat.zhangshuzheng.cn  
  7. 127.0.0.1 api.zhangshuzheng.cn  
  8. 127.0.0.1 oss.zhangshuzheng.cn  
  9. 127.0.0.1 config.zhangshuzheng.cn  
  10. 127.0.0.1 zkserver  
  11. 127.0.0.1 rdserver  
  12. 127.0.0.1 dbserver  
  13. 127.0.0.1 mqserver  

(四)、启动并运行相关程序工作


我把有关的工具都解压到该目录下了:



1.启动Zookeeper


进入到zookeeper的bin目录,双击zkServer.cmd启动服务。


启动成功之后,输入信息如下:



2、启动ActiveMQ:


1)进入MQ的bin目录D:\zheng_start\apache-activemq-5.9.0-bin\apache-activemq-5.9.0\bin\win64,双击activemq.bat


启动成功之后



2)在浏览器中输入http://localhost:8161/admin/输入默认的admin admin

3)出现这样的界面则MQ安装成功。


3、启动Nginx


在zheng/project-tools/nginx下提供了ngxin的一些配置


将这两个文件复制到nginx/conf下


修改其中的项目路径:




或者可以直接修改nginx.conf为如下内容:

[html] view plain copy
  1. #user  nobody;  
  2. worker_processes  1;  
  3.   
  4. #error_log  logs/error.log;  
  5. #error_log  logs/error.log  notice;  
  6. #error_log  logs/error.log  info;  
  7.   
  8. #pid        logs/nginx.pid;  
  9.   
  10.   
  11. events {  
  12.     worker_connections  1024;  
  13. }  
  14.   
  15.   
  16. http {  
  17.     include       mime.types;  
  18.     default_type  application/octet-stream;  
  19.   
  20.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  21.     #                  '$status $body_bytes_sent "$http_referer" '  
  22.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  23.   
  24.     #access_log  logs/access.log  main;  
  25.   
  26.     sendfile        on;  
  27.     #tcp_nopush     on;  
  28.   
  29.     #keepalive_timeout  0;  
  30.     keepalive_timeout  65;  
  31.   
  32.     #gzip  on;  
  33.   
  34.     server {  
  35.         #监听的端口号,配置这里访问的时候浏览器里可以访问http://localhost:1000/zheng-cms-web/测试是否能看到页面内容(没有直接访问http://localhost:1000,因为这个路径zheng-ui下没有index.html之类的文件,会出现访问错误提示,不好作为判定是否nginx启动配置成功的标志)  
  36.         listen       1000;  
  37.         server_name  localhost;  
  38.   
  39.         #charset koi8-r;  
  40.   
  41.         #access_log  logs/host.access.log  main;  
  42.   
  43.         location / {  
  44.         #root后面内容需要修改为本机的zheng-ui项目的绝对路径位置  
  45.             root   F:/GitHub/zheng/zheng-ui/;  
  46.             index  index.html index.htm;  
  47.             add_header Access-Control-Allow-Origin *;  
  48.         }  
  49.   
  50.         #error_page  404              /404.html;  
  51.   
  52.         # redirect server error pages to the static page /50x.html  
  53.         #  
  54.         error_page   500 502 503 504  /50x.html;  
  55.         location = /50x.html {  
  56.             root   html;  
  57.         }  
  58.   
  59.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
  60.         #  
  61.         #location ~ \.php$ {  
  62.         #    proxy_pass   http://127.0.0.1;  
  63.         #}  
  64.   
  65.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  66.         #  
  67.         #location ~ \.php$ {  
  68.         #    root           html;  
  69.         #    fastcgi_pass   127.0.0.1:9000;  
  70.         #    fastcgi_index  index.php;  
  71.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  72.         #    include        fastcgi_params;  
  73.         #}  
  74.   
  75.         # deny access to .htaccess files, if Apache's document root  
  76.         # concurs with nginx's one  
  77.         #  
  78.         #location ~ /\.ht {  
  79.         #    deny  all;  
  80.         #}  
  81.     }  
  82.   
  83.   
  84.     # another virtual host using mix of IP-, name-, and port-based configuration  
  85.     #  
  86.     #server {  
  87.     #    listen       8000;  
  88.     #    listen       somename:8080;  
  89.     #    server_name  somename  alias  another.alias;  
  90.   
  91.     #    location / {  
  92.     #        root   html;  
  93.     #        index  index.html index.htm;  
  94.     #    }  
  95.     #}  
  96.   
  97.   
  98.     # HTTPS server  
  99.     #  
  100.     #server {  
  101.     #    listen       443 ssl;  
  102.     #    server_name  localhost;  
  103.   
  104.     #    ssl_certificate      cert.pem;  
  105.     #    ssl_certificate_key  cert.key;  
  106.   
  107.     #    ssl_session_cache    shared:SSL:1m;  
  108.     #    ssl_session_timeout  5m;  
  109.   
  110.     #    ssl_ciphers  HIGH:!aNULL:!MD5;  
  111.     #    ssl_prefer_server_ciphers  on;  
  112.   
  113.     #    location / {  
  114.     #        root   html;  
  115.     #        index  index.html index.htm;  
  116.     #    }  
  117.     #}  
  118.   
  119. }  

然后在CMD下执行nginx.exe


或者可以在该目录下新建一个nginx.bat文件内容如下:

[html] view plain copy
  1. @echo off  
  2. rem zheng-tools  
  3. rem author: shuzheng http://www.zhangshuzheng.cn  
  4. rem GitHub: https://github.com/shuzheng  
  5. rem OsChina: http://git.oschina.net/shuzheng/zheng  
  6.   
  7. echo ==================begin========================  
  8.   
  9. cls   
  10. SET NGINX_PATH=D:  
  11. SET NGINX_DIR=D:\自己的nginx安装路径\nginx-1.11.4\   
  12. color 0a   
  13. TITLE zheng-tools Power By shuzheng (http://www.zhangshuzheng.cn)  
  14.   
  15. CLS   
  16.   
  17. ECHO.   
  18. ECHO.    ********************************************************************  
  19. ECHO.    *                                                                  *  
  20. ECHO.    *                                                                  *  
  21. ECHO.    *   zheng-tools Power By shuzheng (http://www.zhangshuzheng.cn)    *  
  22. ECHO.    *                                                                  *  
  23. ECHO.    *                                                                  *  
  24. ECHO.    ********************************************************************  
  25. ECHO.   
  26.   
  27. :MENU   
  28.   
  29. ECHO.---------------------------- nginx 进程列表 --------------------------------  
  30. tasklist|findstr /i "nginx.exe"  
  31. if ERRORLEVEL 1 (echo nginx未启动) else (echo nginx已启动)  
  32. ECHO.----------------------------------------------------------------------------  
  33.   
  34.   
  35. ECHO.   
  36.     ECHO.  [1] 启动Nginx    
  37.     ECHO.  [2] 关闭Nginx    
  38.     ECHO.  [3] 重启Nginx    
  39.     ECHO.  [4] 退 出   
  40. ECHO.   
  41.   
  42. ECHO.请输入选择项目的序号:  
  43. set /p ID=  
  44.     IF "%id%"=="1" GOTO start   
  45.     IF "%id%"=="2" GOTO stop   
  46.     IF "%id%"=="3" GOTO restart   
  47.     IF "%id%"=="4" EXIT  
  48. PAUSE   
  49.   
  50. :start   
  51.     call :startNginx  
  52.     ECHO.============================================================================  
  53.     ECHO.   
  54.     ECHO.   
  55.     GOTO MENU  
  56.   
  57. :stop   
  58.     call :shutdownNginx  
  59.     ECHO.============================================================================  
  60.     ECHO.   
  61.     ECHO.   
  62.     GOTO MENU  
  63. :restart   
  64.     call :shutdownNginx  
  65.     call :startNginx  
  66.     ECHO.============================================================================  
  67.     ECHO.   
  68.     ECHO.   
  69.     GOTO MENU  
  70.   
  71. :shutdownNginx  
  72.     ECHO.   
  73.     ECHO.关闭Nginx......   
  74.     taskkill /F /IM nginx.exe > nul  
  75.     ECHO.OK,关闭所有nginx 进程  
  76.     goto :eof  
  77.   
  78. :startNginx  
  79.     ECHO.   
  80.     ECHO.启动Nginx......   
  81.     IF NOT EXIST "%NGINX_DIR%nginx.exe" ECHO "%NGINX_DIR%nginx.exe"不存在   
  82.   
  83.     %NGINX_PATH%   
  84.   
  85.     cd "%NGINX_DIR%"   
  86.   
  87.     IF EXIST "%NGINX_DIR%nginx.exe" (  
  88.         echo "start '' nginx.exe"  
  89.         start "" nginx.exe  
  90.     )  
  91.     ECHO.OK  
  92.     goto :eof  

运行效果如下:



4、启动Tomcat


在tomcat中部署dubbo应用。这里用的是2.5.4,可从这下载:http://download.csdn.net/download/u011781521/10197867 下载之后解压,删除Tomcat目录下的ROOT目录,然后复制dubbo中的ROOT到该目录下:




然后修改下tomcat的默认端口以防止和下面的jetty冲突,最后在D:\zheng_start\apache-tomcat-8.0.45\bin目录下执行startup.bat启动tomcat,成功之后输出如下:




访问tomcat的dubbo后台: localhost:8089 用户名与密码都是root




5、启动Service


首先启动 zheng-upms-rpc-service(直接运行src目录下的ZhengUpmsRpcServiceApplication#main方法启动)


启动成功之后如下:



6、启动Web服务


打开Maven视图



debug运行jetty。然后按需启动对应子系统xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)

然后在dubbo管控台上就会有一些服务已经注册了




7、访问页面


然后访问 http://upms.zhangshuzheng.cn:1111/,子系统菜单已经配置到zheng-upms权限中,不用直接访问子系统,默认帐号密码:admin/123456




B、zheng-cms启动


zheng-cms-admin:启动ActiveMQ-启动 => 启动zheng-rpc-service => 启动zheng-cms-admin






zheng-cms-web:启动nginx代理zheng-ui静态资源,然后访问: http://upms.zhangshuzheng.cn:1111




切换到CMS系统




此时访问CMS首页: http://cms.zhangshuzheng.cn:2224/



展开阅读全文

没有更多推荐了,返回首页