docker简易环境搭建实战篇:以⼈⼈⽹开源项⽬(renren-fast)搭建分布式部署
(后端篇)
写在前⾯:注:阅读本⽂前,请先阅读docker标签的docker简易系列的⽂章。
后端最终实现的架构图:
第⼀步简单了解⼈⼈开源项⽬renren-fast
⼀个轻量级的Java快速开发平台,能快速开发项⽬并交付【接私活利器】
完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
实现前后端分离,通过token进⾏数据交互
实现管理员列表、⾓⾊管理、菜单管理、定时任务、参数管理、系统⽇志、⽂件上传(云存储)等功能
renren-fast是⼀个轻量级的,前后端分离的Java快速开发平台,能快速开发项⽬并交付
具有如下特点:
友好的代码结构及注释,便于阅读及⼆次开发
实现前后端分离,通过token进⾏数据交互,前端再也不⽤关注后端技术
灵活的权限控制,可控制到页⾯或按钮,满⾜绝⼤部分的权限需求
页⾯交互使⽤Vue2.x,极⼤的提⾼了开发效率
完善的代码⽣成机制,可在线⽣成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务
引⼊quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及⽇志查看等功能
引⼊API模板,根据token作为登录令牌,极⼤的⽅便了APP接⼝开发
引⼊Hibernate Validator校验框架,轻松实现后端校验
引⼊云存储服务,已⽀持:七⽜云、阿⾥云、腾讯云等
引⼊swagger⽂档⽀持,⽅便编写API接⼝⽂档
项⽬结构
renren-fast
├─db 项⽬SQL语句
├─common 公共模块
│ ├─aspect 系统⽇志
│ ├─exception 异常处理
│ ├─validator 后台校验
│ └─xss XSS过滤
├─config 配置信息
├─modules 功能模块
│ ├─app API接⼝模块(APP调⽤)
│ ├─job 定时任务模块
│ ├─oss ⽂件服务模块
│ └─sys 权限模块
├─RenrenApplication 项⽬启动类
├──resources
│ ├─mapper SQL对应的XML⽂件
│ └─static 静态资源
第⼆步将数据导⼊本地数据库中
在docker的pxc集任意节点连接上数据库,创建 renren_fast 的数据库,并导⼊在renren-fast项⽬的db⽬录中的mysql.sql⽂件,点击开始。如图所⽰:
第三步修改项⽬中的数据库连接配置,redis集配置
1.修改数据连接,读者根据⾃⾝的环境进⾏配置。如图所⽰:
2.修改redis集配置
第四步通过maven打包项⽬(jar包⽅式),并上传到服务器(centos)上进⼊renren-fast⽬录执⾏如下maven命令:
mvn clean install -st.skip=true
注:clean | 表⽰清除之前的jar⽂件
install | 表⽰打包到本地
-st.skip=true | 表⽰跳过测试代码
执⾏成功后,⽣成jar包会在 target ⽂件下,接下在centos中创建docker数据卷,通过xfp6⼯具将⽂件拷贝到该数据卷下:
[root@localhost keepalived]# docker volume create j1
j1
[root@localhost keepalived]# docker inspect j1
[
{
"CreatedAt":"2018-07-05T04:15:16+08:00",
"Driver":"local",
"Labels":{},
"Mountpoint":"/var/lib/docker/volumes/j1/_data",
"Name":"j1",
"Options":{},
"Scope":"local"
}
]
[root@localhost keepalived]# cd /var/lib/docker/volumes/j1/_data
[root@localhost _data]# ls
renren-fast.jar
接下来重复第四步骤 创建j2,j3数据卷,以及打包对应项⽬jar包,并上传对应的服务器docker卷上。
注:由于要项⽬要使⽤pxc集,以及rendis集将⽤到net1,net2 ⽹段,所以java容器将会使⽤宿主机的ip和端⼝,故需修改项⽬的tomcat端⼝,以免造成端⼝冲突:
第五步运⾏项⽬
运⾏容器,进⼊容器,以及后台运⾏项⽬
[root@localhost _data]# docker run -it -d --name renren1 -v j1:/home/soft --net=host java
93dfb84749cb6b61d1a62353416ccb858249c55e697a04573d247d1e4a8dee69
[root@localhost _data]# docker exec -it  renren1 bash
root@localhost:/# nohup java -jar /home/soft/renren-fast.jar &
[1] 13
root@localhost:/# nohup: ignoring input and appending output to ‘nohup.out’
root@localhost:/#exit
[root@localhost _data]# docker run -it -d --name renren2 -v j2:/home/soft --net=host java
4529571967b571b02ca8682e7d40d745725d256c46aee89189a5a3e2b97c7f93
[root@localhost _data]# docker exec -it renren2 bash
root@localhost:/# nohup java -jar /home/soft/renren-fast.jar  &
[1] 13
root@localhost:/# nohup: ignoring input and appending output to ‘nohup.out’
root@localhost:/# exit
exit
[root@localhost _data]# docker run -it -d --name renren3 -v j3:/home/soft --net=host java
645d2f9790aa8ec76188dd14a2dd761a3f9973dc2ec5392c45f4f8b4feeebeee
[root@localhost _data]# docker exec -it renren3 bash
root@localhost:/# nohup java -jar /home/soft/renren-fast.jar &
第六步实现nginx负载均衡
在centos窗⼝中,执⾏如下命令,拉取nginx镜像:
docker  pull nginx
配置f⽂件:
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
worker_connections  1024;
}
http {
include      /etc/pes;
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  /var/log/nginx/access.log  main;
sendfile        on;
#tcp_nopush    on;
keepalive_timeout  65;
#gzip  on;
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;maven打包本地jar包
client_max_body_size    10m;
client_body_buffer_size  128k;
proxy_connect_timeout  5s;
proxy_send_timeout      5s;
proxy_read_timeout      5s;
proxy_buffer_size        4k;
proxy_buffers          4 32k;
proxy_busy_buffers_size  64k;
proxy_temp_file_write_size 64k;
upstream tomcat {
server 192.168.9.144:8084;
server 192.168.9.144:8085;
server 192.168.9.144:8086;
}
server {
listen      8087;
server_name  192.168.9.144;
location / {
proxy_pass  tomcat;
index  index.html index.htm;
}
}
}
注:upstream tomcat | tomcat 可以⾃⾏更改, tomcat名字与proxy_pass 下⽅的tomcat名字⼀致即可server | 将192.168.9.144:8087的请求转发的地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。