部署
duic 部署仅依赖于 mongodb,不依赖其它任何中间件即可支持分布式集群部署,同时 duic 采用 spring-boot+ spring-webflux 开发,内置使用 netty 作为 HTTP Server,所以 duic 的部署非常的简单。
前提
- java >= 1.8
- mongodb >= 2.6
考虑到实际应用中我们一般都使用 linux 作为服务器,该文档目前只针对 linux 系统部署。
启动配置
启动配置文件默认采用 yaml 格式,你可以根据自己的喜好使用其它配置 spring-boot 支持的文件格式。
** 配置文件路径
- 当前目录的
/config子目录 - 当前目录
- CLASSPATH
/config包目录 - CLASSPATH 根目录
该列表按优先顺序排列(在列表中较高的位置定义的属性会覆盖在较低位置定义的属性)。
application.yaml
1. server:
2. port: 7777
4. spring:
5. reactor:
6. stacktrace-mode:
7. enabled: true
9. data:
10. mongodb:
11. uri: mongodb://127.0.0.1:27017/duic
13. duic:
14. root-email: kevinz@weghst.com
15. root-password: 123456
16. jwt:
17. secret: U2FsdGVkX1/jO0KlWumac4yDM8rOgWPkaV0KrSHDynWOP6n8FMJB9uSc8EW/qM+VagrMBAXGpyw=
18. expires-in: 7200
19. app:
20. watch:
21. updated:
22. fixed-delay: 5000
23. deleted:
24. fixed-delay: 600000
一般在部署时只需要将 spring.data.mongodb.uri 配置参数修改为指定的 mongodb 连接地址,即可正常启动 duic。
参数详细解释
server.port服务端口(默认为7777)spring.reactor.stacktrace-mode.enabled启用 reactor 调用堆栈(默认为true),设置为false可提高性能,但是不建议修改该配置项。更详细的解释请参考 reactor 官方文档 Activating Debug Modespring.data.mongodb.urimongodb 数据库连接 uriduic应用程序基础配置root-emailROOT 用户邮箱,如果用户不存在则会直接创建他root-passwordROOT 用户密码,初始创建时默认设置的密码jwt配置管理控制台登录安全信息,JWT 使用HmacSHA256算法生成secretJWT 签名字符串expires-inJWT 过期时间(单位:秒)
app.watch.updated.fixed-delay监控数据库配置更新时间间隔周期默认为 5 秒扫描一次数据库,将更新的配置加载至内存中(单位:毫秒)app.watch.deleted.fixed-delay监控数据库配置删除时间音阶周期默认为 10 分钟挚友一次数据库,将删除的配置从内存中移除释放内存(单位:毫秒)
更详细的解释请参考 spring-boot 官方文档 Application Property Files
传统 java 方式部署
- 确认 java 环境至少是 1.8 或以上的版本
1. $ java -version
3. java version "1.8.0_151"
4. Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
5. Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
- 确认 mongo 环境至少是 2.6 或以上的版本并且服务已经启动
1. $ mongo -version
3. MongoDB shell version: 2.6.3
- 创建 duic 目录
1. $ mkdir /opt/duic
- 进入 duic 目录
1. $ cd /opt/duic
- 在 GitHub Releases 页面获取 duic-[version].jar 并放置在
/opt/duic目录中
1. $ wget https://github.com/zhudyos/duic/releases/download/1.4.1/duic-1.4.1.jar -O duic.jar
Tip
在部署时需要将 url 中的版本替换为你需要的版本号,最好从 GitHub Releases 找到合适的版本后复制下载地址
- 创建配置文件目录
1. $ mkdir config
Tip
确保当前目录是在 /opt/duic 目录中
- 进入配置文件目录
1. $ cd config
- 创建启动配置文件
1. $ touch application.yml
- 将
spring.data.mongodb.uri写入config/application.yml配置文件
1. spring:
2. data:
3. mongodb:
4. uri: mongodb://127.0.0.1:27017/duic
Tip
确保 spring.data.mongodb.uri 正确可连接至数据库
- 启动 duic
1. $ java -Dspring.profiles.active=prod -jar duic.jar
Tip
不增加 -Dspring.profiles.active=prod 参数则以 debug 方式启动
在控制台看见如下日志输出即启动成功
1. ______ _ ______
2. |_ _ `. (_) .' ___ |
3. | | `. \ __ _ __ / .' \_|
4. | | | |[ | | | [ || |
5. _| |_.' / | \_/ |, | |\ `.___.'\
6. |______.' '.__.'_/[___]`.____ .'
7. :: duic :: (v1.5.0-beta)
9. 2018-04-17 13:33:34,495 INFO i.z.d.server.Application$Companion - Starting Application.Companion v1.5.0-beta on bd29aece4869 with PID 5 (/app/duic.jar started by root in /app)
10. 2018-04-17 13:33:34,516 INFO i.z.d.server.Application$Companion - The following profiles are active: prod
11. 2018-04-17 13:33:42,835 INFO r.i.netty.tcp.BlockingNettyContext - Started HttpServer on /0.0.0.0:7777
12. 2018-04-17 13:33:42,839 INFO o.s.b.w.e.netty.NettyWebServer - Netty started on port(s): 7777
13. 2018-04-17 13:33:42,845 INFO i.z.d.server.Application$Companion - Started Application.Companion in 10.39 seconds (JVM running for 13.063)
- 测试
1. $ curl http://localhost:7777/index.html
docker 部署
镜像已经同步至 docker 官方镜像仓库 <https://hub.docker.com/r/zhudyos/duic>。
- 拉取镜像
1. $ docker pull zhudyos/duic
- 确认 mongo 环境至少是 2.6 或以上的版本并且服务已经启动
1. $ mongo -version
3. MongoDB shell version: 2.6.3
- 创建配置文件目录
1. $ mkdir config
- 进入配置文件目录
1. $ cd config
- 创建启动配置文件
1. $ touch application.yml
- 将
spring.data.mongodb.uri写入config/application.yml配置文件
1. spring:
2. data:
3. mongodb:
4. uri: mongodb://127.0.0.1:27017/duic
Tip
确保 spring.data.mongodb.uri 正确可连接至数据库
- 启动镜像
1. $ docker run -d -p 7777:7777 -v $(pwd)/config:/app/config zhudyos/duic
Tip
将 application.yml 配置文件所在目录挂载到容器的 /app/config 目录中
- 测试
1. $ curl http://localhost:7777/index.html
docker-compose 部署
<https://github.com/zhudyos/duic-docker-compose>
原文: <https://github.com/zhudyos/duic/wiki/deployment>
