1. 程式人生 > >【經典】zheng專案搭建

【經典】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/

 

轉載來自:http://blog.csdn.net/u011781521/article/details/79012311