深入解析Zheng框架:搭建与部署实战指南
深入解析Zheng框架:搭建与部署实战指南
dong4j前提条件
群里面有一篇 zheng- 环境搭建及系统部署文档 20170213(三版).docx
, 里面详细讲解了各个依赖软件的安装和配置,
所以这里不会再讲依赖的搭建过程.
假设你已经将所有的依赖环境搭建完毕.
我的环境
名称 | 版本 |
---|---|
系统 | MacOS 10.12.6 |
IDE | Intellij IDEA 2017.2.3 |
JDK | 1.8 |
Maven | 3.3.9 |
Dubbo | 2.5.3 |
Zookeepe | 3.4.10 |
Nginx | 1.12.1 |
ActiveMQ | 5.15.0 |
MySQL | 5.7.16 |
Redis | 3.2.3 |
Dubbo-admin | |
Dubbo-monitor |
用到的工具
- IDEA
- LICEcap –> gif 制作
- MWeb –> Markdown 编辑器
- iTerm –> 替代 Terminal 的工具
环境搭建
我记得去年还是前年, 用 Intellij IDEA 的人已经超过了 Eclipse, 如果你还在用 Eclipse, 我想安利你马上转到 IDEA 来, 不是一般的好用, 我已经安利了不下
50 人 使用 IDEA 了.
之后的系列文章, 会穿插一些 IDEA 的教程, 在实践中学习, 效果杠杠的.
这里强烈推荐一个专门写 IDEA 的教程, 希望能帮助你一些
https://github.com/judasn/IntelliJ-IDEA-Tutorial.git
不要怕不会用, 等你学会了以后, 效率是别人的几倍
clone 项目, 使用 Intellji IDEA 导入这些就不说了
这步完成的样子是这样的
项目结构和命名看着非常舒服
导入 SQL
找到 project-datamodel --> zheng.sql
, 双击打开
如果是第一次打开这个项目, 你肯定会看到这个
设置数据库
设置之前你得使用命令或者 navicat 创建一个叫 zheng
的数据库
问题 1: [1067] Invalid default value for ‘last_login_time’
导入 SQL 报错
首先复习下 MySQl 中 datetime, timestamp, date 的区别.
日期类型 | 存储空间 | 日志格式 | 日期范围 |
---|---|---|---|
datetime | 8 bytes | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
timestamp | 4 bytes | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59 |
date | 3 bytes | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 |
这里用 timestamp
- 占用空间小
- 在进行
insert
,update
数据时,timestamp
列会自动以当前时间(CURRENT_TIMESTAMP)填充 / 更新.
但是到 2038-00-00 00:00:00 时, 系统就崩溃了, 想想就刺激, 😂
然而并不是这个问题
这种报错多半是你 MySQl 升级到 5.7 而引起的默认值不兼容的问题.
想到可能是类型的默认值被限制了,查看 sql_mode.
1 | show variables like 'sql_mode'; |
sql_mode STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
果然 NO_ZERO_IN_DATE, NO_ZERO_DATE 这两个参数限制时间不能为 0
1 | # 临时解决 |
1 | # 永久方案 |
风骚的操作, 完美的表名 😁
修改配置文件
密码值使用了 AES 加密,使用 com.zheng.common.util.AESUtil
工具类修改这些值
这么多文件怎么找?
IDEA 的强大之处 之一 就在于它强大的搜索功能. 第一次打开项目时, IDEA 会花点时间创建所有除了 Exclued Folders
的文件的索引.
不管这些, 直接使用 双击 shift
来全局查找.
胡悠我, 打开的全是占位符的配置文件, 还要去找主配置才行, 然后一个一个的改? you are so young so simple
全局替换, 秒秒钟的事
其他的照着来
启动依赖
我启动这些依赖贼简单, 不信你看
start, start, start ….
我记得以前用 windows 的时候, 启动这些依赖很恼火, 一个一个启动, 后来写了个批处理, 一建启动, 在虚拟机上, 懒的开了…..
配置 nginx
这里先说一个 windows 的坑
nginx.conf 配置文件默认编码是 utf-8, 在 windows 上使用记事本打开 utf-8 编码的文件, 它会在文件前面加上一个 BOM
😂, 不知道你们有没有踩过这个坑….
也是这个坑, 又踩了一次.
是项目上一个 Excel 导出的问题
poi 导出大量数据, 内存溢出, 所以到数据量很大时, 就用导出文本文件的方式
1 |
|
如果 windows 的用户使用 Excel 打开就会是乱码, 原因就是上面说到的
改为:
1 | @Test |
为巨硬感到委屈, 明明是它先,什么都是它先的,VC6 也好,BOM 也罢… 为什么不按照它的来了, 搞得它现在想改都不行了…. 😂
所以在 windows 下, 不要用 记事本, 用 sublime text 或者 vscode.
扯远了…………. 😅
2 个 server 配置, 没有看到 zheng-config 模块, 所有这里只配置一个反向代理
1 | #user nobody; |
启动服务
启动之前 先 install
一下
- zheng-upms-rpc-service
- zheng-cms-rpc-service
- zheng-upms-server
- zheng-cms-admin
项目部属
😂
太晚了, 后天要早去去大理拍婚纱照, 留着后面写
只是照着项目的 readme.md 把环境搭好了, 能成功运行了, 里面的代码还没看
像这些环境依赖, 大家可以使用 Vagrant 来搭建, 以后换电脑或者给别的同事搭建环境, 丢一个文件给他就 ok 了.
或者使用 docker, 说得我好像会一样…. 😂, 还没开始看呢 哈哈, 以后大家一起学习
感谢 zheng 哥给我们开源这么好的学习框架
如果我没叫错的话, 应该叫 zheng 哥吧…
为什么 0 不代表女? 这样好记啊
向 Facebook 学习, 增加 56 种性别, 那才好玩 😂😂😂